Mercurial > hg
annotate tests/test-rename-dir-merge.t @ 27372:a79cba6cb206
help: add documentation for changegroup formats
There is no formal location for spec-like technical/internal docs. The
repository makes sense as such a location because spec-like
documentation should be reviewed (ruling out a wiki). mpm has also
stated that he would like this documentation to be part of the
built-in help system. So, we establish an "internals" sub-directory
to hold this class of documentation.
The format of changegroups does not appear to be documented anywhere,
even in source code. It therefore seemed like an appropriate first thing
to document.
This patch adds low-level documentation of versions 1 and 2 of the
changegroup foromat. It currently only describes the raw data format.
There is probably room to write higher-level documentation on strategies
for producing and consuming the data. We'll leave that for another day.
The added file is not yet accessible via `hg help` nor via hgweb.
Support for this will follow in subsequent patches.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 25 Oct 2015 00:19:45 +0100 |
parents | ef1eb6df7071 |
children | 602add6ad9e5 |
rev | line source |
---|---|
13956
ffb5c09ba822
tests: remove redundant mkdir
Martin Geisler <mg@lazybytes.net>
parents:
12114
diff
changeset
|
1 $ hg init t |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
2 $ cd t |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
3 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
4 $ mkdir a |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
5 $ echo foo > a/a |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
6 $ echo bar > a/b |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
7 $ hg ci -Am "0" |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
8 adding a/a |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
9 adding a/b |
3733 | 10 |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
11 $ hg co -C 0 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
12 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
13 $ hg mv a b |
15447
9910f60a37ee
tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
14 moving a/a to b/a (glob) |
9910f60a37ee
tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
15 moving a/b to b/b (glob) |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
16 $ hg ci -m "1 mv a/ b/" |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
17 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
18 $ hg co -C 0 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
19 2 files updated, 0 files merged, 2 files removed, 0 files unresolved |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
20 $ echo baz > a/c |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
21 $ echo quux > a/d |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
22 $ hg add a/c |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
23 $ hg ci -m "2 add a/c" |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
24 created new head |
3733 | 25 |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
26 $ hg merge --debug 1 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
27 searching for copies back to rev 1 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
28 unmatched files in local: |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
29 a/c |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
30 unmatched files in other: |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
31 b/a |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
32 b/b |
16795
e9ae770eff1c
merge: show renamed on one and deleted on the other side in debug output
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16094
diff
changeset
|
33 all copies found (* = to merge, ! = divergent, % = renamed and deleted): |
18135
a6fe1b9cc68f
copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents:
16913
diff
changeset
|
34 src: 'a/a' -> dst: 'b/a' |
a6fe1b9cc68f
copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents:
16913
diff
changeset
|
35 src: 'a/b' -> dst: 'b/b' |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
36 checking for directory renames |
18135
a6fe1b9cc68f
copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents:
16913
diff
changeset
|
37 discovered dir src: 'a/' -> dst: 'b/' |
a6fe1b9cc68f
copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents:
16913
diff
changeset
|
38 pending file src: 'a/c' -> dst: 'b/c' |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
39 resolving manifests |
18605
bcf29565d89f
manifestmerge: pass in branchmerge and force separately
Siddharth Agarwal <sid0@fb.com>
parents:
18360
diff
changeset
|
40 branchmerge: True, force: False, partial: False |
15625
efdcce3fd2d5
merge: make debug output easier to read
Martin Geisler <mg@aragost.com>
parents:
15447
diff
changeset
|
41 ancestor: f9b20c0d4c51, local: ce36d17b18fb+, remote: 397f8b00a740 |
18360
760c0d67ce5e
merge: process files in sorted order
Mads Kiilerich <mads@kiilerich.com>
parents:
18135
diff
changeset
|
42 a/a: other deleted -> r |
21391
cb15835456cb
merge: change debug logging - test output changes but no real changes
Mads Kiilerich <madski@unity3d.com>
parents:
20944
diff
changeset
|
43 removing a/a |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
44 a/b: other deleted -> r |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
45 removing a/b |
21391
cb15835456cb
merge: change debug logging - test output changes but no real changes
Mads Kiilerich <madski@unity3d.com>
parents:
20944
diff
changeset
|
46 b/a: remote created -> g |
18631
e2dc5397bc82
tests: update test output (will be folded into parent)
Bryan O'Sullivan <bryano@fb.com>
parents:
18605
diff
changeset
|
47 getting b/a |
21391
cb15835456cb
merge: change debug logging - test output changes but no real changes
Mads Kiilerich <madski@unity3d.com>
parents:
20944
diff
changeset
|
48 b/b: remote created -> g |
18631
e2dc5397bc82
tests: update test output (will be folded into parent)
Bryan O'Sullivan <bryano@fb.com>
parents:
18605
diff
changeset
|
49 getting b/b |
21391
cb15835456cb
merge: change debug logging - test output changes but no real changes
Mads Kiilerich <madski@unity3d.com>
parents:
20944
diff
changeset
|
50 b/c: remote directory rename - move from a/c -> dm |
19133
101b80eb7364
tests: check path separator in moves
Brendan Cully <brendan@kublai.com>
parents:
19095
diff
changeset
|
51 moving a/c to b/c (glob) |
16094
0776a6cababe
merge: don't use unknown()
Matt Mackall <mpm@selenic.com>
parents:
15625
diff
changeset
|
52 3 files updated, 0 files merged, 2 files removed, 0 files unresolved |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
53 (branch merge, don't forget to commit) |
3733 | 54 |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
55 $ echo a/* b/* |
16094
0776a6cababe
merge: don't use unknown()
Matt Mackall <mpm@selenic.com>
parents:
15625
diff
changeset
|
56 a/d b/a b/b b/c |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
57 $ hg st -C |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
58 M b/a |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
59 M b/b |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
60 A b/c |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
61 a/c |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
62 R a/a |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
63 R a/b |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
64 R a/c |
16094
0776a6cababe
merge: don't use unknown()
Matt Mackall <mpm@selenic.com>
parents:
15625
diff
changeset
|
65 ? a/d |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
66 $ hg ci -m "3 merge 2+1" |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
67 $ hg debugrename b/c |
15447
9910f60a37ee
tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
68 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 (glob) |
3733 | 69 |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
70 $ hg co -C 1 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
71 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
72 $ hg merge --debug 2 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
73 searching for copies back to rev 1 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
74 unmatched files in local: |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
75 b/a |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
76 b/b |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
77 unmatched files in other: |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
78 a/c |
16795
e9ae770eff1c
merge: show renamed on one and deleted on the other side in debug output
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16094
diff
changeset
|
79 all copies found (* = to merge, ! = divergent, % = renamed and deleted): |
18135
a6fe1b9cc68f
copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents:
16913
diff
changeset
|
80 src: 'a/a' -> dst: 'b/a' |
a6fe1b9cc68f
copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents:
16913
diff
changeset
|
81 src: 'a/b' -> dst: 'b/b' |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
82 checking for directory renames |
18135
a6fe1b9cc68f
copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents:
16913
diff
changeset
|
83 discovered dir src: 'a/' -> dst: 'b/' |
a6fe1b9cc68f
copies: make debug messages more sensible
Siddharth Agarwal <sid0@fb.com>
parents:
16913
diff
changeset
|
84 pending file src: 'a/c' -> dst: 'b/c' |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
85 resolving manifests |
18605
bcf29565d89f
manifestmerge: pass in branchmerge and force separately
Siddharth Agarwal <sid0@fb.com>
parents:
18360
diff
changeset
|
86 branchmerge: True, force: False, partial: False |
15625
efdcce3fd2d5
merge: make debug output easier to read
Martin Geisler <mg@aragost.com>
parents:
15447
diff
changeset
|
87 ancestor: f9b20c0d4c51, local: 397f8b00a740+, remote: ce36d17b18fb |
20944
5b8d5803d7b7
merge: keep destination filename as key in actions for merge with dir rename
Mads Kiilerich <madski@unity3d.com>
parents:
19133
diff
changeset
|
88 b/c: local directory rename - get from a/c -> dg |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
89 getting a/c to b/c |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
90 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
91 (branch merge, don't forget to commit) |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
92 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
93 $ echo a/* b/* |
16094
0776a6cababe
merge: don't use unknown()
Matt Mackall <mpm@selenic.com>
parents:
15625
diff
changeset
|
94 a/d b/a b/b b/c |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
95 $ hg st -C |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
96 A b/c |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
97 a/c |
16094
0776a6cababe
merge: don't use unknown()
Matt Mackall <mpm@selenic.com>
parents:
15625
diff
changeset
|
98 ? a/d |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
99 $ hg ci -m "4 merge 1+2" |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
100 created new head |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
101 $ hg debugrename b/c |
15447
9910f60a37ee
tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
102 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 (glob) |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
103 |
23444
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
104 Local directory rename with conflicting file added in remote source directory |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
105 and untracked in local target directory. |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
106 |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
107 $ hg co -qC 1 |
23464
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
108 $ echo target > b/c |
23444
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
109 $ hg merge 2 |
23653
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
110 b/c: untracked file differs |
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
111 abort: untracked files in working directory differ from files in requested revision |
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
112 [255] |
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
113 $ cat b/c |
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
114 target |
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
115 but it should succeed if the content matches |
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
116 $ hg cat -r 2 a/c > b/c |
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
117 $ hg merge 2 |
23444
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
118 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
119 (branch merge, don't forget to commit) |
23653
0297d8469350
merge: don't overwrite untracked file at directory rename target
Martin von Zweigbergk <martinvonz@google.com>
parents:
23476
diff
changeset
|
120 $ hg st -C |
23444
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
121 A b/c |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
122 a/c |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
123 ? a/d |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
124 |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
125 Local directory rename with conflicting file added in remote source directory |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
126 and committed in local target directory. |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
127 |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
128 $ hg co -qC 1 |
23464
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
129 $ echo target > b/c |
23444
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
130 $ hg add b/c |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
131 $ hg commit -qm 'new file in target directory' |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
132 $ hg merge 2 |
23476
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
133 merging b/c and a/c to b/c |
26614
ef1eb6df7071
simplemerge: move conflict warning message to filemerge
Siddharth Agarwal <sid0@fb.com>
parents:
25125
diff
changeset
|
134 warning: conflicts while merging b/c! (edit, then use 'hg resolve --mark') |
23476
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
135 0 files updated, 0 files merged, 0 files removed, 1 files unresolved |
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
136 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon |
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
137 [1] |
23464
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
138 $ hg st -A |
23476
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
139 M b/c |
23444
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
140 a/c |
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
141 ? a/d |
23476
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
142 ? b/c.orig |
23464
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
143 C b/a |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
144 C b/b |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
145 $ cat b/c |
23476
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
146 <<<<<<< local: f1c50ca4f127 - test: new file in target directory |
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
147 target |
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
148 ======= |
23464
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
149 baz |
23476
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
150 >>>>>>> other: ce36d17b18fb - test: 2 add a/c |
39a12719ec65
merge: don't overwrite conflicting file in locally renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23475
diff
changeset
|
151 $ rm b/c.orig |
23464
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
152 |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
153 Remote directory rename with conflicting file added in remote target directory |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
154 and committed in local source directory. |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
155 |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
156 $ hg co -qC 2 |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
157 $ hg st -A |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
158 ? a/d |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
159 C a/a |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
160 C a/b |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
161 C a/c |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
162 $ hg merge 5 |
23475
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
163 merging a/c and b/c to b/c |
26614
ef1eb6df7071
simplemerge: move conflict warning message to filemerge
Siddharth Agarwal <sid0@fb.com>
parents:
25125
diff
changeset
|
164 warning: conflicts while merging b/c! (edit, then use 'hg resolve --mark') |
23475
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
165 2 files updated, 0 files merged, 2 files removed, 1 files unresolved |
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
166 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon |
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
167 [1] |
23464
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
168 $ hg st -A |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
169 M b/a |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
170 M b/b |
23475
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
171 M b/c |
23464
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
172 a/c |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
173 R a/a |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
174 R a/b |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
175 R a/c |
73d4f6551798
merge: add test with conflicting file and remote directory rename
Martin von Zweigbergk <martinvonz@google.com>
parents:
23444
diff
changeset
|
176 ? a/d |
23475
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
177 ? b/c.orig |
23444
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
178 $ cat b/c |
23475
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
179 <<<<<<< local: ce36d17b18fb - test: 2 add a/c |
23444
88629daa727b
merge: demonstrate that directory renames can lose local file content
Martin von Zweigbergk <martinvonz@google.com>
parents:
21391
diff
changeset
|
180 baz |
23475
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
181 ======= |
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
182 target |
67f1d68861fb
merge: don't ignore conflicting file in remote renamed directory
Martin von Zweigbergk <martinvonz@google.com>
parents:
23464
diff
changeset
|
183 >>>>>>> other: f1c50ca4f127 - test: new file in target directory |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
184 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
185 Second scenario with two repos: |
3733 | 186 |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
187 $ cd .. |
13956
ffb5c09ba822
tests: remove redundant mkdir
Martin Geisler <mg@lazybytes.net>
parents:
12114
diff
changeset
|
188 $ hg init r1 |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
189 $ cd r1 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
190 $ mkdir a |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
191 $ echo foo > a/f |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
192 $ hg add a |
15447
9910f60a37ee
tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
193 adding a/f (glob) |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
194 $ hg ci -m "a/f == foo" |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
195 $ cd .. |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
196 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
197 $ hg clone r1 r2 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
198 updating to branch default |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
199 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
200 $ cd r2 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
201 $ hg mv a b |
15447
9910f60a37ee
tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
202 moving a/f to b/f (glob) |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
203 $ echo foo1 > b/f |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
204 $ hg ci -m" a -> b, b/f == foo1" |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
205 $ cd .. |
3733 | 206 |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
207 $ cd r1 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
208 $ mkdir a/aa |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
209 $ echo bar > a/aa/g |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
210 $ hg add a/aa |
15447
9910f60a37ee
tests: make (glob) on windows accept \ instead of /
Mads Kiilerich <mads@kiilerich.com>
parents:
13956
diff
changeset
|
211 adding a/aa/g (glob) |
12114
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
212 $ hg ci -m "a/aa/g" |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
213 $ hg pull ../r2 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
214 pulling from ../r2 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
215 searching for changes |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
216 adding changesets |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
217 adding manifests |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
218 adding file changes |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
219 added 1 changesets with 1 changes to 1 files (+1 heads) |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
220 (run 'hg heads' to see heads, 'hg merge' to merge) |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
221 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
222 $ hg merge |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
223 2 files updated, 0 files merged, 1 files removed, 0 files unresolved |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
224 (branch merge, don't forget to commit) |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
225 |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
226 $ hg st -C |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
227 M b/f |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
228 A b/aa/g |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
229 a/aa/g |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
230 R a/aa/g |
0a6b2e21bc86
tests: merge the two test-rename-dir-merge* into one
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
8167
diff
changeset
|
231 R a/f |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16795
diff
changeset
|
232 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
16795
diff
changeset
|
233 $ cd .. |