mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
43db2a4aa5
The ordering of actions matters. Normal file system semantics is that files have to be removed before a directory with the same name can be created. Before the first ordering key was to have 'r' and 'f' actions come first, secondary key was the filename. Because of future refactorings we want to consistently have all action types (with a sensible priority) as separate first keys. Grouped by action type, we sort by filename. Not processing in strict filename order could give worse performance, especially on spinning disks. That is however primarily an issue in the cases where "all" actions are of the same kind and will be grouped together anyway.
242 lines
5.6 KiB
Perl
242 lines
5.6 KiB
Perl
$ HGMERGE=true; export HGMERGE
|
|
|
|
$ hg init r1
|
|
$ cd r1
|
|
$ echo a > a
|
|
$ hg addremove
|
|
adding a
|
|
$ hg commit -m "1"
|
|
|
|
$ hg clone . ../r2
|
|
updating to branch default
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cd ../r2
|
|
$ hg up
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ echo abc > a
|
|
$ hg diff --nodates
|
|
diff -r c19d34741b0a a
|
|
--- a/a
|
|
+++ b/a
|
|
@@ -1,1 +1,1 @@
|
|
-a
|
|
+abc
|
|
|
|
$ cd ../r1
|
|
$ echo b > b
|
|
$ echo a2 > a
|
|
$ hg addremove
|
|
adding b
|
|
$ hg commit -m "2"
|
|
|
|
$ cd ../r2
|
|
$ hg -q pull ../r1
|
|
$ hg status
|
|
M a
|
|
$ hg parents
|
|
changeset: 0:c19d34741b0a
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: 1
|
|
|
|
$ hg --debug up
|
|
searching for copies back to rev 1
|
|
unmatched files in other:
|
|
b
|
|
resolving manifests
|
|
branchmerge: False, force: False, partial: False
|
|
ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
|
|
preserving a for resolve of a
|
|
b: remote created -> g
|
|
getting b
|
|
updating: b 1/2 files (50.00%)
|
|
a: versions differ -> m
|
|
updating: a 2/2 files (100.00%)
|
|
picked tool 'true' for a (binary False symlink False)
|
|
merging a
|
|
my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
|
|
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
$ hg parents
|
|
changeset: 1:1e71731e6fbb
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: 2
|
|
|
|
$ hg --debug up 0
|
|
resolving manifests
|
|
branchmerge: False, force: False, partial: False
|
|
ancestor: 1e71731e6fbb, local: 1e71731e6fbb+, remote: c19d34741b0a
|
|
preserving a for resolve of a
|
|
b: other deleted -> r
|
|
removing b
|
|
updating: b 1/2 files (50.00%)
|
|
a: versions differ -> m
|
|
updating: a 2/2 files (100.00%)
|
|
picked tool 'true' for a (binary False symlink False)
|
|
merging a
|
|
my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
|
|
0 files updated, 1 files merged, 1 files removed, 0 files unresolved
|
|
$ hg parents
|
|
changeset: 0:c19d34741b0a
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: 1
|
|
|
|
$ hg --debug merge
|
|
abort: nothing to merge
|
|
(use 'hg update' instead)
|
|
[255]
|
|
$ hg parents
|
|
changeset: 0:c19d34741b0a
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: 1
|
|
|
|
$ hg --debug up
|
|
searching for copies back to rev 1
|
|
unmatched files in other:
|
|
b
|
|
resolving manifests
|
|
branchmerge: False, force: False, partial: False
|
|
ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
|
|
preserving a for resolve of a
|
|
b: remote created -> g
|
|
getting b
|
|
updating: b 1/2 files (50.00%)
|
|
a: versions differ -> m
|
|
updating: a 2/2 files (100.00%)
|
|
picked tool 'true' for a (binary False symlink False)
|
|
merging a
|
|
my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
|
|
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
|
|
$ hg parents
|
|
changeset: 1:1e71731e6fbb
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: 2
|
|
|
|
$ hg -v history
|
|
changeset: 1:1e71731e6fbb
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
files: a b
|
|
description:
|
|
2
|
|
|
|
|
|
changeset: 0:c19d34741b0a
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
files: a
|
|
description:
|
|
1
|
|
|
|
|
|
$ hg diff --nodates
|
|
diff -r 1e71731e6fbb a
|
|
--- a/a
|
|
+++ b/a
|
|
@@ -1,1 +1,1 @@
|
|
-a2
|
|
+abc
|
|
|
|
|
|
create a second head
|
|
|
|
$ cd ../r1
|
|
$ hg up 0
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ echo b2 > b
|
|
$ echo a3 > a
|
|
$ hg addremove
|
|
adding b
|
|
$ hg commit -m "3"
|
|
created new head
|
|
|
|
$ cd ../r2
|
|
$ hg -q pull ../r1
|
|
$ hg status
|
|
M a
|
|
$ hg parents
|
|
changeset: 1:1e71731e6fbb
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: 2
|
|
|
|
$ hg --debug up
|
|
abort: uncommitted changes
|
|
(commit and merge, or update --clean to discard changes)
|
|
[255]
|
|
$ hg --debug merge
|
|
abort: uncommitted changes
|
|
(use 'hg status' to list changes)
|
|
[255]
|
|
$ hg --debug merge -f
|
|
searching for copies back to rev 1
|
|
unmatched files new in both:
|
|
b
|
|
resolving manifests
|
|
branchmerge: True, force: True, partial: False
|
|
ancestor: c19d34741b0a, local: 1e71731e6fbb+, remote: 83c51d0caff4
|
|
preserving a for resolve of a
|
|
preserving b for resolve of b
|
|
a: versions differ -> m
|
|
updating: a 1/2 files (50.00%)
|
|
picked tool 'true' for a (binary False symlink False)
|
|
merging a
|
|
my a@1e71731e6fbb+ other a@83c51d0caff4 ancestor a@c19d34741b0a
|
|
b: versions differ -> m
|
|
updating: b 2/2 files (100.00%)
|
|
picked tool 'true' for b (binary False symlink False)
|
|
merging b
|
|
my b@1e71731e6fbb+ other b@83c51d0caff4 ancestor b@000000000000
|
|
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
|
|
(branch merge, don't forget to commit)
|
|
$ hg parents
|
|
changeset: 1:1e71731e6fbb
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: 2
|
|
|
|
changeset: 2:83c51d0caff4
|
|
tag: tip
|
|
parent: 0:c19d34741b0a
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: 3
|
|
|
|
$ hg diff --nodates
|
|
diff -r 1e71731e6fbb a
|
|
--- a/a
|
|
+++ b/a
|
|
@@ -1,1 +1,1 @@
|
|
-a2
|
|
+abc
|
|
|
|
|
|
test a local add
|
|
|
|
$ cd ..
|
|
$ hg init a
|
|
$ hg init b
|
|
$ echo a > a/a
|
|
$ echo a > b/a
|
|
$ hg --cwd a commit -A -m a
|
|
adding a
|
|
$ cd b
|
|
$ hg add a
|
|
$ hg pull -u ../a
|
|
pulling from ../a
|
|
requesting all changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg st
|
|
|
|
$ cd ..
|