##// END OF EJS Templates
tests: correct the output order about starting a background thread for Windows...
Matt Harbison -
r46689:69429972 default
parent child Browse files
Show More
@@ -1,255 +1,255 b''
1 Test for the full copytracing algorithm
1 Test for the full copytracing algorithm
2 =======================================
2 =======================================
3
3
4
4
5 Initial Setup
5 Initial Setup
6 =============
6 =============
7
7
8 use git diff to see rename
8 use git diff to see rename
9
9
10 $ cat << EOF >> $HGRCPATH
10 $ cat << EOF >> $HGRCPATH
11 > [diff]
11 > [diff]
12 > git=yes
12 > git=yes
13 > EOF
13 > EOF
14
14
15 Setup an history where one side copy and rename a file (and update it) while the other side update it.
15 Setup an history where one side copy and rename a file (and update it) while the other side update it.
16
16
17 $ hg init t
17 $ hg init t
18 $ cd t
18 $ cd t
19
19
20 $ echo 1 > a
20 $ echo 1 > a
21 $ hg ci -qAm "first"
21 $ hg ci -qAm "first"
22
22
23 $ hg cp a b
23 $ hg cp a b
24 $ hg mv a c
24 $ hg mv a c
25 $ echo 2 >> b
25 $ echo 2 >> b
26 $ echo 2 >> c
26 $ echo 2 >> c
27
27
28 $ hg ci -qAm "second"
28 $ hg ci -qAm "second"
29
29
30 $ hg co -C 0
30 $ hg co -C 0
31 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
31 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
32
32
33 $ echo 0 > a
33 $ echo 0 > a
34 $ echo 1 >> a
34 $ echo 1 >> a
35
35
36 $ hg ci -qAm "other"
36 $ hg ci -qAm "other"
37
37
38 $ hg log -G --patch
38 $ hg log -G --patch
39 @ changeset: 2:add3f11052fa
39 @ changeset: 2:add3f11052fa
40 | tag: tip
40 | tag: tip
41 | parent: 0:b8bf91eeebbc
41 | parent: 0:b8bf91eeebbc
42 | user: test
42 | user: test
43 | date: Thu Jan 01 00:00:00 1970 +0000
43 | date: Thu Jan 01 00:00:00 1970 +0000
44 | summary: other
44 | summary: other
45 |
45 |
46 | diff --git a/a b/a
46 | diff --git a/a b/a
47 | --- a/a
47 | --- a/a
48 | +++ b/a
48 | +++ b/a
49 | @@ -1,1 +1,2 @@
49 | @@ -1,1 +1,2 @@
50 | +0
50 | +0
51 | 1
51 | 1
52 |
52 |
53 | o changeset: 1:17c05bb7fcb6
53 | o changeset: 1:17c05bb7fcb6
54 |/ user: test
54 |/ user: test
55 | date: Thu Jan 01 00:00:00 1970 +0000
55 | date: Thu Jan 01 00:00:00 1970 +0000
56 | summary: second
56 | summary: second
57 |
57 |
58 | diff --git a/a b/b
58 | diff --git a/a b/b
59 | rename from a
59 | rename from a
60 | rename to b
60 | rename to b
61 | --- a/a
61 | --- a/a
62 | +++ b/b
62 | +++ b/b
63 | @@ -1,1 +1,2 @@
63 | @@ -1,1 +1,2 @@
64 | 1
64 | 1
65 | +2
65 | +2
66 | diff --git a/a b/c
66 | diff --git a/a b/c
67 | copy from a
67 | copy from a
68 | copy to c
68 | copy to c
69 | --- a/a
69 | --- a/a
70 | +++ b/c
70 | +++ b/c
71 | @@ -1,1 +1,2 @@
71 | @@ -1,1 +1,2 @@
72 | 1
72 | 1
73 | +2
73 | +2
74 |
74 |
75 o changeset: 0:b8bf91eeebbc
75 o changeset: 0:b8bf91eeebbc
76 user: test
76 user: test
77 date: Thu Jan 01 00:00:00 1970 +0000
77 date: Thu Jan 01 00:00:00 1970 +0000
78 summary: first
78 summary: first
79
79
80 diff --git a/a b/a
80 diff --git a/a b/a
81 new file mode 100644
81 new file mode 100644
82 --- /dev/null
82 --- /dev/null
83 +++ b/a
83 +++ b/a
84 @@ -0,0 +1,1 @@
84 @@ -0,0 +1,1 @@
85 +1
85 +1
86
86
87
87
88 Test Simple Merge
88 Test Simple Merge
89 =================
89 =================
90
90
91 $ hg merge --debug
91 $ hg merge --debug
92 unmatched files in other:
92 unmatched files in other:
93 b
93 b
94 c
94 c
95 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
95 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
96 on remote side:
96 on remote side:
97 src: 'a' -> dst: 'b' *
97 src: 'a' -> dst: 'b' *
98 src: 'a' -> dst: 'c' *
98 src: 'a' -> dst: 'c' *
99 checking for directory renames
99 checking for directory renames
100 resolving manifests
100 resolving manifests
101 branchmerge: True, force: False, partial: False
101 branchmerge: True, force: False, partial: False
102 ancestor: b8bf91eeebbc, local: add3f11052fa+, remote: 17c05bb7fcb6
102 ancestor: b8bf91eeebbc, local: add3f11052fa+, remote: 17c05bb7fcb6
103 starting 4 threads for background file closing (?)
103 preserving a for resolve of b
104 preserving a for resolve of b
104 preserving a for resolve of c
105 preserving a for resolve of c
105 removing a
106 removing a
106 starting 4 threads for background file closing (?)
107 b: remote moved from a -> m (premerge)
107 b: remote moved from a -> m (premerge)
108 picked tool ':merge' for b (binary False symlink False changedelete False)
108 picked tool ':merge' for b (binary False symlink False changedelete False)
109 merging a and b to b
109 merging a and b to b
110 my b@add3f11052fa+ other b@17c05bb7fcb6 ancestor a@b8bf91eeebbc
110 my b@add3f11052fa+ other b@17c05bb7fcb6 ancestor a@b8bf91eeebbc
111 premerge successful
111 premerge successful
112 c: remote moved from a -> m (premerge)
112 c: remote moved from a -> m (premerge)
113 picked tool ':merge' for c (binary False symlink False changedelete False)
113 picked tool ':merge' for c (binary False symlink False changedelete False)
114 merging a and c to c
114 merging a and c to c
115 my c@add3f11052fa+ other c@17c05bb7fcb6 ancestor a@b8bf91eeebbc
115 my c@add3f11052fa+ other c@17c05bb7fcb6 ancestor a@b8bf91eeebbc
116 premerge successful
116 premerge successful
117 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
117 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
118 (branch merge, don't forget to commit)
118 (branch merge, don't forget to commit)
119
119
120 file b
120 file b
121 $ cat b
121 $ cat b
122 0
122 0
123 1
123 1
124 2
124 2
125
125
126 file c
126 file c
127 $ cat c
127 $ cat c
128 0
128 0
129 1
129 1
130 2
130 2
131
131
132 Test disabling copy tracing
132 Test disabling copy tracing
133 ===========================
133 ===========================
134
134
135 first verify copy metadata was kept
135 first verify copy metadata was kept
136 -----------------------------------
136 -----------------------------------
137
137
138 $ hg up -qC 2
138 $ hg up -qC 2
139 $ hg rebase --keep -d 1 -b 2 --config extensions.rebase=
139 $ hg rebase --keep -d 1 -b 2 --config extensions.rebase=
140 rebasing 2:add3f11052fa tip "other"
140 rebasing 2:add3f11052fa tip "other"
141 merging b and a to b
141 merging b and a to b
142 merging c and a to c
142 merging c and a to c
143
143
144 $ cat b
144 $ cat b
145 0
145 0
146 1
146 1
147 2
147 2
148
148
149 next verify copy metadata is lost when disabled
149 next verify copy metadata is lost when disabled
150 ------------------------------------------------
150 ------------------------------------------------
151
151
152 $ hg strip -r . --config extensions.strip=
152 $ hg strip -r . --config extensions.strip=
153 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
153 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
154 saved backup bundle to $TESTTMP/t/.hg/strip-backup/550bd84c0cd3-fc575957-backup.hg
154 saved backup bundle to $TESTTMP/t/.hg/strip-backup/550bd84c0cd3-fc575957-backup.hg
155 $ hg up -qC 2
155 $ hg up -qC 2
156 $ hg rebase --keep -d 1 -b 2 --config extensions.rebase= --config experimental.copytrace=off --config ui.interactive=True << EOF
156 $ hg rebase --keep -d 1 -b 2 --config extensions.rebase= --config experimental.copytrace=off --config ui.interactive=True << EOF
157 > c
157 > c
158 > EOF
158 > EOF
159 rebasing 2:add3f11052fa tip "other"
159 rebasing 2:add3f11052fa tip "other"
160 file 'a' was deleted in local [dest] but was modified in other [source].
160 file 'a' was deleted in local [dest] but was modified in other [source].
161 You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
161 You can use (c)hanged version, leave (d)eleted, or leave (u)nresolved.
162 What do you want to do? c
162 What do you want to do? c
163
163
164 $ cat b
164 $ cat b
165 1
165 1
166 2
166 2
167
167
168 $ cd ..
168 $ cd ..
169
169
170 Verify disabling copy tracing still keeps copies from rebase source
170 Verify disabling copy tracing still keeps copies from rebase source
171 -------------------------------------------------------------------
171 -------------------------------------------------------------------
172
172
173 $ hg init copydisable
173 $ hg init copydisable
174 $ cd copydisable
174 $ cd copydisable
175 $ touch a
175 $ touch a
176 $ hg ci -Aqm 'add a'
176 $ hg ci -Aqm 'add a'
177 $ touch b
177 $ touch b
178 $ hg ci -Aqm 'add b, c'
178 $ hg ci -Aqm 'add b, c'
179 $ hg cp b x
179 $ hg cp b x
180 $ echo x >> x
180 $ echo x >> x
181 $ hg ci -qm 'copy b->x'
181 $ hg ci -qm 'copy b->x'
182 $ hg up -q 1
182 $ hg up -q 1
183 $ touch z
183 $ touch z
184 $ hg ci -Aqm 'add z'
184 $ hg ci -Aqm 'add z'
185 $ hg log -G -T '{rev} {desc}\n'
185 $ hg log -G -T '{rev} {desc}\n'
186 @ 3 add z
186 @ 3 add z
187 |
187 |
188 | o 2 copy b->x
188 | o 2 copy b->x
189 |/
189 |/
190 o 1 add b, c
190 o 1 add b, c
191 |
191 |
192 o 0 add a
192 o 0 add a
193
193
194 $ hg rebase -d . -b 2 --config extensions.rebase= --config experimental.copytrace=off
194 $ hg rebase -d . -b 2 --config extensions.rebase= --config experimental.copytrace=off
195 rebasing 2:6adcf8c12e7d "copy b->x"
195 rebasing 2:6adcf8c12e7d "copy b->x"
196 saved backup bundle to $TESTTMP/copydisable/.hg/strip-backup/6adcf8c12e7d-ce4b3e75-rebase.hg
196 saved backup bundle to $TESTTMP/copydisable/.hg/strip-backup/6adcf8c12e7d-ce4b3e75-rebase.hg
197 $ hg up -q 3
197 $ hg up -q 3
198 $ hg log -f x -T '{rev} {desc}\n'
198 $ hg log -f x -T '{rev} {desc}\n'
199 3 copy b->x
199 3 copy b->x
200 1 add b, c
200 1 add b, c
201
201
202 $ cd ../
202 $ cd ../
203
203
204
204
205 test storage preservation
205 test storage preservation
206 -------------------------
206 -------------------------
207
207
208 Verify rebase do not discard recorded copies data when copy tracing usage is
208 Verify rebase do not discard recorded copies data when copy tracing usage is
209 disabled.
209 disabled.
210
210
211 Setup
211 Setup
212
212
213 $ hg init copydisable3
213 $ hg init copydisable3
214 $ cd copydisable3
214 $ cd copydisable3
215 $ touch a
215 $ touch a
216 $ hg ci -Aqm 'add a'
216 $ hg ci -Aqm 'add a'
217 $ hg cp a b
217 $ hg cp a b
218 $ hg ci -Aqm 'copy a->b'
218 $ hg ci -Aqm 'copy a->b'
219 $ hg mv b c
219 $ hg mv b c
220 $ hg ci -Aqm 'move b->c'
220 $ hg ci -Aqm 'move b->c'
221 $ hg up -q 0
221 $ hg up -q 0
222 $ hg cp a b
222 $ hg cp a b
223 $ echo b >> b
223 $ echo b >> b
224 $ hg ci -Aqm 'copy a->b (2)'
224 $ hg ci -Aqm 'copy a->b (2)'
225 $ hg log -G -T '{rev} {desc}\n'
225 $ hg log -G -T '{rev} {desc}\n'
226 @ 3 copy a->b (2)
226 @ 3 copy a->b (2)
227 |
227 |
228 | o 2 move b->c
228 | o 2 move b->c
229 | |
229 | |
230 | o 1 copy a->b
230 | o 1 copy a->b
231 |/
231 |/
232 o 0 add a
232 o 0 add a
233
233
234
234
235 Actual Test
235 Actual Test
236
236
237 A file is copied on one side and has been moved twice on the other side. the
237 A file is copied on one side and has been moved twice on the other side. the
238 file is copied from `0:a`, so the file history of the `3:b` should trace directly to `0:a`.
238 file is copied from `0:a`, so the file history of the `3:b` should trace directly to `0:a`.
239
239
240 $ hg rebase -d 2 -s 3 --config extensions.rebase= --config experimental.copytrace=off
240 $ hg rebase -d 2 -s 3 --config extensions.rebase= --config experimental.copytrace=off
241 rebasing 3:47e1a9e6273b tip "copy a->b (2)"
241 rebasing 3:47e1a9e6273b tip "copy a->b (2)"
242 saved backup bundle to $TESTTMP/copydisable3/.hg/strip-backup/47e1a9e6273b-2d099c59-rebase.hg
242 saved backup bundle to $TESTTMP/copydisable3/.hg/strip-backup/47e1a9e6273b-2d099c59-rebase.hg
243
243
244 $ hg log -G -f b
244 $ hg log -G -f b
245 @ changeset: 3:76024fb4b05b
245 @ changeset: 3:76024fb4b05b
246 : tag: tip
246 : tag: tip
247 : user: test
247 : user: test
248 : date: Thu Jan 01 00:00:00 1970 +0000
248 : date: Thu Jan 01 00:00:00 1970 +0000
249 : summary: copy a->b (2)
249 : summary: copy a->b (2)
250 :
250 :
251 o changeset: 0:ac82d8b1f7c4
251 o changeset: 0:ac82d8b1f7c4
252 user: test
252 user: test
253 date: Thu Jan 01 00:00:00 1970 +0000
253 date: Thu Jan 01 00:00:00 1970 +0000
254 summary: add a
254 summary: add a
255
255
@@ -1,66 +1,66 b''
1 $ hg init repo
1 $ hg init repo
2 $ cd repo
2 $ cd repo
3
3
4 $ echo line 1 > foo
4 $ echo line 1 > foo
5 $ hg ci -qAm 'add foo'
5 $ hg ci -qAm 'add foo'
6
6
7 copy foo to bar and change both files
7 copy foo to bar and change both files
8 $ hg cp foo bar
8 $ hg cp foo bar
9 $ echo line 2-1 >> foo
9 $ echo line 2-1 >> foo
10 $ echo line 2-2 >> bar
10 $ echo line 2-2 >> bar
11 $ hg ci -m 'cp foo bar; change both'
11 $ hg ci -m 'cp foo bar; change both'
12
12
13 in another branch, change foo in a way that doesn't conflict with
13 in another branch, change foo in a way that doesn't conflict with
14 the other changes
14 the other changes
15 $ hg up -qC 0
15 $ hg up -qC 0
16 $ echo line 0 > foo
16 $ echo line 0 > foo
17 $ hg cat foo >> foo
17 $ hg cat foo >> foo
18 $ hg ci -m 'change foo'
18 $ hg ci -m 'change foo'
19 created new head
19 created new head
20
20
21 we get conflicts that shouldn't be there
21 we get conflicts that shouldn't be there
22 $ hg merge -P
22 $ hg merge -P
23 changeset: 1:484bf6903104
23 changeset: 1:484bf6903104
24 user: test
24 user: test
25 date: Thu Jan 01 00:00:00 1970 +0000
25 date: Thu Jan 01 00:00:00 1970 +0000
26 summary: cp foo bar; change both
26 summary: cp foo bar; change both
27
27
28 $ hg merge --debug
28 $ hg merge --debug
29 unmatched files in other:
29 unmatched files in other:
30 bar
30 bar
31 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
31 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
32 on remote side:
32 on remote side:
33 src: 'foo' -> dst: 'bar' *
33 src: 'foo' -> dst: 'bar' *
34 checking for directory renames
34 checking for directory renames
35 resolving manifests
35 resolving manifests
36 branchmerge: True, force: False, partial: False
36 branchmerge: True, force: False, partial: False
37 ancestor: e6dc8efe11cc, local: 6a0df1dad128+, remote: 484bf6903104
37 ancestor: e6dc8efe11cc, local: 6a0df1dad128+, remote: 484bf6903104
38 starting 4 threads for background file closing (?)
38 preserving foo for resolve of bar
39 preserving foo for resolve of bar
39 preserving foo for resolve of foo
40 preserving foo for resolve of foo
40 starting 4 threads for background file closing (?)
41 bar: remote copied from foo -> m (premerge)
41 bar: remote copied from foo -> m (premerge)
42 picked tool ':merge' for bar (binary False symlink False changedelete False)
42 picked tool ':merge' for bar (binary False symlink False changedelete False)
43 merging foo and bar to bar
43 merging foo and bar to bar
44 my bar@6a0df1dad128+ other bar@484bf6903104 ancestor foo@e6dc8efe11cc
44 my bar@6a0df1dad128+ other bar@484bf6903104 ancestor foo@e6dc8efe11cc
45 premerge successful
45 premerge successful
46 foo: versions differ -> m (premerge)
46 foo: versions differ -> m (premerge)
47 picked tool ':merge' for foo (binary False symlink False changedelete False)
47 picked tool ':merge' for foo (binary False symlink False changedelete False)
48 merging foo
48 merging foo
49 my foo@6a0df1dad128+ other foo@484bf6903104 ancestor foo@e6dc8efe11cc
49 my foo@6a0df1dad128+ other foo@484bf6903104 ancestor foo@e6dc8efe11cc
50 premerge successful
50 premerge successful
51 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
51 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
52 (branch merge, don't forget to commit)
52 (branch merge, don't forget to commit)
53
53
54 contents of foo
54 contents of foo
55 $ cat foo
55 $ cat foo
56 line 0
56 line 0
57 line 1
57 line 1
58 line 2-1
58 line 2-1
59
59
60 contents of bar
60 contents of bar
61 $ cat bar
61 $ cat bar
62 line 0
62 line 0
63 line 1
63 line 1
64 line 2-2
64 line 2-2
65
65
66 $ cd ..
66 $ cd ..
@@ -1,934 +1,934 b''
1 $ cat >> $HGRCPATH <<EOF
1 $ cat >> $HGRCPATH <<EOF
2 > [extdiff]
2 > [extdiff]
3 > # for portability:
3 > # for portability:
4 > pdiff = sh "$RUNTESTDIR/pdiff"
4 > pdiff = sh "$RUNTESTDIR/pdiff"
5 > EOF
5 > EOF
6
6
7 Create a repo with some stuff in it:
7 Create a repo with some stuff in it:
8
8
9 $ hg init a
9 $ hg init a
10 $ cd a
10 $ cd a
11 $ echo a > a
11 $ echo a > a
12 $ echo a > d
12 $ echo a > d
13 $ echo a > e
13 $ echo a > e
14 $ hg ci -qAm0
14 $ hg ci -qAm0
15 $ echo b > a
15 $ echo b > a
16 $ hg ci -m1 -u bar
16 $ hg ci -m1 -u bar
17 $ hg mv a b
17 $ hg mv a b
18 $ hg ci -m2
18 $ hg ci -m2
19 $ hg cp b c
19 $ hg cp b c
20 $ hg ci -m3 -u baz
20 $ hg ci -m3 -u baz
21 $ echo b > d
21 $ echo b > d
22 $ echo f > e
22 $ echo f > e
23 $ hg ci -m4
23 $ hg ci -m4
24 $ hg up -q 3
24 $ hg up -q 3
25 $ echo b > e
25 $ echo b > e
26 $ hg branch -q stable
26 $ hg branch -q stable
27 $ hg ci -m5
27 $ hg ci -m5
28 $ hg merge -q default --tool internal:local # for conflicts in e, choose 5 and ignore 4
28 $ hg merge -q default --tool internal:local # for conflicts in e, choose 5 and ignore 4
29 $ hg branch -q default
29 $ hg branch -q default
30 $ hg ci -m6
30 $ hg ci -m6
31 $ hg phase --public 3
31 $ hg phase --public 3
32 $ hg phase --force --secret 6
32 $ hg phase --force --secret 6
33
33
34 $ hg log -G --template '{author}@{rev}.{phase}: {desc}\n'
34 $ hg log -G --template '{author}@{rev}.{phase}: {desc}\n'
35 @ test@6.secret: 6
35 @ test@6.secret: 6
36 |\
36 |\
37 | o test@5.draft: 5
37 | o test@5.draft: 5
38 | |
38 | |
39 o | test@4.draft: 4
39 o | test@4.draft: 4
40 |/
40 |/
41 o baz@3.public: 3
41 o baz@3.public: 3
42 |
42 |
43 o test@2.public: 2
43 o test@2.public: 2
44 |
44 |
45 o bar@1.public: 1
45 o bar@1.public: 1
46 |
46 |
47 o test@0.public: 0
47 o test@0.public: 0
48
48
49 Test --base for grafting the merge of 4 from the perspective of 5, thus only getting the change to d
49 Test --base for grafting the merge of 4 from the perspective of 5, thus only getting the change to d
50
50
51 $ hg up -cqr 3
51 $ hg up -cqr 3
52 $ hg graft -r 6 --base 5
52 $ hg graft -r 6 --base 5
53 grafting 6:25a2b029d3ae "6" (tip)
53 grafting 6:25a2b029d3ae "6" (tip)
54 merging e
54 merging e
55 $ hg st --change .
55 $ hg st --change .
56 M d
56 M d
57
57
58 $ hg -q strip . --config extensions.strip=
58 $ hg -q strip . --config extensions.strip=
59
59
60 Test --base for collapsing changesets 2 and 3, thus getting both b and c
60 Test --base for collapsing changesets 2 and 3, thus getting both b and c
61
61
62 $ hg up -cqr 0
62 $ hg up -cqr 0
63 $ hg graft -r 3 --base 1
63 $ hg graft -r 3 --base 1
64 grafting 3:4c60f11aa304 "3"
64 grafting 3:4c60f11aa304 "3"
65 merging a and b to b
65 merging a and b to b
66 merging a and c to c
66 merging a and c to c
67 $ hg st --change .
67 $ hg st --change .
68 A b
68 A b
69 A c
69 A c
70 R a
70 R a
71
71
72 $ hg -q strip . --config extensions.strip=
72 $ hg -q strip . --config extensions.strip=
73
73
74 Specifying child as --base revision fails safely (perhaps slightly confusing, but consistent)
74 Specifying child as --base revision fails safely (perhaps slightly confusing, but consistent)
75
75
76 $ hg graft -r 2 --base 3
76 $ hg graft -r 2 --base 3
77 grafting 2:5c095ad7e90f "2"
77 grafting 2:5c095ad7e90f "2"
78 note: possible conflict - c was deleted and renamed to:
78 note: possible conflict - c was deleted and renamed to:
79 a
79 a
80 note: graft of 2:5c095ad7e90f created no changes to commit
80 note: graft of 2:5c095ad7e90f created no changes to commit
81
81
82 Can't continue without starting:
82 Can't continue without starting:
83
83
84 $ hg -q up -cr tip
84 $ hg -q up -cr tip
85 $ hg rm -q e
85 $ hg rm -q e
86 $ hg graft --continue
86 $ hg graft --continue
87 abort: no graft in progress
87 abort: no graft in progress
88 [20]
88 [20]
89 $ hg revert -r . -q e
89 $ hg revert -r . -q e
90
90
91 Need to specify a rev:
91 Need to specify a rev:
92
92
93 $ hg graft
93 $ hg graft
94 abort: no revisions specified
94 abort: no revisions specified
95 [10]
95 [10]
96
96
97 Can't graft ancestor:
97 Can't graft ancestor:
98
98
99 $ hg graft 1 2
99 $ hg graft 1 2
100 skipping ancestor revision 1:5d205f8b35b6
100 skipping ancestor revision 1:5d205f8b35b6
101 skipping ancestor revision 2:5c095ad7e90f
101 skipping ancestor revision 2:5c095ad7e90f
102 [255]
102 [255]
103
103
104 Specify revisions with -r:
104 Specify revisions with -r:
105
105
106 $ hg graft -r 1 -r 2
106 $ hg graft -r 1 -r 2
107 skipping ancestor revision 1:5d205f8b35b6
107 skipping ancestor revision 1:5d205f8b35b6
108 skipping ancestor revision 2:5c095ad7e90f
108 skipping ancestor revision 2:5c095ad7e90f
109 [255]
109 [255]
110
110
111 $ hg graft -r 1 2
111 $ hg graft -r 1 2
112 warning: inconsistent use of --rev might give unexpected revision ordering!
112 warning: inconsistent use of --rev might give unexpected revision ordering!
113 skipping ancestor revision 2:5c095ad7e90f
113 skipping ancestor revision 2:5c095ad7e90f
114 skipping ancestor revision 1:5d205f8b35b6
114 skipping ancestor revision 1:5d205f8b35b6
115 [255]
115 [255]
116
116
117 Conflicting date/user options:
117 Conflicting date/user options:
118
118
119 $ hg up -q 0
119 $ hg up -q 0
120 $ hg graft -U --user foo 2
120 $ hg graft -U --user foo 2
121 abort: cannot specify both --user and --currentuser
121 abort: cannot specify both --user and --currentuser
122 [10]
122 [10]
123 $ hg graft -D --date '0 0' 2
123 $ hg graft -D --date '0 0' 2
124 abort: cannot specify both --date and --currentdate
124 abort: cannot specify both --date and --currentdate
125 [10]
125 [10]
126
126
127 Can't graft with dirty wd:
127 Can't graft with dirty wd:
128
128
129 $ hg up -q 0
129 $ hg up -q 0
130 $ echo foo > a
130 $ echo foo > a
131 $ hg graft 1
131 $ hg graft 1
132 abort: uncommitted changes
132 abort: uncommitted changes
133 [20]
133 [20]
134 $ hg revert a
134 $ hg revert a
135
135
136 Graft a rename:
136 Graft a rename:
137 (this also tests that editor is invoked if '--edit' is specified)
137 (this also tests that editor is invoked if '--edit' is specified)
138
138
139 $ hg status --rev "2^1" --rev 2
139 $ hg status --rev "2^1" --rev 2
140 A b
140 A b
141 R a
141 R a
142 $ HGEDITOR=cat hg graft 2 -u foo --edit
142 $ HGEDITOR=cat hg graft 2 -u foo --edit
143 grafting 2:5c095ad7e90f "2"
143 grafting 2:5c095ad7e90f "2"
144 merging a and b to b
144 merging a and b to b
145 2
145 2
146
146
147
147
148 HG: Enter commit message. Lines beginning with 'HG:' are removed.
148 HG: Enter commit message. Lines beginning with 'HG:' are removed.
149 HG: Leave message empty to abort commit.
149 HG: Leave message empty to abort commit.
150 HG: --
150 HG: --
151 HG: user: foo
151 HG: user: foo
152 HG: branch 'default'
152 HG: branch 'default'
153 HG: added b
153 HG: added b
154 HG: removed a
154 HG: removed a
155 $ hg export tip --git
155 $ hg export tip --git
156 # HG changeset patch
156 # HG changeset patch
157 # User foo
157 # User foo
158 # Date 0 0
158 # Date 0 0
159 # Thu Jan 01 00:00:00 1970 +0000
159 # Thu Jan 01 00:00:00 1970 +0000
160 # Node ID ef0ef43d49e79e81ddafdc7997401ba0041efc82
160 # Node ID ef0ef43d49e79e81ddafdc7997401ba0041efc82
161 # Parent 68795b066622ca79a25816a662041d8f78f3cd9e
161 # Parent 68795b066622ca79a25816a662041d8f78f3cd9e
162 2
162 2
163
163
164 diff --git a/a b/b
164 diff --git a/a b/b
165 rename from a
165 rename from a
166 rename to b
166 rename to b
167
167
168 Look for extra:source
168 Look for extra:source
169
169
170 $ hg log --debug -r tip
170 $ hg log --debug -r tip
171 changeset: 7:ef0ef43d49e79e81ddafdc7997401ba0041efc82
171 changeset: 7:ef0ef43d49e79e81ddafdc7997401ba0041efc82
172 tag: tip
172 tag: tip
173 phase: draft
173 phase: draft
174 parent: 0:68795b066622ca79a25816a662041d8f78f3cd9e
174 parent: 0:68795b066622ca79a25816a662041d8f78f3cd9e
175 parent: -1:0000000000000000000000000000000000000000
175 parent: -1:0000000000000000000000000000000000000000
176 manifest: 7:e59b6b228f9cbf9903d5e9abf996e083a1f533eb
176 manifest: 7:e59b6b228f9cbf9903d5e9abf996e083a1f533eb
177 user: foo
177 user: foo
178 date: Thu Jan 01 00:00:00 1970 +0000
178 date: Thu Jan 01 00:00:00 1970 +0000
179 files+: b
179 files+: b
180 files-: a
180 files-: a
181 extra: branch=default
181 extra: branch=default
182 extra: source=5c095ad7e90f871700f02dd1fa5012cb4498a2d4
182 extra: source=5c095ad7e90f871700f02dd1fa5012cb4498a2d4
183 description:
183 description:
184 2
184 2
185
185
186
186
187
187
188 Graft out of order, skipping a merge and a duplicate
188 Graft out of order, skipping a merge and a duplicate
189 (this also tests that editor is not invoked if '--edit' is not specified)
189 (this also tests that editor is not invoked if '--edit' is not specified)
190
190
191 $ hg graft 1 5 4 3 'merge()' 2 -n
191 $ hg graft 1 5 4 3 'merge()' 2 -n
192 skipping ungraftable merge revision 6
192 skipping ungraftable merge revision 6
193 skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7)
193 skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7)
194 grafting 1:5d205f8b35b6 "1"
194 grafting 1:5d205f8b35b6 "1"
195 grafting 5:97f8bfe72746 "5"
195 grafting 5:97f8bfe72746 "5"
196 grafting 4:9c233e8e184d "4"
196 grafting 4:9c233e8e184d "4"
197 grafting 3:4c60f11aa304 "3"
197 grafting 3:4c60f11aa304 "3"
198
198
199 $ HGEDITOR=cat hg graft 1 5 'merge()' 2 --debug
199 $ HGEDITOR=cat hg graft 1 5 'merge()' 2 --debug
200 skipping ungraftable merge revision 6
200 skipping ungraftable merge revision 6
201 scanning for duplicate grafts
201 scanning for duplicate grafts
202 skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7)
202 skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7)
203 grafting 1:5d205f8b35b6 "1"
203 grafting 1:5d205f8b35b6 "1"
204 unmatched files in local:
204 unmatched files in local:
205 b
205 b
206 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
206 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
207 on local side:
207 on local side:
208 src: 'a' -> dst: 'b' *
208 src: 'a' -> dst: 'b' *
209 checking for directory renames
209 checking for directory renames
210 resolving manifests
210 resolving manifests
211 branchmerge: True, force: True, partial: False
211 branchmerge: True, force: True, partial: False
212 ancestor: 68795b066622, local: ef0ef43d49e7+, remote: 5d205f8b35b6
212 ancestor: 68795b066622, local: ef0ef43d49e7+, remote: 5d205f8b35b6
213 starting 4 threads for background file closing (?)
213 preserving b for resolve of b
214 preserving b for resolve of b
214 starting 4 threads for background file closing (?)
215 b: local copied/moved from a -> m (premerge)
215 b: local copied/moved from a -> m (premerge)
216 picked tool ':merge' for b (binary False symlink False changedelete False)
216 picked tool ':merge' for b (binary False symlink False changedelete False)
217 merging b and a to b
217 merging b and a to b
218 my b@ef0ef43d49e7+ other a@5d205f8b35b6 ancestor a@68795b066622
218 my b@ef0ef43d49e7+ other a@5d205f8b35b6 ancestor a@68795b066622
219 premerge successful
219 premerge successful
220 committing files:
220 committing files:
221 b
221 b
222 committing manifest
222 committing manifest
223 committing changelog
223 committing changelog
224 updating the branch cache
224 updating the branch cache
225 grafting 5:97f8bfe72746 "5"
225 grafting 5:97f8bfe72746 "5"
226 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
226 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
227 on local side:
227 on local side:
228 src: 'c' -> dst: 'b'
228 src: 'c' -> dst: 'b'
229 checking for directory renames
229 checking for directory renames
230 resolving manifests
230 resolving manifests
231 branchmerge: True, force: True, partial: False
231 branchmerge: True, force: True, partial: False
232 ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746
232 ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746
233 e: remote is newer -> g
233 e: remote is newer -> g
234 getting e
234 getting e
235 committing files:
235 committing files:
236 e
236 e
237 committing manifest
237 committing manifest
238 committing changelog
238 committing changelog
239 updating the branch cache
239 updating the branch cache
240 $ HGEDITOR=cat hg graft 4 3 --log --debug
240 $ HGEDITOR=cat hg graft 4 3 --log --debug
241 scanning for duplicate grafts
241 scanning for duplicate grafts
242 grafting 4:9c233e8e184d "4"
242 grafting 4:9c233e8e184d "4"
243 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
243 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
244 on local side:
244 on local side:
245 src: 'c' -> dst: 'b'
245 src: 'c' -> dst: 'b'
246 checking for directory renames
246 checking for directory renames
247 resolving manifests
247 resolving manifests
248 branchmerge: True, force: True, partial: False
248 branchmerge: True, force: True, partial: False
249 ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d
249 ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d
250 d: remote is newer -> g
250 d: remote is newer -> g
251 getting d
251 getting d
252 preserving e for resolve of e
252 preserving e for resolve of e
253 e: versions differ -> m (premerge)
253 e: versions differ -> m (premerge)
254 picked tool ':merge' for e (binary False symlink False changedelete False)
254 picked tool ':merge' for e (binary False symlink False changedelete False)
255 merging e
255 merging e
256 my e@1905859650ec+ other e@9c233e8e184d ancestor e@4c60f11aa304
256 my e@1905859650ec+ other e@9c233e8e184d ancestor e@4c60f11aa304
257 e: versions differ -> m (merge)
257 e: versions differ -> m (merge)
258 picked tool ':merge' for e (binary False symlink False changedelete False)
258 picked tool ':merge' for e (binary False symlink False changedelete False)
259 my e@1905859650ec+ other e@9c233e8e184d ancestor e@4c60f11aa304
259 my e@1905859650ec+ other e@9c233e8e184d ancestor e@4c60f11aa304
260 warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
260 warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
261 abort: unresolved conflicts, can't continue
261 abort: unresolved conflicts, can't continue
262 (use 'hg resolve' and 'hg graft --continue')
262 (use 'hg resolve' and 'hg graft --continue')
263 [1]
263 [1]
264
264
265 Summary should mention graft:
265 Summary should mention graft:
266
266
267 $ hg summary |grep graft
267 $ hg summary |grep graft
268 commit: 2 modified, 2 unknown, 1 unresolved (graft in progress)
268 commit: 2 modified, 2 unknown, 1 unresolved (graft in progress)
269
269
270 Using status to get more context
270 Using status to get more context
271
271
272 $ hg status --verbose
272 $ hg status --verbose
273 M d
273 M d
274 M e
274 M e
275 ? a.orig
275 ? a.orig
276 ? e.orig
276 ? e.orig
277 # The repository is in an unfinished *graft* state.
277 # The repository is in an unfinished *graft* state.
278
278
279 # Unresolved merge conflicts:
279 # Unresolved merge conflicts:
280 #
280 #
281 # e
281 # e
282 #
282 #
283 # To mark files as resolved: hg resolve --mark FILE
283 # To mark files as resolved: hg resolve --mark FILE
284
284
285 # To continue: hg graft --continue
285 # To continue: hg graft --continue
286 # To abort: hg graft --abort
286 # To abort: hg graft --abort
287 # To stop: hg graft --stop
287 # To stop: hg graft --stop
288
288
289
289
290 Commit while interrupted should fail:
290 Commit while interrupted should fail:
291
291
292 $ hg ci -m 'commit interrupted graft'
292 $ hg ci -m 'commit interrupted graft'
293 abort: graft in progress
293 abort: graft in progress
294 (use 'hg graft --continue' or 'hg graft --stop' to stop)
294 (use 'hg graft --continue' or 'hg graft --stop' to stop)
295 [20]
295 [20]
296
296
297 Abort the graft and try committing:
297 Abort the graft and try committing:
298
298
299 $ hg up -C .
299 $ hg up -C .
300 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
300 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
301 $ echo c >> e
301 $ echo c >> e
302 $ hg ci -mtest
302 $ hg ci -mtest
303
303
304 $ hg strip . --config extensions.strip=
304 $ hg strip . --config extensions.strip=
305 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
305 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
306 saved backup bundle to $TESTTMP/a/.hg/strip-backup/*-backup.hg (glob)
306 saved backup bundle to $TESTTMP/a/.hg/strip-backup/*-backup.hg (glob)
307
307
308 Graft again:
308 Graft again:
309
309
310 $ hg graft 1 5 4 3 'merge()' 2
310 $ hg graft 1 5 4 3 'merge()' 2
311 skipping ungraftable merge revision 6
311 skipping ungraftable merge revision 6
312 skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7)
312 skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7)
313 skipping revision 1:5d205f8b35b6 (already grafted to 8:6b9e5368ca4e)
313 skipping revision 1:5d205f8b35b6 (already grafted to 8:6b9e5368ca4e)
314 skipping revision 5:97f8bfe72746 (already grafted to 9:1905859650ec)
314 skipping revision 5:97f8bfe72746 (already grafted to 9:1905859650ec)
315 grafting 4:9c233e8e184d "4"
315 grafting 4:9c233e8e184d "4"
316 merging e
316 merging e
317 warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
317 warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
318 abort: unresolved conflicts, can't continue
318 abort: unresolved conflicts, can't continue
319 (use 'hg resolve' and 'hg graft --continue')
319 (use 'hg resolve' and 'hg graft --continue')
320 [1]
320 [1]
321
321
322 Continue without resolve should fail:
322 Continue without resolve should fail:
323
323
324 $ hg graft -c
324 $ hg graft -c
325 grafting 4:9c233e8e184d "4"
325 grafting 4:9c233e8e184d "4"
326 abort: unresolved merge conflicts (see 'hg help resolve')
326 abort: unresolved merge conflicts (see 'hg help resolve')
327 [20]
327 [20]
328
328
329 Fix up:
329 Fix up:
330
330
331 $ echo b > e
331 $ echo b > e
332 $ hg resolve -m e
332 $ hg resolve -m e
333 (no more unresolved files)
333 (no more unresolved files)
334 continue: hg graft --continue
334 continue: hg graft --continue
335
335
336 Continue with a revision should fail:
336 Continue with a revision should fail:
337
337
338 $ hg graft -c 6
338 $ hg graft -c 6
339 abort: can't specify --continue and revisions
339 abort: can't specify --continue and revisions
340 [10]
340 [10]
341
341
342 $ hg graft -c -r 6
342 $ hg graft -c -r 6
343 abort: can't specify --continue and revisions
343 abort: can't specify --continue and revisions
344 [10]
344 [10]
345
345
346 Continue for real, clobber usernames
346 Continue for real, clobber usernames
347
347
348 $ hg graft -c -U
348 $ hg graft -c -U
349 grafting 4:9c233e8e184d "4"
349 grafting 4:9c233e8e184d "4"
350 grafting 3:4c60f11aa304 "3"
350 grafting 3:4c60f11aa304 "3"
351
351
352 Compare with original:
352 Compare with original:
353
353
354 $ hg diff -r 6
354 $ hg diff -r 6
355 $ hg status --rev 0:. -C
355 $ hg status --rev 0:. -C
356 M d
356 M d
357 M e
357 M e
358 A b
358 A b
359 a
359 a
360 A c
360 A c
361 a
361 a
362 R a
362 R a
363
363
364 View graph:
364 View graph:
365
365
366 $ hg log -G --template '{author}@{rev}.{phase}: {desc}\n'
366 $ hg log -G --template '{author}@{rev}.{phase}: {desc}\n'
367 @ test@11.draft: 3
367 @ test@11.draft: 3
368 |
368 |
369 o test@10.draft: 4
369 o test@10.draft: 4
370 |
370 |
371 o test@9.draft: 5
371 o test@9.draft: 5
372 |
372 |
373 o bar@8.draft: 1
373 o bar@8.draft: 1
374 |
374 |
375 o foo@7.draft: 2
375 o foo@7.draft: 2
376 |
376 |
377 | o test@6.secret: 6
377 | o test@6.secret: 6
378 | |\
378 | |\
379 | | o test@5.draft: 5
379 | | o test@5.draft: 5
380 | | |
380 | | |
381 | o | test@4.draft: 4
381 | o | test@4.draft: 4
382 | |/
382 | |/
383 | o baz@3.public: 3
383 | o baz@3.public: 3
384 | |
384 | |
385 | o test@2.public: 2
385 | o test@2.public: 2
386 | |
386 | |
387 | o bar@1.public: 1
387 | o bar@1.public: 1
388 |/
388 |/
389 o test@0.public: 0
389 o test@0.public: 0
390
390
391 Graft again onto another branch should preserve the original source
391 Graft again onto another branch should preserve the original source
392 $ hg up -q 0
392 $ hg up -q 0
393 $ echo 'g'>g
393 $ echo 'g'>g
394 $ hg add g
394 $ hg add g
395 $ hg ci -m 7
395 $ hg ci -m 7
396 created new head
396 created new head
397 $ hg graft 7
397 $ hg graft 7
398 grafting 7:ef0ef43d49e7 "2"
398 grafting 7:ef0ef43d49e7 "2"
399
399
400 $ hg log -r 7 --template '{rev}:{node}\n'
400 $ hg log -r 7 --template '{rev}:{node}\n'
401 7:ef0ef43d49e79e81ddafdc7997401ba0041efc82
401 7:ef0ef43d49e79e81ddafdc7997401ba0041efc82
402 $ hg log -r 2 --template '{rev}:{node}\n'
402 $ hg log -r 2 --template '{rev}:{node}\n'
403 2:5c095ad7e90f871700f02dd1fa5012cb4498a2d4
403 2:5c095ad7e90f871700f02dd1fa5012cb4498a2d4
404
404
405 $ hg log --debug -r tip
405 $ hg log --debug -r tip
406 changeset: 13:7a4785234d87ec1aa420ed6b11afe40fa73e12a9
406 changeset: 13:7a4785234d87ec1aa420ed6b11afe40fa73e12a9
407 tag: tip
407 tag: tip
408 phase: draft
408 phase: draft
409 parent: 12:b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f
409 parent: 12:b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f
410 parent: -1:0000000000000000000000000000000000000000
410 parent: -1:0000000000000000000000000000000000000000
411 manifest: 13:dc313617b8c32457c0d589e0dbbedfe71f3cd637
411 manifest: 13:dc313617b8c32457c0d589e0dbbedfe71f3cd637
412 user: foo
412 user: foo
413 date: Thu Jan 01 00:00:00 1970 +0000
413 date: Thu Jan 01 00:00:00 1970 +0000
414 files+: b
414 files+: b
415 files-: a
415 files-: a
416 extra: branch=default
416 extra: branch=default
417 extra: intermediate-source=ef0ef43d49e79e81ddafdc7997401ba0041efc82
417 extra: intermediate-source=ef0ef43d49e79e81ddafdc7997401ba0041efc82
418 extra: source=5c095ad7e90f871700f02dd1fa5012cb4498a2d4
418 extra: source=5c095ad7e90f871700f02dd1fa5012cb4498a2d4
419 description:
419 description:
420 2
420 2
421
421
422
422
423 Disallow grafting an already grafted cset onto its original branch
423 Disallow grafting an already grafted cset onto its original branch
424 $ hg up -q 6
424 $ hg up -q 6
425 $ hg graft 7
425 $ hg graft 7
426 skipping already grafted revision 7:ef0ef43d49e7 (was grafted from 2:5c095ad7e90f)
426 skipping already grafted revision 7:ef0ef43d49e7 (was grafted from 2:5c095ad7e90f)
427 [255]
427 [255]
428
428
429 $ hg pdiff --config extensions.extdiff= --patch -r 2 -r 13
429 $ hg pdiff --config extensions.extdiff= --patch -r 2 -r 13
430 --- */hg-5c095ad7e90f.patch * (glob)
430 --- */hg-5c095ad7e90f.patch * (glob)
431 +++ */hg-7a4785234d87.patch * (glob)
431 +++ */hg-7a4785234d87.patch * (glob)
432 @@ -1,18 +1,18 @@
432 @@ -1,18 +1,18 @@
433 # HG changeset patch
433 # HG changeset patch
434 -# User test
434 -# User test
435 +# User foo
435 +# User foo
436 # Date 0 0
436 # Date 0 0
437 # Thu Jan 01 00:00:00 1970 +0000
437 # Thu Jan 01 00:00:00 1970 +0000
438 -# Node ID 5c095ad7e90f871700f02dd1fa5012cb4498a2d4
438 -# Node ID 5c095ad7e90f871700f02dd1fa5012cb4498a2d4
439 -# Parent 5d205f8b35b66bc36375c9534ffd3237730e8f04
439 -# Parent 5d205f8b35b66bc36375c9534ffd3237730e8f04
440 +# Node ID 7a4785234d87ec1aa420ed6b11afe40fa73e12a9
440 +# Node ID 7a4785234d87ec1aa420ed6b11afe40fa73e12a9
441 +# Parent b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f
441 +# Parent b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f
442 2
442 2
443
443
444 -diff -r 5d205f8b35b6 -r 5c095ad7e90f a
444 -diff -r 5d205f8b35b6 -r 5c095ad7e90f a
445 +diff -r b592ea63bb0c -r 7a4785234d87 a
445 +diff -r b592ea63bb0c -r 7a4785234d87 a
446 --- a/a Thu Jan 01 00:00:00 1970 +0000
446 --- a/a Thu Jan 01 00:00:00 1970 +0000
447 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
447 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
448 @@ -1,1 +0,0 @@
448 @@ -1,1 +0,0 @@
449 --b
449 --b
450 -diff -r 5d205f8b35b6 -r 5c095ad7e90f b
450 -diff -r 5d205f8b35b6 -r 5c095ad7e90f b
451 +-a
451 +-a
452 +diff -r b592ea63bb0c -r 7a4785234d87 b
452 +diff -r b592ea63bb0c -r 7a4785234d87 b
453 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
453 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
454 +++ b/b Thu Jan 01 00:00:00 1970 +0000
454 +++ b/b Thu Jan 01 00:00:00 1970 +0000
455 @@ -0,0 +1,1 @@
455 @@ -0,0 +1,1 @@
456 -+b
456 -+b
457 ++a
457 ++a
458 [1]
458 [1]
459
459
460 $ hg pdiff --config extensions.extdiff= --patch -r 2 -r 13 -X .
460 $ hg pdiff --config extensions.extdiff= --patch -r 2 -r 13 -X .
461 --- */hg-5c095ad7e90f.patch * (glob)
461 --- */hg-5c095ad7e90f.patch * (glob)
462 +++ */hg-7a4785234d87.patch * (glob)
462 +++ */hg-7a4785234d87.patch * (glob)
463 @@ -1,8 +1,8 @@
463 @@ -1,8 +1,8 @@
464 # HG changeset patch
464 # HG changeset patch
465 -# User test
465 -# User test
466 +# User foo
466 +# User foo
467 # Date 0 0
467 # Date 0 0
468 # Thu Jan 01 00:00:00 1970 +0000
468 # Thu Jan 01 00:00:00 1970 +0000
469 -# Node ID 5c095ad7e90f871700f02dd1fa5012cb4498a2d4
469 -# Node ID 5c095ad7e90f871700f02dd1fa5012cb4498a2d4
470 -# Parent 5d205f8b35b66bc36375c9534ffd3237730e8f04
470 -# Parent 5d205f8b35b66bc36375c9534ffd3237730e8f04
471 +# Node ID 7a4785234d87ec1aa420ed6b11afe40fa73e12a9
471 +# Node ID 7a4785234d87ec1aa420ed6b11afe40fa73e12a9
472 +# Parent b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f
472 +# Parent b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f
473 2
473 2
474
474
475 [1]
475 [1]
476
476
477 Disallow grafting already grafted csets with the same origin onto each other
477 Disallow grafting already grafted csets with the same origin onto each other
478 $ hg up -q 13
478 $ hg up -q 13
479 $ hg graft 2
479 $ hg graft 2
480 skipping revision 2:5c095ad7e90f (already grafted to 13:7a4785234d87)
480 skipping revision 2:5c095ad7e90f (already grafted to 13:7a4785234d87)
481 [255]
481 [255]
482 $ hg graft 7
482 $ hg graft 7
483 skipping already grafted revision 7:ef0ef43d49e7 (13:7a4785234d87 also has origin 2:5c095ad7e90f)
483 skipping already grafted revision 7:ef0ef43d49e7 (13:7a4785234d87 also has origin 2:5c095ad7e90f)
484 [255]
484 [255]
485
485
486 $ hg up -q 7
486 $ hg up -q 7
487 $ hg graft 2
487 $ hg graft 2
488 skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7)
488 skipping revision 2:5c095ad7e90f (already grafted to 7:ef0ef43d49e7)
489 [255]
489 [255]
490 $ hg graft tip
490 $ hg graft tip
491 skipping already grafted revision 13:7a4785234d87 (7:ef0ef43d49e7 also has origin 2:5c095ad7e90f)
491 skipping already grafted revision 13:7a4785234d87 (7:ef0ef43d49e7 also has origin 2:5c095ad7e90f)
492 [255]
492 [255]
493
493
494 Graft with --log
494 Graft with --log
495
495
496 $ hg up -Cq 1
496 $ hg up -Cq 1
497 $ hg graft 3 --log -u foo
497 $ hg graft 3 --log -u foo
498 grafting 3:4c60f11aa304 "3"
498 grafting 3:4c60f11aa304 "3"
499 $ hg log --template '{rev}:{node|short} {parents} {desc}\n' -r tip
499 $ hg log --template '{rev}:{node|short} {parents} {desc}\n' -r tip
500 14:0c921c65ef1e 1:5d205f8b35b6 3
500 14:0c921c65ef1e 1:5d205f8b35b6 3
501 (grafted from 4c60f11aa304a54ae1c199feb94e7fc771e51ed8)
501 (grafted from 4c60f11aa304a54ae1c199feb94e7fc771e51ed8)
502
502
503 Resolve conflicted graft
503 Resolve conflicted graft
504 $ hg up -q 0
504 $ hg up -q 0
505 $ echo b > a
505 $ echo b > a
506 $ hg ci -m 8
506 $ hg ci -m 8
507 created new head
507 created new head
508 $ echo c > a
508 $ echo c > a
509 $ hg ci -m 9
509 $ hg ci -m 9
510 $ hg graft 1 --tool internal:fail
510 $ hg graft 1 --tool internal:fail
511 grafting 1:5d205f8b35b6 "1"
511 grafting 1:5d205f8b35b6 "1"
512 abort: unresolved conflicts, can't continue
512 abort: unresolved conflicts, can't continue
513 (use 'hg resolve' and 'hg graft --continue')
513 (use 'hg resolve' and 'hg graft --continue')
514 [1]
514 [1]
515 $ hg resolve --all
515 $ hg resolve --all
516 merging a
516 merging a
517 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
517 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
518 [1]
518 [1]
519 $ cat a
519 $ cat a
520 <<<<<<< local: aaa4406d4f0a - test: 9
520 <<<<<<< local: aaa4406d4f0a - test: 9
521 c
521 c
522 =======
522 =======
523 b
523 b
524 >>>>>>> graft: 5d205f8b35b6 - bar: 1
524 >>>>>>> graft: 5d205f8b35b6 - bar: 1
525 $ echo b > a
525 $ echo b > a
526 $ hg resolve -m a
526 $ hg resolve -m a
527 (no more unresolved files)
527 (no more unresolved files)
528 continue: hg graft --continue
528 continue: hg graft --continue
529 $ hg graft -c
529 $ hg graft -c
530 grafting 1:5d205f8b35b6 "1"
530 grafting 1:5d205f8b35b6 "1"
531 $ hg export tip --git
531 $ hg export tip --git
532 # HG changeset patch
532 # HG changeset patch
533 # User bar
533 # User bar
534 # Date 0 0
534 # Date 0 0
535 # Thu Jan 01 00:00:00 1970 +0000
535 # Thu Jan 01 00:00:00 1970 +0000
536 # Node ID f67661df0c4804d301f064f332b57e7d5ddaf2be
536 # Node ID f67661df0c4804d301f064f332b57e7d5ddaf2be
537 # Parent aaa4406d4f0ae9befd6e58c82ec63706460cbca6
537 # Parent aaa4406d4f0ae9befd6e58c82ec63706460cbca6
538 1
538 1
539
539
540 diff --git a/a b/a
540 diff --git a/a b/a
541 --- a/a
541 --- a/a
542 +++ b/a
542 +++ b/a
543 @@ -1,1 +1,1 @@
543 @@ -1,1 +1,1 @@
544 -c
544 -c
545 +b
545 +b
546
546
547 Resolve conflicted graft with rename
547 Resolve conflicted graft with rename
548 $ echo c > a
548 $ echo c > a
549 $ hg ci -m 10
549 $ hg ci -m 10
550 $ hg graft 2 --tool internal:fail
550 $ hg graft 2 --tool internal:fail
551 grafting 2:5c095ad7e90f "2"
551 grafting 2:5c095ad7e90f "2"
552 abort: unresolved conflicts, can't continue
552 abort: unresolved conflicts, can't continue
553 (use 'hg resolve' and 'hg graft --continue')
553 (use 'hg resolve' and 'hg graft --continue')
554 [1]
554 [1]
555 $ hg resolve --all
555 $ hg resolve --all
556 merging a and b to b
556 merging a and b to b
557 (no more unresolved files)
557 (no more unresolved files)
558 continue: hg graft --continue
558 continue: hg graft --continue
559 $ hg graft -c
559 $ hg graft -c
560 grafting 2:5c095ad7e90f "2"
560 grafting 2:5c095ad7e90f "2"
561 $ hg export tip --git
561 $ hg export tip --git
562 # HG changeset patch
562 # HG changeset patch
563 # User test
563 # User test
564 # Date 0 0
564 # Date 0 0
565 # Thu Jan 01 00:00:00 1970 +0000
565 # Thu Jan 01 00:00:00 1970 +0000
566 # Node ID 9627f653b421c61fc1ea4c4e366745070fa3d2bc
566 # Node ID 9627f653b421c61fc1ea4c4e366745070fa3d2bc
567 # Parent ee295f490a40b97f3d18dd4c4f1c8936c233b612
567 # Parent ee295f490a40b97f3d18dd4c4f1c8936c233b612
568 2
568 2
569
569
570 diff --git a/a b/b
570 diff --git a/a b/b
571 rename from a
571 rename from a
572 rename to b
572 rename to b
573
573
574 Test simple origin(), with and without args
574 Test simple origin(), with and without args
575 $ hg log -r 'origin()'
575 $ hg log -r 'origin()'
576 changeset: 1:5d205f8b35b6
576 changeset: 1:5d205f8b35b6
577 user: bar
577 user: bar
578 date: Thu Jan 01 00:00:00 1970 +0000
578 date: Thu Jan 01 00:00:00 1970 +0000
579 summary: 1
579 summary: 1
580
580
581 changeset: 2:5c095ad7e90f
581 changeset: 2:5c095ad7e90f
582 user: test
582 user: test
583 date: Thu Jan 01 00:00:00 1970 +0000
583 date: Thu Jan 01 00:00:00 1970 +0000
584 summary: 2
584 summary: 2
585
585
586 changeset: 3:4c60f11aa304
586 changeset: 3:4c60f11aa304
587 user: baz
587 user: baz
588 date: Thu Jan 01 00:00:00 1970 +0000
588 date: Thu Jan 01 00:00:00 1970 +0000
589 summary: 3
589 summary: 3
590
590
591 changeset: 4:9c233e8e184d
591 changeset: 4:9c233e8e184d
592 user: test
592 user: test
593 date: Thu Jan 01 00:00:00 1970 +0000
593 date: Thu Jan 01 00:00:00 1970 +0000
594 summary: 4
594 summary: 4
595
595
596 changeset: 5:97f8bfe72746
596 changeset: 5:97f8bfe72746
597 branch: stable
597 branch: stable
598 parent: 3:4c60f11aa304
598 parent: 3:4c60f11aa304
599 user: test
599 user: test
600 date: Thu Jan 01 00:00:00 1970 +0000
600 date: Thu Jan 01 00:00:00 1970 +0000
601 summary: 5
601 summary: 5
602
602
603 $ hg log -r 'origin(7)'
603 $ hg log -r 'origin(7)'
604 changeset: 2:5c095ad7e90f
604 changeset: 2:5c095ad7e90f
605 user: test
605 user: test
606 date: Thu Jan 01 00:00:00 1970 +0000
606 date: Thu Jan 01 00:00:00 1970 +0000
607 summary: 2
607 summary: 2
608
608
609 Now transplant a graft to test following through copies
609 Now transplant a graft to test following through copies
610 $ hg up -q 0
610 $ hg up -q 0
611 $ hg branch -q dev
611 $ hg branch -q dev
612 $ hg ci -qm "dev branch"
612 $ hg ci -qm "dev branch"
613 $ hg --config extensions.transplant= transplant -q 7
613 $ hg --config extensions.transplant= transplant -q 7
614 $ hg log -r 'origin(.)'
614 $ hg log -r 'origin(.)'
615 changeset: 2:5c095ad7e90f
615 changeset: 2:5c095ad7e90f
616 user: test
616 user: test
617 date: Thu Jan 01 00:00:00 1970 +0000
617 date: Thu Jan 01 00:00:00 1970 +0000
618 summary: 2
618 summary: 2
619
619
620 Test that the graft and transplant markers in extra are converted, allowing
620 Test that the graft and transplant markers in extra are converted, allowing
621 origin() to still work. Note that these recheck the immediately preceeding two
621 origin() to still work. Note that these recheck the immediately preceeding two
622 tests.
622 tests.
623 $ hg --quiet --config extensions.convert= --config convert.hg.saverev=True convert . ../converted
623 $ hg --quiet --config extensions.convert= --config convert.hg.saverev=True convert . ../converted
624
624
625 The graft case
625 The graft case
626 $ hg -R ../converted log -r 7 --template "{rev}: {node}\n{join(extras, '\n')}\n"
626 $ hg -R ../converted log -r 7 --template "{rev}: {node}\n{join(extras, '\n')}\n"
627 7: 7ae846e9111fc8f57745634250c7b9ac0a60689b
627 7: 7ae846e9111fc8f57745634250c7b9ac0a60689b
628 branch=default
628 branch=default
629 convert_revision=ef0ef43d49e79e81ddafdc7997401ba0041efc82
629 convert_revision=ef0ef43d49e79e81ddafdc7997401ba0041efc82
630 source=e0213322b2c1a5d5d236c74e79666441bee67a7d
630 source=e0213322b2c1a5d5d236c74e79666441bee67a7d
631 $ hg -R ../converted log -r 'origin(7)'
631 $ hg -R ../converted log -r 'origin(7)'
632 changeset: 2:e0213322b2c1
632 changeset: 2:e0213322b2c1
633 user: test
633 user: test
634 date: Thu Jan 01 00:00:00 1970 +0000
634 date: Thu Jan 01 00:00:00 1970 +0000
635 summary: 2
635 summary: 2
636
636
637 Test that template correctly expands more than one 'extra' (issue4362), and that
637 Test that template correctly expands more than one 'extra' (issue4362), and that
638 'intermediate-source' is converted.
638 'intermediate-source' is converted.
639 $ hg -R ../converted log -r 13 --template "{extras % ' Extra: {extra}\n'}"
639 $ hg -R ../converted log -r 13 --template "{extras % ' Extra: {extra}\n'}"
640 Extra: branch=default
640 Extra: branch=default
641 Extra: convert_revision=7a4785234d87ec1aa420ed6b11afe40fa73e12a9
641 Extra: convert_revision=7a4785234d87ec1aa420ed6b11afe40fa73e12a9
642 Extra: intermediate-source=7ae846e9111fc8f57745634250c7b9ac0a60689b
642 Extra: intermediate-source=7ae846e9111fc8f57745634250c7b9ac0a60689b
643 Extra: source=e0213322b2c1a5d5d236c74e79666441bee67a7d
643 Extra: source=e0213322b2c1a5d5d236c74e79666441bee67a7d
644
644
645 The transplant case
645 The transplant case
646 $ hg -R ../converted log -r tip --template "{rev}: {node}\n{join(extras, '\n')}\n"
646 $ hg -R ../converted log -r tip --template "{rev}: {node}\n{join(extras, '\n')}\n"
647 21: fbb6c5cc81002f2b4b49c9d731404688bcae5ade
647 21: fbb6c5cc81002f2b4b49c9d731404688bcae5ade
648 branch=dev
648 branch=dev
649 convert_revision=7e61b508e709a11d28194a5359bc3532d910af21
649 convert_revision=7e61b508e709a11d28194a5359bc3532d910af21
650 transplant_source=z\xe8F\xe9\x11\x1f\xc8\xf5wEcBP\xc7\xb9\xac\n`h\x9b
650 transplant_source=z\xe8F\xe9\x11\x1f\xc8\xf5wEcBP\xc7\xb9\xac\n`h\x9b
651 $ hg -R ../converted log -r 'origin(tip)'
651 $ hg -R ../converted log -r 'origin(tip)'
652 changeset: 2:e0213322b2c1
652 changeset: 2:e0213322b2c1
653 user: test
653 user: test
654 date: Thu Jan 01 00:00:00 1970 +0000
654 date: Thu Jan 01 00:00:00 1970 +0000
655 summary: 2
655 summary: 2
656
656
657
657
658 Test simple destination
658 Test simple destination
659 $ hg log -r 'destination()'
659 $ hg log -r 'destination()'
660 changeset: 7:ef0ef43d49e7
660 changeset: 7:ef0ef43d49e7
661 parent: 0:68795b066622
661 parent: 0:68795b066622
662 user: foo
662 user: foo
663 date: Thu Jan 01 00:00:00 1970 +0000
663 date: Thu Jan 01 00:00:00 1970 +0000
664 summary: 2
664 summary: 2
665
665
666 changeset: 8:6b9e5368ca4e
666 changeset: 8:6b9e5368ca4e
667 user: bar
667 user: bar
668 date: Thu Jan 01 00:00:00 1970 +0000
668 date: Thu Jan 01 00:00:00 1970 +0000
669 summary: 1
669 summary: 1
670
670
671 changeset: 9:1905859650ec
671 changeset: 9:1905859650ec
672 user: test
672 user: test
673 date: Thu Jan 01 00:00:00 1970 +0000
673 date: Thu Jan 01 00:00:00 1970 +0000
674 summary: 5
674 summary: 5
675
675
676 changeset: 10:52dc0b4c6907
676 changeset: 10:52dc0b4c6907
677 user: test
677 user: test
678 date: Thu Jan 01 00:00:00 1970 +0000
678 date: Thu Jan 01 00:00:00 1970 +0000
679 summary: 4
679 summary: 4
680
680
681 changeset: 11:882b35362a6b
681 changeset: 11:882b35362a6b
682 user: test
682 user: test
683 date: Thu Jan 01 00:00:00 1970 +0000
683 date: Thu Jan 01 00:00:00 1970 +0000
684 summary: 3
684 summary: 3
685
685
686 changeset: 13:7a4785234d87
686 changeset: 13:7a4785234d87
687 user: foo
687 user: foo
688 date: Thu Jan 01 00:00:00 1970 +0000
688 date: Thu Jan 01 00:00:00 1970 +0000
689 summary: 2
689 summary: 2
690
690
691 changeset: 14:0c921c65ef1e
691 changeset: 14:0c921c65ef1e
692 parent: 1:5d205f8b35b6
692 parent: 1:5d205f8b35b6
693 user: foo
693 user: foo
694 date: Thu Jan 01 00:00:00 1970 +0000
694 date: Thu Jan 01 00:00:00 1970 +0000
695 summary: 3
695 summary: 3
696
696
697 changeset: 17:f67661df0c48
697 changeset: 17:f67661df0c48
698 user: bar
698 user: bar
699 date: Thu Jan 01 00:00:00 1970 +0000
699 date: Thu Jan 01 00:00:00 1970 +0000
700 summary: 1
700 summary: 1
701
701
702 changeset: 19:9627f653b421
702 changeset: 19:9627f653b421
703 user: test
703 user: test
704 date: Thu Jan 01 00:00:00 1970 +0000
704 date: Thu Jan 01 00:00:00 1970 +0000
705 summary: 2
705 summary: 2
706
706
707 changeset: 21:7e61b508e709
707 changeset: 21:7e61b508e709
708 branch: dev
708 branch: dev
709 tag: tip
709 tag: tip
710 user: foo
710 user: foo
711 date: Thu Jan 01 00:00:00 1970 +0000
711 date: Thu Jan 01 00:00:00 1970 +0000
712 summary: 2
712 summary: 2
713
713
714 $ hg log -r 'destination(2)'
714 $ hg log -r 'destination(2)'
715 changeset: 7:ef0ef43d49e7
715 changeset: 7:ef0ef43d49e7
716 parent: 0:68795b066622
716 parent: 0:68795b066622
717 user: foo
717 user: foo
718 date: Thu Jan 01 00:00:00 1970 +0000
718 date: Thu Jan 01 00:00:00 1970 +0000
719 summary: 2
719 summary: 2
720
720
721 changeset: 13:7a4785234d87
721 changeset: 13:7a4785234d87
722 user: foo
722 user: foo
723 date: Thu Jan 01 00:00:00 1970 +0000
723 date: Thu Jan 01 00:00:00 1970 +0000
724 summary: 2
724 summary: 2
725
725
726 changeset: 19:9627f653b421
726 changeset: 19:9627f653b421
727 user: test
727 user: test
728 date: Thu Jan 01 00:00:00 1970 +0000
728 date: Thu Jan 01 00:00:00 1970 +0000
729 summary: 2
729 summary: 2
730
730
731 changeset: 21:7e61b508e709
731 changeset: 21:7e61b508e709
732 branch: dev
732 branch: dev
733 tag: tip
733 tag: tip
734 user: foo
734 user: foo
735 date: Thu Jan 01 00:00:00 1970 +0000
735 date: Thu Jan 01 00:00:00 1970 +0000
736 summary: 2
736 summary: 2
737
737
738 Transplants of grafts can find a destination...
738 Transplants of grafts can find a destination...
739 $ hg log -r 'destination(7)'
739 $ hg log -r 'destination(7)'
740 changeset: 21:7e61b508e709
740 changeset: 21:7e61b508e709
741 branch: dev
741 branch: dev
742 tag: tip
742 tag: tip
743 user: foo
743 user: foo
744 date: Thu Jan 01 00:00:00 1970 +0000
744 date: Thu Jan 01 00:00:00 1970 +0000
745 summary: 2
745 summary: 2
746
746
747 ... grafts of grafts unfortunately can't
747 ... grafts of grafts unfortunately can't
748 $ hg graft -q 13 --debug
748 $ hg graft -q 13 --debug
749 scanning for duplicate grafts
749 scanning for duplicate grafts
750 grafting 13:7a4785234d87 "2"
750 grafting 13:7a4785234d87 "2"
751 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
751 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
752 on local side:
752 on local side:
753 src: 'a' -> dst: 'b' *
753 src: 'a' -> dst: 'b' *
754 on remote side:
754 on remote side:
755 src: 'a' -> dst: 'b' *
755 src: 'a' -> dst: 'b' *
756 checking for directory renames
756 checking for directory renames
757 resolving manifests
757 resolving manifests
758 branchmerge: True, force: True, partial: False
758 branchmerge: True, force: True, partial: False
759 ancestor: b592ea63bb0c, local: 7e61b508e709+, remote: 7a4785234d87
759 ancestor: b592ea63bb0c, local: 7e61b508e709+, remote: 7a4785234d87
760 starting 4 threads for background file closing (?)
760 starting 4 threads for background file closing (?)
761 nothing to commit, clearing merge state
761 nothing to commit, clearing merge state
762 note: graft of 13:7a4785234d87 created no changes to commit
762 note: graft of 13:7a4785234d87 created no changes to commit
763 $ hg log -r 'destination(13)'
763 $ hg log -r 'destination(13)'
764 All copies of a cset
764 All copies of a cset
765 $ hg log -r 'origin(13) or destination(origin(13))'
765 $ hg log -r 'origin(13) or destination(origin(13))'
766 changeset: 2:5c095ad7e90f
766 changeset: 2:5c095ad7e90f
767 user: test
767 user: test
768 date: Thu Jan 01 00:00:00 1970 +0000
768 date: Thu Jan 01 00:00:00 1970 +0000
769 summary: 2
769 summary: 2
770
770
771 changeset: 7:ef0ef43d49e7
771 changeset: 7:ef0ef43d49e7
772 parent: 0:68795b066622
772 parent: 0:68795b066622
773 user: foo
773 user: foo
774 date: Thu Jan 01 00:00:00 1970 +0000
774 date: Thu Jan 01 00:00:00 1970 +0000
775 summary: 2
775 summary: 2
776
776
777 changeset: 13:7a4785234d87
777 changeset: 13:7a4785234d87
778 user: foo
778 user: foo
779 date: Thu Jan 01 00:00:00 1970 +0000
779 date: Thu Jan 01 00:00:00 1970 +0000
780 summary: 2
780 summary: 2
781
781
782 changeset: 19:9627f653b421
782 changeset: 19:9627f653b421
783 user: test
783 user: test
784 date: Thu Jan 01 00:00:00 1970 +0000
784 date: Thu Jan 01 00:00:00 1970 +0000
785 summary: 2
785 summary: 2
786
786
787 changeset: 21:7e61b508e709
787 changeset: 21:7e61b508e709
788 branch: dev
788 branch: dev
789 tag: tip
789 tag: tip
790 user: foo
790 user: foo
791 date: Thu Jan 01 00:00:00 1970 +0000
791 date: Thu Jan 01 00:00:00 1970 +0000
792 summary: 2
792 summary: 2
793
793
794
794
795 graft skips ancestors
795 graft skips ancestors
796
796
797 $ hg graft 21 3
797 $ hg graft 21 3
798 skipping ancestor revision 21:7e61b508e709
798 skipping ancestor revision 21:7e61b508e709
799 grafting 3:4c60f11aa304 "3"
799 grafting 3:4c60f11aa304 "3"
800 merging b and c to c
800 merging b and c to c
801
801
802 graft with --force (still doesn't graft merges)
802 graft with --force (still doesn't graft merges)
803
803
804 $ hg graft 19 0 6
804 $ hg graft 19 0 6
805 skipping ungraftable merge revision 6
805 skipping ungraftable merge revision 6
806 skipping ancestor revision 0:68795b066622
806 skipping ancestor revision 0:68795b066622
807 grafting 19:9627f653b421 "2"
807 grafting 19:9627f653b421 "2"
808 merging b
808 merging b
809 note: graft of 19:9627f653b421 created no changes to commit
809 note: graft of 19:9627f653b421 created no changes to commit
810 $ hg graft 19 0 6 --force
810 $ hg graft 19 0 6 --force
811 skipping ungraftable merge revision 6
811 skipping ungraftable merge revision 6
812 grafting 19:9627f653b421 "2"
812 grafting 19:9627f653b421 "2"
813 merging b
813 merging b
814 note: graft of 19:9627f653b421 created no changes to commit
814 note: graft of 19:9627f653b421 created no changes to commit
815 grafting 0:68795b066622 "0"
815 grafting 0:68795b066622 "0"
816
816
817 graft --force after backout. Do the backout with graft too, to make
817 graft --force after backout. Do the backout with graft too, to make
818 sure we support issue6248.
818 sure we support issue6248.
819
819
820 $ echo abc > a
820 $ echo abc > a
821 $ hg ci -m 24
821 $ hg ci -m 24
822 $ hg graft --base . -r ".^" --no-commit
822 $ hg graft --base . -r ".^" --no-commit
823 grafting 23:b1cac6de36a9 "0"
823 grafting 23:b1cac6de36a9 "0"
824 $ hg commit -m 'Backed out changeset 2e7ea477be26'
824 $ hg commit -m 'Backed out changeset 2e7ea477be26'
825 $ hg graft 24
825 $ hg graft 24
826 skipping ancestor revision 24:2e7ea477be26
826 skipping ancestor revision 24:2e7ea477be26
827 [255]
827 [255]
828 $ hg graft 24 --force
828 $ hg graft 24 --force
829 grafting 24:2e7ea477be26 "24"
829 grafting 24:2e7ea477be26 "24"
830 merging a
830 merging a
831 $ cat a
831 $ cat a
832 abc
832 abc
833
833
834 graft --continue after --force
834 graft --continue after --force
835
835
836 $ echo def > a
836 $ echo def > a
837 $ hg ci -m 27
837 $ hg ci -m 27
838 $ hg graft 24 --force --tool internal:fail
838 $ hg graft 24 --force --tool internal:fail
839 grafting 24:2e7ea477be26 "24"
839 grafting 24:2e7ea477be26 "24"
840 abort: unresolved conflicts, can't continue
840 abort: unresolved conflicts, can't continue
841 (use 'hg resolve' and 'hg graft --continue')
841 (use 'hg resolve' and 'hg graft --continue')
842 [1]
842 [1]
843 $ hg resolve --all
843 $ hg resolve --all
844 merging a
844 merging a
845 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
845 warning: conflicts while merging a! (edit, then use 'hg resolve --mark')
846 [1]
846 [1]
847 $ echo abc > a
847 $ echo abc > a
848 $ hg resolve -m a
848 $ hg resolve -m a
849 (no more unresolved files)
849 (no more unresolved files)
850 continue: hg graft --continue
850 continue: hg graft --continue
851 $ hg graft -c
851 $ hg graft -c
852 grafting 24:2e7ea477be26 "24"
852 grafting 24:2e7ea477be26 "24"
853 $ cat a
853 $ cat a
854 abc
854 abc
855
855
856 graft --continue after --base with conflits
856 graft --continue after --base with conflits
857
857
858 $ echo base > d
858 $ echo base > d
859 $ hg ci -m _
859 $ hg ci -m _
860 $ hg graft -r 6
860 $ hg graft -r 6
861 skipping ungraftable merge revision 6
861 skipping ungraftable merge revision 6
862 [255]
862 [255]
863 $ hg graft -r 6 --base 5
863 $ hg graft -r 6 --base 5
864 grafting 6:25a2b029d3ae "6"
864 grafting 6:25a2b029d3ae "6"
865 merging d
865 merging d
866 merging e
866 merging e
867 warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
867 warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
868 abort: unresolved conflicts, can't continue
868 abort: unresolved conflicts, can't continue
869 (use 'hg resolve' and 'hg graft --continue')
869 (use 'hg resolve' and 'hg graft --continue')
870 [1]
870 [1]
871 $ echo a > d && hg resolve -qm
871 $ echo a > d && hg resolve -qm
872 continue: hg graft --continue
872 continue: hg graft --continue
873 $ hg graft --continue
873 $ hg graft --continue
874 grafting 6:25a2b029d3ae "6"
874 grafting 6:25a2b029d3ae "6"
875
875
876 Continue testing same origin policy, using revision numbers from test above
876 Continue testing same origin policy, using revision numbers from test above
877 but do some destructive editing of the repo:
877 but do some destructive editing of the repo:
878
878
879 $ hg up -qC 7
879 $ hg up -qC 7
880 $ hg tag -l -r 13 tmp
880 $ hg tag -l -r 13 tmp
881 $ hg --config extensions.strip= strip 2
881 $ hg --config extensions.strip= strip 2
882 saved backup bundle to $TESTTMP/a/.hg/strip-backup/5c095ad7e90f-d323a1e4-backup.hg
882 saved backup bundle to $TESTTMP/a/.hg/strip-backup/5c095ad7e90f-d323a1e4-backup.hg
883 $ hg graft tmp
883 $ hg graft tmp
884 skipping already grafted revision 8:7a4785234d87 (2:ef0ef43d49e7 also has unknown origin 5c095ad7e90f)
884 skipping already grafted revision 8:7a4785234d87 (2:ef0ef43d49e7 also has unknown origin 5c095ad7e90f)
885 [255]
885 [255]
886
886
887 Empty graft
887 Empty graft
888
888
889 $ hg up -qr 22
889 $ hg up -qr 22
890 $ hg tag -f something
890 $ hg tag -f something
891 $ hg graft -qr 23
891 $ hg graft -qr 23
892 $ hg graft -f 23
892 $ hg graft -f 23
893 grafting 23:72d9c7c75bcc "24"
893 grafting 23:72d9c7c75bcc "24"
894 note: graft of 23:72d9c7c75bcc created no changes to commit
894 note: graft of 23:72d9c7c75bcc created no changes to commit
895
895
896 $ cd ..
896 $ cd ..
897
897
898 Graft to duplicate a commit
898 Graft to duplicate a commit
899
899
900 $ hg init graftsibling
900 $ hg init graftsibling
901 $ cd graftsibling
901 $ cd graftsibling
902 $ touch a
902 $ touch a
903 $ hg commit -qAm a
903 $ hg commit -qAm a
904 $ touch b
904 $ touch b
905 $ hg commit -qAm b
905 $ hg commit -qAm b
906 $ hg log -G -T '{rev}\n'
906 $ hg log -G -T '{rev}\n'
907 @ 1
907 @ 1
908 |
908 |
909 o 0
909 o 0
910
910
911 $ hg up -q 0
911 $ hg up -q 0
912 $ hg graft -r 1
912 $ hg graft -r 1
913 grafting 1:0e067c57feba "b" (tip)
913 grafting 1:0e067c57feba "b" (tip)
914 $ hg log -G -T '{rev}\n'
914 $ hg log -G -T '{rev}\n'
915 @ 2
915 @ 2
916 |
916 |
917 | o 1
917 | o 1
918 |/
918 |/
919 o 0
919 o 0
920
920
921 Graft to duplicate a commit twice
921 Graft to duplicate a commit twice
922
922
923 $ hg up -q 0
923 $ hg up -q 0
924 $ hg graft -r 2
924 $ hg graft -r 2
925 grafting 2:044ec77f6389 "b" (tip)
925 grafting 2:044ec77f6389 "b" (tip)
926 $ hg log -G -T '{rev}\n'
926 $ hg log -G -T '{rev}\n'
927 @ 3
927 @ 3
928 |
928 |
929 | o 2
929 | o 2
930 |/
930 |/
931 | o 1
931 | o 1
932 |/
932 |/
933 o 0
933 o 0
934
934
@@ -1,99 +1,99 b''
1 https://bz.mercurial-scm.org/672
1 https://bz.mercurial-scm.org/672
2
2
3 # 0-2-4
3 # 0-2-4
4 # \ \ \
4 # \ \ \
5 # 1-3-5
5 # 1-3-5
6 #
6 #
7 # rename in #1, content change in #4.
7 # rename in #1, content change in #4.
8
8
9 $ hg init
9 $ hg init
10
10
11 $ touch 1
11 $ touch 1
12 $ touch 2
12 $ touch 2
13 $ hg commit -Am init # 0
13 $ hg commit -Am init # 0
14 adding 1
14 adding 1
15 adding 2
15 adding 2
16
16
17 $ hg rename 1 1a
17 $ hg rename 1 1a
18 $ hg commit -m rename # 1
18 $ hg commit -m rename # 1
19
19
20 $ hg co -C 0
20 $ hg co -C 0
21 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
21 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
22
22
23 $ echo unrelated >> 2
23 $ echo unrelated >> 2
24 $ hg ci -m unrelated1 # 2
24 $ hg ci -m unrelated1 # 2
25 created new head
25 created new head
26
26
27 $ hg merge --debug 1
27 $ hg merge --debug 1
28 unmatched files in other:
28 unmatched files in other:
29 1a
29 1a
30 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
30 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
31 on remote side:
31 on remote side:
32 src: '1' -> dst: '1a'
32 src: '1' -> dst: '1a'
33 checking for directory renames
33 checking for directory renames
34 resolving manifests
34 resolving manifests
35 branchmerge: True, force: False, partial: False
35 branchmerge: True, force: False, partial: False
36 ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a
36 ancestor: 81f4b099af3d, local: c64f439569a9+, remote: c12dcd37c90a
37 1: other deleted -> r
37 1: other deleted -> r
38 removing 1
38 removing 1
39 1a: remote created -> g
39 1a: remote created -> g
40 getting 1a
40 getting 1a
41 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
41 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
42 (branch merge, don't forget to commit)
42 (branch merge, don't forget to commit)
43
43
44 $ hg ci -m merge1 # 3
44 $ hg ci -m merge1 # 3
45
45
46 $ hg co -C 2
46 $ hg co -C 2
47 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
47 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
48
48
49 $ echo hello >> 1
49 $ echo hello >> 1
50 $ hg ci -m unrelated2 # 4
50 $ hg ci -m unrelated2 # 4
51 created new head
51 created new head
52
52
53 $ hg co -C 3
53 $ hg co -C 3
54 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
54 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
55
55
56 $ hg merge -y --debug 4
56 $ hg merge -y --debug 4
57 unmatched files in local:
57 unmatched files in local:
58 1a
58 1a
59 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
59 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
60 on local side:
60 on local side:
61 src: '1' -> dst: '1a' *
61 src: '1' -> dst: '1a' *
62 checking for directory renames
62 checking for directory renames
63 resolving manifests
63 resolving manifests
64 branchmerge: True, force: False, partial: False
64 branchmerge: True, force: False, partial: False
65 ancestor: c64f439569a9, local: f4a9cff3cd0b+, remote: 746e9549ea96
65 ancestor: c64f439569a9, local: f4a9cff3cd0b+, remote: 746e9549ea96
66 starting 4 threads for background file closing (?)
66 preserving 1a for resolve of 1a
67 preserving 1a for resolve of 1a
67 starting 4 threads for background file closing (?)
68 1a: local copied/moved from 1 -> m (premerge)
68 1a: local copied/moved from 1 -> m (premerge)
69 picked tool ':merge' for 1a (binary False symlink False changedelete False)
69 picked tool ':merge' for 1a (binary False symlink False changedelete False)
70 merging 1a and 1 to 1a
70 merging 1a and 1 to 1a
71 my 1a@f4a9cff3cd0b+ other 1@746e9549ea96 ancestor 1@c64f439569a9
71 my 1a@f4a9cff3cd0b+ other 1@746e9549ea96 ancestor 1@c64f439569a9
72 premerge successful
72 premerge successful
73 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
73 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
74 (branch merge, don't forget to commit)
74 (branch merge, don't forget to commit)
75
75
76 $ hg co -C 4
76 $ hg co -C 4
77 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
77 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
78
78
79 $ hg merge -y --debug 3
79 $ hg merge -y --debug 3
80 unmatched files in other:
80 unmatched files in other:
81 1a
81 1a
82 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
82 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
83 on remote side:
83 on remote side:
84 src: '1' -> dst: '1a' *
84 src: '1' -> dst: '1a' *
85 checking for directory renames
85 checking for directory renames
86 resolving manifests
86 resolving manifests
87 branchmerge: True, force: False, partial: False
87 branchmerge: True, force: False, partial: False
88 ancestor: c64f439569a9, local: 746e9549ea96+, remote: f4a9cff3cd0b
88 ancestor: c64f439569a9, local: 746e9549ea96+, remote: f4a9cff3cd0b
89 starting 4 threads for background file closing (?)
89 preserving 1 for resolve of 1a
90 preserving 1 for resolve of 1a
90 removing 1
91 removing 1
91 starting 4 threads for background file closing (?)
92 1a: remote moved from 1 -> m (premerge)
92 1a: remote moved from 1 -> m (premerge)
93 picked tool ':merge' for 1a (binary False symlink False changedelete False)
93 picked tool ':merge' for 1a (binary False symlink False changedelete False)
94 merging 1 and 1a to 1a
94 merging 1 and 1a to 1a
95 my 1a@746e9549ea96+ other 1a@f4a9cff3cd0b ancestor 1@c64f439569a9
95 my 1a@746e9549ea96+ other 1a@f4a9cff3cd0b ancestor 1@c64f439569a9
96 premerge successful
96 premerge successful
97 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
97 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
98 (branch merge, don't forget to commit)
98 (branch merge, don't forget to commit)
99
99
@@ -1,183 +1,183 b''
1 Check that renames are correctly saved by a commit after a merge
1 Check that renames are correctly saved by a commit after a merge
2
2
3 Test with the merge on 3 having the rename on the local parent
3 Test with the merge on 3 having the rename on the local parent
4
4
5 $ hg init a
5 $ hg init a
6 $ cd a
6 $ cd a
7
7
8 $ echo line1 > foo
8 $ echo line1 > foo
9 $ hg add foo
9 $ hg add foo
10 $ hg ci -m '0: add foo'
10 $ hg ci -m '0: add foo'
11
11
12 $ echo line2 >> foo
12 $ echo line2 >> foo
13 $ hg ci -m '1: change foo'
13 $ hg ci -m '1: change foo'
14
14
15 $ hg up -C 0
15 $ hg up -C 0
16 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
17
17
18 $ hg mv foo bar
18 $ hg mv foo bar
19 $ rm bar
19 $ rm bar
20 $ echo line0 > bar
20 $ echo line0 > bar
21 $ echo line1 >> bar
21 $ echo line1 >> bar
22 $ hg ci -m '2: mv foo bar; change bar'
22 $ hg ci -m '2: mv foo bar; change bar'
23 created new head
23 created new head
24
24
25 $ hg merge 1
25 $ hg merge 1
26 merging bar and foo to bar
26 merging bar and foo to bar
27 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
27 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
28 (branch merge, don't forget to commit)
28 (branch merge, don't forget to commit)
29
29
30 $ cat bar
30 $ cat bar
31 line0
31 line0
32 line1
32 line1
33 line2
33 line2
34
34
35 $ hg ci -m '3: merge with local rename'
35 $ hg ci -m '3: merge with local rename'
36
36
37 $ hg debugindex bar
37 $ hg debugindex bar
38 rev linkrev nodeid p1 p2
38 rev linkrev nodeid p1 p2
39 0 2 d35118874825 000000000000 000000000000
39 0 2 d35118874825 000000000000 000000000000
40 1 3 5345f5ab8abd 000000000000 d35118874825
40 1 3 5345f5ab8abd 000000000000 d35118874825
41
41
42 $ hg debugrename bar
42 $ hg debugrename bar
43 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
43 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
44
44
45 $ hg debugindex foo
45 $ hg debugindex foo
46 rev linkrev nodeid p1 p2
46 rev linkrev nodeid p1 p2
47 0 0 690b295714ae 000000000000 000000000000
47 0 0 690b295714ae 000000000000 000000000000
48 1 1 9e25c27b8757 690b295714ae 000000000000
48 1 1 9e25c27b8757 690b295714ae 000000000000
49
49
50
50
51 Revert the content change from rev 2:
51 Revert the content change from rev 2:
52
52
53 $ hg up -C 2
53 $ hg up -C 2
54 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
54 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
55 $ rm bar
55 $ rm bar
56 $ echo line1 > bar
56 $ echo line1 > bar
57 $ hg ci -m '4: revert content change from rev 2'
57 $ hg ci -m '4: revert content change from rev 2'
58 created new head
58 created new head
59
59
60 $ hg log --template '{rev}:{node|short} {parents}\n'
60 $ hg log --template '{rev}:{node|short} {parents}\n'
61 4:2263c1be0967 2:0f2ff26688b9
61 4:2263c1be0967 2:0f2ff26688b9
62 3:0555950ead28 2:0f2ff26688b9 1:5cd961e4045d
62 3:0555950ead28 2:0f2ff26688b9 1:5cd961e4045d
63 2:0f2ff26688b9 0:2665aaee66e9
63 2:0f2ff26688b9 0:2665aaee66e9
64 1:5cd961e4045d
64 1:5cd961e4045d
65 0:2665aaee66e9
65 0:2665aaee66e9
66
66
67 This should use bar@rev2 as the ancestor:
67 This should use bar@rev2 as the ancestor:
68
68
69 $ hg --debug merge 3
69 $ hg --debug merge 3
70 resolving manifests
70 resolving manifests
71 branchmerge: True, force: False, partial: False
71 branchmerge: True, force: False, partial: False
72 ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 0555950ead28
72 ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 0555950ead28
73 starting 4 threads for background file closing (?)
73 preserving bar for resolve of bar
74 preserving bar for resolve of bar
74 starting 4 threads for background file closing (?)
75 bar: versions differ -> m (premerge)
75 bar: versions differ -> m (premerge)
76 picked tool ':merge' for bar (binary False symlink False changedelete False)
76 picked tool ':merge' for bar (binary False symlink False changedelete False)
77 merging bar
77 merging bar
78 my bar@2263c1be0967+ other bar@0555950ead28 ancestor bar@0f2ff26688b9
78 my bar@2263c1be0967+ other bar@0555950ead28 ancestor bar@0f2ff26688b9
79 premerge successful
79 premerge successful
80 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
80 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
81 (branch merge, don't forget to commit)
81 (branch merge, don't forget to commit)
82
82
83 $ cat bar
83 $ cat bar
84 line1
84 line1
85 line2
85 line2
86
86
87 $ hg ci -m '5: merge'
87 $ hg ci -m '5: merge'
88
88
89 $ hg debugindex bar
89 $ hg debugindex bar
90 rev linkrev nodeid p1 p2
90 rev linkrev nodeid p1 p2
91 0 2 d35118874825 000000000000 000000000000
91 0 2 d35118874825 000000000000 000000000000
92 1 3 5345f5ab8abd 000000000000 d35118874825
92 1 3 5345f5ab8abd 000000000000 d35118874825
93 2 4 ff4b45017382 d35118874825 000000000000
93 2 4 ff4b45017382 d35118874825 000000000000
94 3 5 3701b4893544 ff4b45017382 5345f5ab8abd
94 3 5 3701b4893544 ff4b45017382 5345f5ab8abd
95
95
96
96
97 Same thing, but with the merge on 3 having the rename
97 Same thing, but with the merge on 3 having the rename
98 on the remote parent:
98 on the remote parent:
99
99
100 $ cd ..
100 $ cd ..
101 $ hg clone -U -r 1 -r 2 a b
101 $ hg clone -U -r 1 -r 2 a b
102 adding changesets
102 adding changesets
103 adding manifests
103 adding manifests
104 adding file changes
104 adding file changes
105 added 3 changesets with 3 changes to 2 files (+1 heads)
105 added 3 changesets with 3 changes to 2 files (+1 heads)
106 new changesets 2665aaee66e9:0f2ff26688b9
106 new changesets 2665aaee66e9:0f2ff26688b9
107 $ cd b
107 $ cd b
108
108
109 $ hg up -C 1
109 $ hg up -C 1
110 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
110 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
111
111
112 $ hg merge 2
112 $ hg merge 2
113 merging foo and bar to bar
113 merging foo and bar to bar
114 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
114 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
115 (branch merge, don't forget to commit)
115 (branch merge, don't forget to commit)
116
116
117 $ cat bar
117 $ cat bar
118 line0
118 line0
119 line1
119 line1
120 line2
120 line2
121
121
122 $ hg ci -m '3: merge with remote rename'
122 $ hg ci -m '3: merge with remote rename'
123
123
124 $ hg debugindex bar
124 $ hg debugindex bar
125 rev linkrev nodeid p1 p2
125 rev linkrev nodeid p1 p2
126 0 2 d35118874825 000000000000 000000000000
126 0 2 d35118874825 000000000000 000000000000
127 1 3 5345f5ab8abd 000000000000 d35118874825
127 1 3 5345f5ab8abd 000000000000 d35118874825
128
128
129 $ hg debugrename bar
129 $ hg debugrename bar
130 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
130 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
131
131
132 $ hg debugindex foo
132 $ hg debugindex foo
133 rev linkrev nodeid p1 p2
133 rev linkrev nodeid p1 p2
134 0 0 690b295714ae 000000000000 000000000000
134 0 0 690b295714ae 000000000000 000000000000
135 1 1 9e25c27b8757 690b295714ae 000000000000
135 1 1 9e25c27b8757 690b295714ae 000000000000
136
136
137
137
138 Revert the content change from rev 2:
138 Revert the content change from rev 2:
139
139
140 $ hg up -C 2
140 $ hg up -C 2
141 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
141 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
142 $ rm bar
142 $ rm bar
143 $ echo line1 > bar
143 $ echo line1 > bar
144 $ hg ci -m '4: revert content change from rev 2'
144 $ hg ci -m '4: revert content change from rev 2'
145 created new head
145 created new head
146
146
147 $ hg log --template '{rev}:{node|short} {parents}\n'
147 $ hg log --template '{rev}:{node|short} {parents}\n'
148 4:2263c1be0967 2:0f2ff26688b9
148 4:2263c1be0967 2:0f2ff26688b9
149 3:3ffa6b9e35f0 1:5cd961e4045d 2:0f2ff26688b9
149 3:3ffa6b9e35f0 1:5cd961e4045d 2:0f2ff26688b9
150 2:0f2ff26688b9 0:2665aaee66e9
150 2:0f2ff26688b9 0:2665aaee66e9
151 1:5cd961e4045d
151 1:5cd961e4045d
152 0:2665aaee66e9
152 0:2665aaee66e9
153
153
154 This should use bar@rev2 as the ancestor:
154 This should use bar@rev2 as the ancestor:
155
155
156 $ hg --debug merge 3
156 $ hg --debug merge 3
157 resolving manifests
157 resolving manifests
158 branchmerge: True, force: False, partial: False
158 branchmerge: True, force: False, partial: False
159 ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 3ffa6b9e35f0
159 ancestor: 0f2ff26688b9, local: 2263c1be0967+, remote: 3ffa6b9e35f0
160 starting 4 threads for background file closing (?)
160 preserving bar for resolve of bar
161 preserving bar for resolve of bar
161 starting 4 threads for background file closing (?)
162 bar: versions differ -> m (premerge)
162 bar: versions differ -> m (premerge)
163 picked tool ':merge' for bar (binary False symlink False changedelete False)
163 picked tool ':merge' for bar (binary False symlink False changedelete False)
164 merging bar
164 merging bar
165 my bar@2263c1be0967+ other bar@3ffa6b9e35f0 ancestor bar@0f2ff26688b9
165 my bar@2263c1be0967+ other bar@3ffa6b9e35f0 ancestor bar@0f2ff26688b9
166 premerge successful
166 premerge successful
167 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
167 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
168 (branch merge, don't forget to commit)
168 (branch merge, don't forget to commit)
169
169
170 $ cat bar
170 $ cat bar
171 line1
171 line1
172 line2
172 line2
173
173
174 $ hg ci -m '5: merge'
174 $ hg ci -m '5: merge'
175
175
176 $ hg debugindex bar
176 $ hg debugindex bar
177 rev linkrev nodeid p1 p2
177 rev linkrev nodeid p1 p2
178 0 2 d35118874825 000000000000 000000000000
178 0 2 d35118874825 000000000000 000000000000
179 1 3 5345f5ab8abd 000000000000 d35118874825
179 1 3 5345f5ab8abd 000000000000 d35118874825
180 2 4 ff4b45017382 d35118874825 000000000000
180 2 4 ff4b45017382 d35118874825 000000000000
181 3 5 3701b4893544 ff4b45017382 5345f5ab8abd
181 3 5 3701b4893544 ff4b45017382 5345f5ab8abd
182
182
183 $ cd ..
183 $ cd ..
@@ -1,150 +1,150 b''
1 initial
1 initial
2 $ hg init test-a
2 $ hg init test-a
3 $ cd test-a
3 $ cd test-a
4 $ cat >test.txt <<"EOF"
4 $ cat >test.txt <<"EOF"
5 > 1
5 > 1
6 > 2
6 > 2
7 > 3
7 > 3
8 > EOF
8 > EOF
9 $ hg add test.txt
9 $ hg add test.txt
10 $ hg commit -m "Initial"
10 $ hg commit -m "Initial"
11
11
12 clone
12 clone
13 $ cd ..
13 $ cd ..
14 $ hg clone test-a test-b
14 $ hg clone test-a test-b
15 updating to branch default
15 updating to branch default
16 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
17
17
18 change test-a
18 change test-a
19 $ cd test-a
19 $ cd test-a
20 $ cat >test.txt <<"EOF"
20 $ cat >test.txt <<"EOF"
21 > one
21 > one
22 > two
22 > two
23 > three
23 > three
24 > EOF
24 > EOF
25 $ hg commit -m "Numbers as words"
25 $ hg commit -m "Numbers as words"
26
26
27 change test-b
27 change test-b
28 $ cd ../test-b
28 $ cd ../test-b
29 $ cat >test.txt <<"EOF"
29 $ cat >test.txt <<"EOF"
30 > 1
30 > 1
31 > 2.5
31 > 2.5
32 > 3
32 > 3
33 > EOF
33 > EOF
34 $ hg commit -m "2 -> 2.5"
34 $ hg commit -m "2 -> 2.5"
35
35
36 now pull and merge from test-a
36 now pull and merge from test-a
37 $ hg pull ../test-a
37 $ hg pull ../test-a
38 pulling from ../test-a
38 pulling from ../test-a
39 searching for changes
39 searching for changes
40 adding changesets
40 adding changesets
41 adding manifests
41 adding manifests
42 adding file changes
42 adding file changes
43 added 1 changesets with 1 changes to 1 files (+1 heads)
43 added 1 changesets with 1 changes to 1 files (+1 heads)
44 new changesets 96b70246a118
44 new changesets 96b70246a118
45 (run 'hg heads' to see heads, 'hg merge' to merge)
45 (run 'hg heads' to see heads, 'hg merge' to merge)
46 $ hg merge
46 $ hg merge
47 merging test.txt
47 merging test.txt
48 warning: conflicts while merging test.txt! (edit, then use 'hg resolve --mark')
48 warning: conflicts while merging test.txt! (edit, then use 'hg resolve --mark')
49 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
49 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
50 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
50 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
51 [1]
51 [1]
52 resolve conflict
52 resolve conflict
53 $ cat >test.txt <<"EOF"
53 $ cat >test.txt <<"EOF"
54 > one
54 > one
55 > two-point-five
55 > two-point-five
56 > three
56 > three
57 > EOF
57 > EOF
58 $ rm -f *.orig
58 $ rm -f *.orig
59 $ hg resolve -m test.txt
59 $ hg resolve -m test.txt
60 (no more unresolved files)
60 (no more unresolved files)
61 $ hg commit -m "Merge 1"
61 $ hg commit -m "Merge 1"
62
62
63 change test-a again
63 change test-a again
64 $ cd ../test-a
64 $ cd ../test-a
65 $ cat >test.txt <<"EOF"
65 $ cat >test.txt <<"EOF"
66 > one
66 > one
67 > two-point-one
67 > two-point-one
68 > three
68 > three
69 > EOF
69 > EOF
70 $ hg commit -m "two -> two-point-one"
70 $ hg commit -m "two -> two-point-one"
71
71
72 pull and merge from test-a again
72 pull and merge from test-a again
73 $ cd ../test-b
73 $ cd ../test-b
74 $ hg pull ../test-a
74 $ hg pull ../test-a
75 pulling from ../test-a
75 pulling from ../test-a
76 searching for changes
76 searching for changes
77 adding changesets
77 adding changesets
78 adding manifests
78 adding manifests
79 adding file changes
79 adding file changes
80 added 1 changesets with 1 changes to 1 files (+1 heads)
80 added 1 changesets with 1 changes to 1 files (+1 heads)
81 new changesets 40d11a4173a8
81 new changesets 40d11a4173a8
82 (run 'hg heads' to see heads, 'hg merge' to merge)
82 (run 'hg heads' to see heads, 'hg merge' to merge)
83 $ hg merge --debug
83 $ hg merge --debug
84 resolving manifests
84 resolving manifests
85 branchmerge: True, force: False, partial: False
85 branchmerge: True, force: False, partial: False
86 ancestor: 96b70246a118, local: 50c3a7e29886+, remote: 40d11a4173a8
86 ancestor: 96b70246a118, local: 50c3a7e29886+, remote: 40d11a4173a8
87 starting 4 threads for background file closing (?)
87 preserving test.txt for resolve of test.txt
88 preserving test.txt for resolve of test.txt
88 starting 4 threads for background file closing (?)
89 test.txt: versions differ -> m (premerge)
89 test.txt: versions differ -> m (premerge)
90 picked tool ':merge' for test.txt (binary False symlink False changedelete False)
90 picked tool ':merge' for test.txt (binary False symlink False changedelete False)
91 merging test.txt
91 merging test.txt
92 my test.txt@50c3a7e29886+ other test.txt@40d11a4173a8 ancestor test.txt@96b70246a118
92 my test.txt@50c3a7e29886+ other test.txt@40d11a4173a8 ancestor test.txt@96b70246a118
93 test.txt: versions differ -> m (merge)
93 test.txt: versions differ -> m (merge)
94 picked tool ':merge' for test.txt (binary False symlink False changedelete False)
94 picked tool ':merge' for test.txt (binary False symlink False changedelete False)
95 my test.txt@50c3a7e29886+ other test.txt@40d11a4173a8 ancestor test.txt@96b70246a118
95 my test.txt@50c3a7e29886+ other test.txt@40d11a4173a8 ancestor test.txt@96b70246a118
96 warning: conflicts while merging test.txt! (edit, then use 'hg resolve --mark')
96 warning: conflicts while merging test.txt! (edit, then use 'hg resolve --mark')
97 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
97 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
98 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
98 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
99 [1]
99 [1]
100
100
101 $ cat test.txt
101 $ cat test.txt
102 one
102 one
103 <<<<<<< working copy: 50c3a7e29886 - test: Merge 1
103 <<<<<<< working copy: 50c3a7e29886 - test: Merge 1
104 two-point-five
104 two-point-five
105 =======
105 =======
106 two-point-one
106 two-point-one
107 >>>>>>> merge rev: 40d11a4173a8 - test: two -> two-point-one
107 >>>>>>> merge rev: 40d11a4173a8 - test: two -> two-point-one
108 three
108 three
109
109
110 $ hg debugindex test.txt
110 $ hg debugindex test.txt
111 rev linkrev nodeid p1 p2
111 rev linkrev nodeid p1 p2
112 0 0 01365c4cca56 000000000000 000000000000
112 0 0 01365c4cca56 000000000000 000000000000
113 1 1 7b013192566a 01365c4cca56 000000000000
113 1 1 7b013192566a 01365c4cca56 000000000000
114 2 2 8fe46a3eb557 01365c4cca56 000000000000
114 2 2 8fe46a3eb557 01365c4cca56 000000000000
115 3 3 fc3148072371 7b013192566a 8fe46a3eb557
115 3 3 fc3148072371 7b013192566a 8fe46a3eb557
116 4 4 d40249267ae3 8fe46a3eb557 000000000000
116 4 4 d40249267ae3 8fe46a3eb557 000000000000
117
117
118 $ hg log
118 $ hg log
119 changeset: 4:40d11a4173a8
119 changeset: 4:40d11a4173a8
120 tag: tip
120 tag: tip
121 parent: 2:96b70246a118
121 parent: 2:96b70246a118
122 user: test
122 user: test
123 date: Thu Jan 01 00:00:00 1970 +0000
123 date: Thu Jan 01 00:00:00 1970 +0000
124 summary: two -> two-point-one
124 summary: two -> two-point-one
125
125
126 changeset: 3:50c3a7e29886
126 changeset: 3:50c3a7e29886
127 parent: 1:d1e159716d41
127 parent: 1:d1e159716d41
128 parent: 2:96b70246a118
128 parent: 2:96b70246a118
129 user: test
129 user: test
130 date: Thu Jan 01 00:00:00 1970 +0000
130 date: Thu Jan 01 00:00:00 1970 +0000
131 summary: Merge 1
131 summary: Merge 1
132
132
133 changeset: 2:96b70246a118
133 changeset: 2:96b70246a118
134 parent: 0:b1832b9d912a
134 parent: 0:b1832b9d912a
135 user: test
135 user: test
136 date: Thu Jan 01 00:00:00 1970 +0000
136 date: Thu Jan 01 00:00:00 1970 +0000
137 summary: Numbers as words
137 summary: Numbers as words
138
138
139 changeset: 1:d1e159716d41
139 changeset: 1:d1e159716d41
140 user: test
140 user: test
141 date: Thu Jan 01 00:00:00 1970 +0000
141 date: Thu Jan 01 00:00:00 1970 +0000
142 summary: 2 -> 2.5
142 summary: 2 -> 2.5
143
143
144 changeset: 0:b1832b9d912a
144 changeset: 0:b1832b9d912a
145 user: test
145 user: test
146 date: Thu Jan 01 00:00:00 1970 +0000
146 date: Thu Jan 01 00:00:00 1970 +0000
147 summary: Initial
147 summary: Initial
148
148
149
149
150 $ cd ..
150 $ cd ..
@@ -1,236 +1,236 b''
1 $ hg init
1 $ hg init
2
2
3 $ echo "[merge]" >> .hg/hgrc
3 $ echo "[merge]" >> .hg/hgrc
4 $ echo "followcopies = 1" >> .hg/hgrc
4 $ echo "followcopies = 1" >> .hg/hgrc
5
5
6 $ echo foo > a
6 $ echo foo > a
7 $ echo foo > a2
7 $ echo foo > a2
8 $ hg add a a2
8 $ hg add a a2
9 $ hg ci -m "start"
9 $ hg ci -m "start"
10
10
11 $ hg mv a b
11 $ hg mv a b
12 $ hg mv a2 b2
12 $ hg mv a2 b2
13 $ hg ci -m "rename"
13 $ hg ci -m "rename"
14
14
15 $ hg co 0
15 $ hg co 0
16 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
16 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
17
17
18 $ echo blahblah > a
18 $ echo blahblah > a
19 $ echo blahblah > a2
19 $ echo blahblah > a2
20 $ hg mv a2 c2
20 $ hg mv a2 c2
21 $ hg ci -m "modify"
21 $ hg ci -m "modify"
22 created new head
22 created new head
23
23
24 $ hg merge -y --debug
24 $ hg merge -y --debug
25 unmatched files in local:
25 unmatched files in local:
26 c2
26 c2
27 unmatched files in other:
27 unmatched files in other:
28 b
28 b
29 b2
29 b2
30 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
30 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
31 on local side:
31 on local side:
32 src: 'a2' -> dst: 'c2' !
32 src: 'a2' -> dst: 'c2' !
33 on remote side:
33 on remote side:
34 src: 'a' -> dst: 'b' *
34 src: 'a' -> dst: 'b' *
35 src: 'a2' -> dst: 'b2' !
35 src: 'a2' -> dst: 'b2' !
36 checking for directory renames
36 checking for directory renames
37 resolving manifests
37 resolving manifests
38 branchmerge: True, force: False, partial: False
38 branchmerge: True, force: False, partial: False
39 ancestor: af1939970a1c, local: 044f8520aeeb+, remote: 85c198ef2f6c
39 ancestor: af1939970a1c, local: 044f8520aeeb+, remote: 85c198ef2f6c
40 note: possible conflict - a2 was renamed multiple times to:
40 note: possible conflict - a2 was renamed multiple times to:
41 b2
41 b2
42 c2
42 c2
43 b2: remote created -> g
43 b2: remote created -> g
44 getting b2
44 getting b2
45 preserving a for resolve of b
45 preserving a for resolve of b
46 removing a
46 removing a
47 b: remote moved from a -> m (premerge)
47 b: remote moved from a -> m (premerge)
48 picked tool ':merge' for b (binary False symlink False changedelete False)
48 picked tool ':merge' for b (binary False symlink False changedelete False)
49 merging a and b to b
49 merging a and b to b
50 my b@044f8520aeeb+ other b@85c198ef2f6c ancestor a@af1939970a1c
50 my b@044f8520aeeb+ other b@85c198ef2f6c ancestor a@af1939970a1c
51 premerge successful
51 premerge successful
52 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
52 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
53 (branch merge, don't forget to commit)
53 (branch merge, don't forget to commit)
54
54
55 $ hg status -AC
55 $ hg status -AC
56 M b
56 M b
57 a
57 a
58 M b2
58 M b2
59 R a
59 R a
60 C c2
60 C c2
61
61
62 $ cat b
62 $ cat b
63 blahblah
63 blahblah
64
64
65 $ hg ci -m "merge"
65 $ hg ci -m "merge"
66
66
67 $ hg debugindex b
67 $ hg debugindex b
68 rev linkrev nodeid p1 p2
68 rev linkrev nodeid p1 p2
69 0 1 57eacc201a7f 000000000000 000000000000
69 0 1 57eacc201a7f 000000000000 000000000000
70 1 3 4727ba907962 000000000000 57eacc201a7f
70 1 3 4727ba907962 000000000000 57eacc201a7f
71
71
72 $ hg debugrename b
72 $ hg debugrename b
73 b renamed from a:dd03b83622e78778b403775d0d074b9ac7387a66
73 b renamed from a:dd03b83622e78778b403775d0d074b9ac7387a66
74
74
75 This used to trigger a "divergent renames" warning, despite no renames
75 This used to trigger a "divergent renames" warning, despite no renames
76
76
77 $ hg cp b b3
77 $ hg cp b b3
78 $ hg cp b b4
78 $ hg cp b b4
79 $ hg ci -A -m 'copy b twice'
79 $ hg ci -A -m 'copy b twice'
80 $ hg up '.^'
80 $ hg up '.^'
81 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
81 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
82 $ hg up
82 $ hg up
83 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
84 $ hg rm b3 b4
84 $ hg rm b3 b4
85 $ hg ci -m 'clean up a bit of our mess'
85 $ hg ci -m 'clean up a bit of our mess'
86
86
87 We'd rather not warn on divergent renames done in the same changeset (issue2113)
87 We'd rather not warn on divergent renames done in the same changeset (issue2113)
88
88
89 $ hg cp b b3
89 $ hg cp b b3
90 $ hg mv b b4
90 $ hg mv b b4
91 $ hg ci -A -m 'divergent renames in same changeset'
91 $ hg ci -A -m 'divergent renames in same changeset'
92 $ hg up '.^'
92 $ hg up '.^'
93 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
93 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
94 $ hg up
94 $ hg up
95 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
95 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
96
96
97 Check for issue2642
97 Check for issue2642
98
98
99 $ hg init t
99 $ hg init t
100 $ cd t
100 $ cd t
101
101
102 $ echo c0 > f1
102 $ echo c0 > f1
103 $ hg ci -Aqm0
103 $ hg ci -Aqm0
104
104
105 $ hg up null -q
105 $ hg up null -q
106 $ echo c1 > f1 # backport
106 $ echo c1 > f1 # backport
107 $ hg ci -Aqm1
107 $ hg ci -Aqm1
108 $ hg mv f1 f2
108 $ hg mv f1 f2
109 $ hg ci -qm2
109 $ hg ci -qm2
110
110
111 $ hg up 0 -q
111 $ hg up 0 -q
112 $ hg merge 1 -q --tool internal:local
112 $ hg merge 1 -q --tool internal:local
113 $ hg ci -qm3
113 $ hg ci -qm3
114
114
115 $ hg merge 2
115 $ hg merge 2
116 merging f1 and f2 to f2
116 merging f1 and f2 to f2
117 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
117 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
118 (branch merge, don't forget to commit)
118 (branch merge, don't forget to commit)
119
119
120 $ cat f2
120 $ cat f2
121 c0
121 c0
122
122
123 $ cd ..
123 $ cd ..
124
124
125 Check for issue2089
125 Check for issue2089
126
126
127 $ hg init repo2089
127 $ hg init repo2089
128 $ cd repo2089
128 $ cd repo2089
129
129
130 $ echo c0 > f1
130 $ echo c0 > f1
131 $ hg ci -Aqm0
131 $ hg ci -Aqm0
132
132
133 $ hg up null -q
133 $ hg up null -q
134 $ echo c1 > f1
134 $ echo c1 > f1
135 $ hg ci -Aqm1
135 $ hg ci -Aqm1
136
136
137 $ hg up 0 -q
137 $ hg up 0 -q
138 $ hg merge 1 -q --tool internal:local
138 $ hg merge 1 -q --tool internal:local
139 $ echo c2 > f1
139 $ echo c2 > f1
140 $ hg ci -qm2
140 $ hg ci -qm2
141
141
142 $ hg up 1 -q
142 $ hg up 1 -q
143 $ hg mv f1 f2
143 $ hg mv f1 f2
144 $ hg ci -Aqm3
144 $ hg ci -Aqm3
145
145
146 $ hg up 2 -q
146 $ hg up 2 -q
147 $ hg merge 3
147 $ hg merge 3
148 merging f1 and f2 to f2
148 merging f1 and f2 to f2
149 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
149 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
150 (branch merge, don't forget to commit)
150 (branch merge, don't forget to commit)
151
151
152 $ cat f2
152 $ cat f2
153 c2
153 c2
154
154
155 $ cd ..
155 $ cd ..
156
156
157 Check for issue3074
157 Check for issue3074
158
158
159 $ hg init repo3074
159 $ hg init repo3074
160 $ cd repo3074
160 $ cd repo3074
161 $ echo foo > file
161 $ echo foo > file
162 $ hg add file
162 $ hg add file
163 $ hg commit -m "added file"
163 $ hg commit -m "added file"
164 $ hg mv file newfile
164 $ hg mv file newfile
165 $ hg commit -m "renamed file"
165 $ hg commit -m "renamed file"
166 $ hg update 0
166 $ hg update 0
167 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
167 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
168 $ hg rm file
168 $ hg rm file
169 $ hg commit -m "deleted file"
169 $ hg commit -m "deleted file"
170 created new head
170 created new head
171 $ hg merge --debug
171 $ hg merge --debug
172 unmatched files in other:
172 unmatched files in other:
173 newfile
173 newfile
174 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
174 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
175 on remote side:
175 on remote side:
176 src: 'file' -> dst: 'newfile' %
176 src: 'file' -> dst: 'newfile' %
177 checking for directory renames
177 checking for directory renames
178 resolving manifests
178 resolving manifests
179 branchmerge: True, force: False, partial: False
179 branchmerge: True, force: False, partial: False
180 ancestor: 19d7f95df299, local: 0084274f6b67+, remote: 5d32493049f0
180 ancestor: 19d7f95df299, local: 0084274f6b67+, remote: 5d32493049f0
181 note: possible conflict - file was deleted and renamed to:
181 note: possible conflict - file was deleted and renamed to:
182 newfile
182 newfile
183 newfile: remote created -> g
183 newfile: remote created -> g
184 getting newfile
184 getting newfile
185 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
185 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
186 (branch merge, don't forget to commit)
186 (branch merge, don't forget to commit)
187 $ hg status
187 $ hg status
188 M newfile
188 M newfile
189 $ cd ..
189 $ cd ..
190
190
191 Create x and y, then modify y and rename x to z on one side of merge, and
191 Create x and y, then modify y and rename x to z on one side of merge, and
192 modify x and rename y to z on the other side.
192 modify x and rename y to z on the other side.
193 $ hg init conflicting-target
193 $ hg init conflicting-target
194 $ cd conflicting-target
194 $ cd conflicting-target
195 $ echo x > x
195 $ echo x > x
196 $ echo y > y
196 $ echo y > y
197 $ hg ci -Aqm 'add x and y'
197 $ hg ci -Aqm 'add x and y'
198 $ hg mv x z
198 $ hg mv x z
199 $ echo foo >> y
199 $ echo foo >> y
200 $ hg ci -qm 'modify y, rename x to z'
200 $ hg ci -qm 'modify y, rename x to z'
201 $ hg co -q 0
201 $ hg co -q 0
202 $ hg mv y z
202 $ hg mv y z
203 $ echo foo >> x
203 $ echo foo >> x
204 $ hg ci -qm 'modify x, rename y to z'
204 $ hg ci -qm 'modify x, rename y to z'
205 # We should probably tell the user about the conflicting rename sources.
205 # We should probably tell the user about the conflicting rename sources.
206 # Depending on which side they pick, we should take that rename and get
206 # Depending on which side they pick, we should take that rename and get
207 # the changes to the source from the other side. The unchanged file should
207 # the changes to the source from the other side. The unchanged file should
208 # remain.
208 # remain.
209 $ hg merge --debug 1 -t :merge3
209 $ hg merge --debug 1 -t :merge3
210 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
210 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
211 on local side:
211 on local side:
212 src: 'y' -> dst: 'z' *
212 src: 'y' -> dst: 'z' *
213 on remote side:
213 on remote side:
214 src: 'x' -> dst: 'z' *
214 src: 'x' -> dst: 'z' *
215 checking for directory renames
215 checking for directory renames
216 resolving manifests
216 resolving manifests
217 branchmerge: True, force: False, partial: False
217 branchmerge: True, force: False, partial: False
218 ancestor: 5151c134577e, local: 07fcbc9a74ed+, remote: f21419739508
218 ancestor: 5151c134577e, local: 07fcbc9a74ed+, remote: f21419739508
219 starting 4 threads for background file closing (?)
219 preserving z for resolve of z
220 preserving z for resolve of z
220 starting 4 threads for background file closing (?)
221 z: both renamed from y -> m (premerge)
221 z: both renamed from y -> m (premerge)
222 picked tool ':merge3' for z (binary False symlink False changedelete False)
222 picked tool ':merge3' for z (binary False symlink False changedelete False)
223 merging z
223 merging z
224 my z@07fcbc9a74ed+ other z@f21419739508 ancestor y@5151c134577e
224 my z@07fcbc9a74ed+ other z@f21419739508 ancestor y@5151c134577e
225 premerge successful
225 premerge successful
226 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
226 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
227 (branch merge, don't forget to commit)
227 (branch merge, don't forget to commit)
228 $ ls
228 $ ls
229 x
229 x
230 z
230 z
231 $ cat x
231 $ cat x
232 x
232 x
233 foo
233 foo
234 # 'z' should have had the added 'foo' line
234 # 'z' should have had the added 'foo' line
235 $ cat z
235 $ cat z
236 x
236 x
@@ -1,1050 +1,1048 b''
1
1
2 $ mkdir -p t
2 $ mkdir -p t
3 $ cd t
3 $ cd t
4 $ cat <<EOF > merge
4 $ cat <<EOF > merge
5 > import sys, os
5 > import sys, os
6 > f = open(sys.argv[1], "w")
6 > f = open(sys.argv[1], "w")
7 > f.write("merge %s %s %s" % (sys.argv[1], sys.argv[2], sys.argv[3]))
7 > f.write("merge %s %s %s" % (sys.argv[1], sys.argv[2], sys.argv[3]))
8 > f.close()
8 > f.close()
9 > EOF
9 > EOF
10
10
11 perform a test merge with possible renaming
11 perform a test merge with possible renaming
12 args:
12 args:
13 $1 = action in local branch
13 $1 = action in local branch
14 $2 = action in remote branch
14 $2 = action in remote branch
15 $3 = action in working dir
15 $3 = action in working dir
16 $4 = expected result
16 $4 = expected result
17
17
18 $ tm()
18 $ tm()
19 > {
19 > {
20 > hg init t
20 > hg init t
21 > cd t
21 > cd t
22 > echo "[merge]" >> .hg/hgrc
22 > echo "[merge]" >> .hg/hgrc
23 > echo "followcopies = 1" >> .hg/hgrc
23 > echo "followcopies = 1" >> .hg/hgrc
24 >
24 >
25 > # base
25 > # base
26 > echo base > a
26 > echo base > a
27 > echo base > rev # used to force commits
27 > echo base > rev # used to force commits
28 > hg add a rev
28 > hg add a rev
29 > hg ci -m "base"
29 > hg ci -m "base"
30 >
30 >
31 > # remote
31 > # remote
32 > echo remote > rev
32 > echo remote > rev
33 > if [ "$2" != "" ] ; then $2 ; fi
33 > if [ "$2" != "" ] ; then $2 ; fi
34 > hg ci -m "remote"
34 > hg ci -m "remote"
35 >
35 >
36 > # local
36 > # local
37 > hg co -q 0
37 > hg co -q 0
38 > echo local > rev
38 > echo local > rev
39 > if [ "$1" != "" ] ; then $1 ; fi
39 > if [ "$1" != "" ] ; then $1 ; fi
40 > hg ci -m "local"
40 > hg ci -m "local"
41 >
41 >
42 > # working dir
42 > # working dir
43 > echo local > rev
43 > echo local > rev
44 > if [ "$3" != "" ] ; then $3 ; fi
44 > if [ "$3" != "" ] ; then $3 ; fi
45 >
45 >
46 > # merge
46 > # merge
47 > echo "--------------"
47 > echo "--------------"
48 > echo "test L:$1 R:$2 W:$3 - $4"
48 > echo "test L:$1 R:$2 W:$3 - $4"
49 > echo "--------------"
49 > echo "--------------"
50 > hg merge -y --debug --traceback --tool="\"$PYTHON\" ../merge"
50 > hg merge -y --debug --traceback --tool="\"$PYTHON\" ../merge"
51 >
51 >
52 > echo "--------------"
52 > echo "--------------"
53 > hg status -camC -X rev
53 > hg status -camC -X rev
54 >
54 >
55 > hg ci -m "merge"
55 > hg ci -m "merge"
56 >
56 >
57 > echo "--------------"
57 > echo "--------------"
58 > echo
58 > echo
59 >
59 >
60 > cd ..
60 > cd ..
61 > rm -r t
61 > rm -r t
62 > }
62 > }
63 $ up() {
63 $ up() {
64 > cp rev $1
64 > cp rev $1
65 > hg add $1 2> /dev/null
65 > hg add $1 2> /dev/null
66 > if [ "$2" != "" ] ; then
66 > if [ "$2" != "" ] ; then
67 > cp rev $2
67 > cp rev $2
68 > hg add $2 2> /dev/null
68 > hg add $2 2> /dev/null
69 > fi
69 > fi
70 > }
70 > }
71 $ um() { up $1; hg mv $1 $2; }
71 $ um() { up $1; hg mv $1 $2; }
72 $ nc() { hg cp $1 $2; } # just copy
72 $ nc() { hg cp $1 $2; } # just copy
73 $ nm() { hg mv $1 $2; } # just move
73 $ nm() { hg mv $1 $2; } # just move
74 $ tm "up a " "nc a b" " " "1 get local a to b"
74 $ tm "up a " "nc a b" " " "1 get local a to b"
75 created new head
75 created new head
76 --------------
76 --------------
77 test L:up a R:nc a b W: - 1 get local a to b
77 test L:up a R:nc a b W: - 1 get local a to b
78 --------------
78 --------------
79 unmatched files in other:
79 unmatched files in other:
80 b
80 b
81 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
81 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
82 on remote side:
82 on remote side:
83 src: 'a' -> dst: 'b' *
83 src: 'a' -> dst: 'b' *
84 checking for directory renames
84 checking for directory renames
85 resolving manifests
85 resolving manifests
86 branchmerge: True, force: False, partial: False
86 branchmerge: True, force: False, partial: False
87 ancestor: 924404dff337, local: e300d1c794ec+, remote: 4ce40f5aca24
87 ancestor: 924404dff337, local: e300d1c794ec+, remote: 4ce40f5aca24
88 starting 4 threads for background file closing (?)
88 preserving a for resolve of b
89 preserving a for resolve of b
89 preserving rev for resolve of rev
90 preserving rev for resolve of rev
90 starting 4 threads for background file closing (?)
91 b: remote copied from a -> m (premerge)
91 b: remote copied from a -> m (premerge)
92 starting 4 threads for background file closing (?)
93 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
92 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
94 merging a and b to b
93 merging a and b to b
95 my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337
94 my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337
96 premerge successful
95 premerge successful
97 rev: versions differ -> m (premerge)
96 rev: versions differ -> m (premerge)
98 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
97 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
99 merging rev
98 merging rev
100 my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337
99 my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337
101 rev: versions differ -> m (merge)
100 rev: versions differ -> m (merge)
102 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
101 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
103 my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337
102 my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337
104 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
103 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
105 merge tool returned: 0
104 merge tool returned: 0
106 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
105 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
107 (branch merge, don't forget to commit)
106 (branch merge, don't forget to commit)
108 --------------
107 --------------
109 M b
108 M b
110 a
109 a
111 C a
110 C a
112 --------------
111 --------------
113
112
114 $ tm "nc a b" "up a " " " "2 get rem change to a and b"
113 $ tm "nc a b" "up a " " " "2 get rem change to a and b"
115 created new head
114 created new head
116 --------------
115 --------------
117 test L:nc a b R:up a W: - 2 get rem change to a and b
116 test L:nc a b R:up a W: - 2 get rem change to a and b
118 --------------
117 --------------
119 unmatched files in local:
118 unmatched files in local:
120 b
119 b
121 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
120 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
122 on local side:
121 on local side:
123 src: 'a' -> dst: 'b' *
122 src: 'a' -> dst: 'b' *
124 checking for directory renames
123 checking for directory renames
125 resolving manifests
124 resolving manifests
126 branchmerge: True, force: False, partial: False
125 branchmerge: True, force: False, partial: False
127 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: f4db7e329e71
126 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: f4db7e329e71
128 a: remote is newer -> g
127 a: remote is newer -> g
129 getting a
128 getting a
130 preserving b for resolve of b
129 preserving b for resolve of b
131 preserving rev for resolve of rev
130 preserving rev for resolve of rev
132 b: local copied/moved from a -> m (premerge)
131 b: local copied/moved from a -> m (premerge)
133 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
132 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
134 merging b and a to b
133 merging b and a to b
135 my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337
134 my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337
136 premerge successful
135 premerge successful
137 rev: versions differ -> m (premerge)
136 rev: versions differ -> m (premerge)
138 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
137 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
139 merging rev
138 merging rev
140 my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337
139 my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337
141 rev: versions differ -> m (merge)
140 rev: versions differ -> m (merge)
142 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
141 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
143 my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337
142 my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337
144 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
143 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
145 merge tool returned: 0
144 merge tool returned: 0
146 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
145 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
147 (branch merge, don't forget to commit)
146 (branch merge, don't forget to commit)
148 --------------
147 --------------
149 M a
148 M a
150 M b
149 M b
151 a
150 a
152 --------------
151 --------------
153
152
154 $ tm "up a " "nm a b" " " "3 get local a change to b, remove a"
153 $ tm "up a " "nm a b" " " "3 get local a change to b, remove a"
155 created new head
154 created new head
156 --------------
155 --------------
157 test L:up a R:nm a b W: - 3 get local a change to b, remove a
156 test L:up a R:nm a b W: - 3 get local a change to b, remove a
158 --------------
157 --------------
159 unmatched files in other:
158 unmatched files in other:
160 b
159 b
161 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
160 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
162 on remote side:
161 on remote side:
163 src: 'a' -> dst: 'b' *
162 src: 'a' -> dst: 'b' *
164 checking for directory renames
163 checking for directory renames
165 resolving manifests
164 resolving manifests
166 branchmerge: True, force: False, partial: False
165 branchmerge: True, force: False, partial: False
167 ancestor: 924404dff337, local: e300d1c794ec+, remote: bdb19105162a
166 ancestor: 924404dff337, local: e300d1c794ec+, remote: bdb19105162a
167 starting 4 threads for background file closing (?)
168 preserving a for resolve of b
168 preserving a for resolve of b
169 preserving rev for resolve of rev
169 preserving rev for resolve of rev
170 removing a
170 removing a
171 starting 4 threads for background file closing (?)
172 b: remote moved from a -> m (premerge)
171 b: remote moved from a -> m (premerge)
173 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
172 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
174 merging a and b to b
173 merging a and b to b
175 my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337
174 my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337
176 premerge successful
175 premerge successful
177 rev: versions differ -> m (premerge)
176 rev: versions differ -> m (premerge)
178 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
177 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
179 merging rev
178 merging rev
180 my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337
179 my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337
181 rev: versions differ -> m (merge)
180 rev: versions differ -> m (merge)
182 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
181 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
183 my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337
182 my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337
184 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
183 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
185 merge tool returned: 0
184 merge tool returned: 0
186 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
185 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
187 (branch merge, don't forget to commit)
186 (branch merge, don't forget to commit)
188 --------------
187 --------------
189 M b
188 M b
190 a
189 a
191 --------------
190 --------------
192
191
193 $ tm "nm a b" "up a " " " "4 get remote change to b"
192 $ tm "nm a b" "up a " " " "4 get remote change to b"
194 created new head
193 created new head
195 --------------
194 --------------
196 test L:nm a b R:up a W: - 4 get remote change to b
195 test L:nm a b R:up a W: - 4 get remote change to b
197 --------------
196 --------------
198 unmatched files in local:
197 unmatched files in local:
199 b
198 b
200 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
199 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
201 on local side:
200 on local side:
202 src: 'a' -> dst: 'b' *
201 src: 'a' -> dst: 'b' *
203 checking for directory renames
202 checking for directory renames
204 resolving manifests
203 resolving manifests
205 branchmerge: True, force: False, partial: False
204 branchmerge: True, force: False, partial: False
206 ancestor: 924404dff337, local: 02963e448370+, remote: f4db7e329e71
205 ancestor: 924404dff337, local: 02963e448370+, remote: f4db7e329e71
206 starting 4 threads for background file closing (?)
207 preserving b for resolve of b
207 preserving b for resolve of b
208 preserving rev for resolve of rev
208 preserving rev for resolve of rev
209 starting 4 threads for background file closing (?)
210 b: local copied/moved from a -> m (premerge)
209 b: local copied/moved from a -> m (premerge)
211 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
210 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
212 merging b and a to b
211 merging b and a to b
213 my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337
212 my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337
214 premerge successful
213 premerge successful
215 rev: versions differ -> m (premerge)
214 rev: versions differ -> m (premerge)
216 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
215 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
217 merging rev
216 merging rev
218 my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337
217 my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337
219 rev: versions differ -> m (merge)
218 rev: versions differ -> m (merge)
220 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
219 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
221 my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337
220 my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337
222 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
221 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
223 merge tool returned: 0
222 merge tool returned: 0
224 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
223 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
225 (branch merge, don't forget to commit)
224 (branch merge, don't forget to commit)
226 --------------
225 --------------
227 M b
226 M b
228 a
227 a
229 --------------
228 --------------
230
229
231 $ tm " " "nc a b" " " "5 get b"
230 $ tm " " "nc a b" " " "5 get b"
232 created new head
231 created new head
233 --------------
232 --------------
234 test L: R:nc a b W: - 5 get b
233 test L: R:nc a b W: - 5 get b
235 --------------
234 --------------
236 unmatched files in other:
235 unmatched files in other:
237 b
236 b
238 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
237 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
239 on remote side:
238 on remote side:
240 src: 'a' -> dst: 'b'
239 src: 'a' -> dst: 'b'
241 checking for directory renames
240 checking for directory renames
242 resolving manifests
241 resolving manifests
243 branchmerge: True, force: False, partial: False
242 branchmerge: True, force: False, partial: False
244 ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: 4ce40f5aca24
243 ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: 4ce40f5aca24
245 b: remote created -> g
244 b: remote created -> g
246 getting b
245 getting b
247 preserving rev for resolve of rev
246 preserving rev for resolve of rev
248 rev: versions differ -> m (premerge)
247 rev: versions differ -> m (premerge)
249 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
248 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
250 merging rev
249 merging rev
251 my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337
250 my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337
252 rev: versions differ -> m (merge)
251 rev: versions differ -> m (merge)
253 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
252 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
254 my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337
253 my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337
255 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
254 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
256 merge tool returned: 0
255 merge tool returned: 0
257 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
256 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
258 (branch merge, don't forget to commit)
257 (branch merge, don't forget to commit)
259 --------------
258 --------------
260 M b
259 M b
261 C a
260 C a
262 --------------
261 --------------
263
262
264 $ tm "nc a b" " " " " "6 nothing"
263 $ tm "nc a b" " " " " "6 nothing"
265 created new head
264 created new head
266 --------------
265 --------------
267 test L:nc a b R: W: - 6 nothing
266 test L:nc a b R: W: - 6 nothing
268 --------------
267 --------------
269 unmatched files in local:
268 unmatched files in local:
270 b
269 b
271 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
270 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
272 on local side:
271 on local side:
273 src: 'a' -> dst: 'b'
272 src: 'a' -> dst: 'b'
274 checking for directory renames
273 checking for directory renames
275 resolving manifests
274 resolving manifests
276 branchmerge: True, force: False, partial: False
275 branchmerge: True, force: False, partial: False
277 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 97c705ade336
276 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 97c705ade336
277 starting 4 threads for background file closing (?)
278 preserving rev for resolve of rev
278 preserving rev for resolve of rev
279 starting 4 threads for background file closing (?)
280 rev: versions differ -> m (premerge)
279 rev: versions differ -> m (premerge)
281 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
280 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
282 merging rev
281 merging rev
283 my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337
282 my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337
284 rev: versions differ -> m (merge)
283 rev: versions differ -> m (merge)
285 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
284 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
286 my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337
285 my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337
287 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
286 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
288 merge tool returned: 0
287 merge tool returned: 0
289 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
288 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
290 (branch merge, don't forget to commit)
289 (branch merge, don't forget to commit)
291 --------------
290 --------------
292 C a
291 C a
293 C b
292 C b
294 --------------
293 --------------
295
294
296 $ tm " " "nm a b" " " "7 get b"
295 $ tm " " "nm a b" " " "7 get b"
297 created new head
296 created new head
298 --------------
297 --------------
299 test L: R:nm a b W: - 7 get b
298 test L: R:nm a b W: - 7 get b
300 --------------
299 --------------
301 unmatched files in other:
300 unmatched files in other:
302 b
301 b
303 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
302 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
304 on remote side:
303 on remote side:
305 src: 'a' -> dst: 'b'
304 src: 'a' -> dst: 'b'
306 checking for directory renames
305 checking for directory renames
307 resolving manifests
306 resolving manifests
308 branchmerge: True, force: False, partial: False
307 branchmerge: True, force: False, partial: False
309 ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: bdb19105162a
308 ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: bdb19105162a
310 a: other deleted -> r
309 a: other deleted -> r
311 removing a
310 removing a
312 b: remote created -> g
311 b: remote created -> g
313 getting b
312 getting b
314 preserving rev for resolve of rev
313 preserving rev for resolve of rev
315 rev: versions differ -> m (premerge)
314 rev: versions differ -> m (premerge)
316 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
315 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
317 merging rev
316 merging rev
318 my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337
317 my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337
319 rev: versions differ -> m (merge)
318 rev: versions differ -> m (merge)
320 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
319 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
321 my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337
320 my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337
322 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
321 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
323 merge tool returned: 0
322 merge tool returned: 0
324 1 files updated, 1 files merged, 1 files removed, 0 files unresolved
323 1 files updated, 1 files merged, 1 files removed, 0 files unresolved
325 (branch merge, don't forget to commit)
324 (branch merge, don't forget to commit)
326 --------------
325 --------------
327 M b
326 M b
328 --------------
327 --------------
329
328
330 $ tm "nm a b" " " " " "8 nothing"
329 $ tm "nm a b" " " " " "8 nothing"
331 created new head
330 created new head
332 --------------
331 --------------
333 test L:nm a b R: W: - 8 nothing
332 test L:nm a b R: W: - 8 nothing
334 --------------
333 --------------
335 unmatched files in local:
334 unmatched files in local:
336 b
335 b
337 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
336 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
338 on local side:
337 on local side:
339 src: 'a' -> dst: 'b'
338 src: 'a' -> dst: 'b'
340 checking for directory renames
339 checking for directory renames
341 resolving manifests
340 resolving manifests
342 branchmerge: True, force: False, partial: False
341 branchmerge: True, force: False, partial: False
343 ancestor: 924404dff337, local: 02963e448370+, remote: 97c705ade336
342 ancestor: 924404dff337, local: 02963e448370+, remote: 97c705ade336
343 starting 4 threads for background file closing (?)
344 preserving rev for resolve of rev
344 preserving rev for resolve of rev
345 starting 4 threads for background file closing (?)
346 rev: versions differ -> m (premerge)
345 rev: versions differ -> m (premerge)
347 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
346 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
348 merging rev
347 merging rev
349 my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337
348 my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337
350 rev: versions differ -> m (merge)
349 rev: versions differ -> m (merge)
351 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
350 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
352 my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337
351 my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337
353 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
352 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
354 merge tool returned: 0
353 merge tool returned: 0
355 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
354 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
356 (branch merge, don't forget to commit)
355 (branch merge, don't forget to commit)
357 --------------
356 --------------
358 C b
357 C b
359 --------------
358 --------------
360
359
361 $ tm "um a b" "um a b" " " "9 do merge with ancestor in a"
360 $ tm "um a b" "um a b" " " "9 do merge with ancestor in a"
362 created new head
361 created new head
363 --------------
362 --------------
364 test L:um a b R:um a b W: - 9 do merge with ancestor in a
363 test L:um a b R:um a b W: - 9 do merge with ancestor in a
365 --------------
364 --------------
366 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
365 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
367 on local side:
366 on local side:
368 src: 'a' -> dst: 'b' *
367 src: 'a' -> dst: 'b' *
369 on remote side:
368 on remote side:
370 src: 'a' -> dst: 'b' *
369 src: 'a' -> dst: 'b' *
371 checking for directory renames
370 checking for directory renames
372 resolving manifests
371 resolving manifests
373 branchmerge: True, force: False, partial: False
372 branchmerge: True, force: False, partial: False
374 ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493
373 ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493
374 starting 4 threads for background file closing (?)
375 preserving b for resolve of b
375 preserving b for resolve of b
376 preserving rev for resolve of rev
376 preserving rev for resolve of rev
377 starting 4 threads for background file closing (?)
378 b: both renamed from a -> m (premerge)
377 b: both renamed from a -> m (premerge)
379 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
378 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
380 merging b
379 merging b
381 my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337
380 my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337
382 rev: versions differ -> m (premerge)
381 rev: versions differ -> m (premerge)
383 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
382 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
384 merging rev
383 merging rev
385 my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337
384 my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337
386 b: both renamed from a -> m (merge)
385 b: both renamed from a -> m (merge)
387 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
386 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
388 my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337
387 my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337
389 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
388 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
390 merge tool returned: 0
389 merge tool returned: 0
391 rev: versions differ -> m (merge)
390 rev: versions differ -> m (merge)
392 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
391 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
393 my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337
392 my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337
394 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
393 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
395 merge tool returned: 0
394 merge tool returned: 0
396 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
395 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
397 (branch merge, don't forget to commit)
396 (branch merge, don't forget to commit)
398 --------------
397 --------------
399 M b
398 M b
400 --------------
399 --------------
401
400
402
401
403 m "um a c" "um x c" " " "10 do merge with no ancestor"
402 m "um a c" "um x c" " " "10 do merge with no ancestor"
404
403
405 $ tm "nm a b" "nm a c" " " "11 get c, keep b"
404 $ tm "nm a b" "nm a c" " " "11 get c, keep b"
406 created new head
405 created new head
407 --------------
406 --------------
408 test L:nm a b R:nm a c W: - 11 get c, keep b
407 test L:nm a b R:nm a c W: - 11 get c, keep b
409 --------------
408 --------------
410 unmatched files in local:
409 unmatched files in local:
411 b
410 b
412 unmatched files in other:
411 unmatched files in other:
413 c
412 c
414 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
413 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
415 on local side:
414 on local side:
416 src: 'a' -> dst: 'b' !
415 src: 'a' -> dst: 'b' !
417 on remote side:
416 on remote side:
418 src: 'a' -> dst: 'c' !
417 src: 'a' -> dst: 'c' !
419 checking for directory renames
418 checking for directory renames
420 resolving manifests
419 resolving manifests
421 branchmerge: True, force: False, partial: False
420 branchmerge: True, force: False, partial: False
422 ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e
421 ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e
423 note: possible conflict - a was renamed multiple times to:
422 note: possible conflict - a was renamed multiple times to:
424 b
423 b
425 c
424 c
426 c: remote created -> g
425 c: remote created -> g
427 getting c
426 getting c
428 preserving rev for resolve of rev
427 preserving rev for resolve of rev
429 rev: versions differ -> m (premerge)
428 rev: versions differ -> m (premerge)
430 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
429 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
431 merging rev
430 merging rev
432 my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
431 my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
433 rev: versions differ -> m (merge)
432 rev: versions differ -> m (merge)
434 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
433 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
435 my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
434 my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
436 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
435 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
437 merge tool returned: 0
436 merge tool returned: 0
438 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
437 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
439 (branch merge, don't forget to commit)
438 (branch merge, don't forget to commit)
440 --------------
439 --------------
441 M c
440 M c
442 C b
441 C b
443 --------------
442 --------------
444
443
445 $ tm "nc a b" "up b " " " "12 merge b no ancestor"
444 $ tm "nc a b" "up b " " " "12 merge b no ancestor"
446 created new head
445 created new head
447 --------------
446 --------------
448 test L:nc a b R:up b W: - 12 merge b no ancestor
447 test L:nc a b R:up b W: - 12 merge b no ancestor
449 --------------
448 --------------
450 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
449 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
451 on local side:
450 on local side:
452 src: 'a' -> dst: 'b'
451 src: 'a' -> dst: 'b'
453 checking for directory renames
452 checking for directory renames
454 resolving manifests
453 resolving manifests
455 branchmerge: True, force: False, partial: False
454 branchmerge: True, force: False, partial: False
456 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7
455 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7
456 starting 4 threads for background file closing (?)
457 preserving b for resolve of b
457 preserving b for resolve of b
458 preserving rev for resolve of rev
458 preserving rev for resolve of rev
459 starting 4 threads for background file closing (?)
460 b: both created -> m (premerge)
459 b: both created -> m (premerge)
461 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
460 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
462 merging b
461 merging b
463 my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000
462 my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000
464 rev: versions differ -> m (premerge)
463 rev: versions differ -> m (premerge)
465 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
464 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
466 merging rev
465 merging rev
467 my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337
466 my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337
468 b: both created -> m (merge)
467 b: both created -> m (merge)
469 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
468 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
470 my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000
469 my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000
471 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
470 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
472 merge tool returned: 0
471 merge tool returned: 0
473 rev: versions differ -> m (merge)
472 rev: versions differ -> m (merge)
474 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
473 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
475 my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337
474 my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337
476 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
475 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
477 merge tool returned: 0
476 merge tool returned: 0
478 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
477 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
479 (branch merge, don't forget to commit)
478 (branch merge, don't forget to commit)
480 --------------
479 --------------
481 M b
480 M b
482 C a
481 C a
483 --------------
482 --------------
484
483
485 $ tm "up b " "nm a b" " " "13 merge b no ancestor"
484 $ tm "up b " "nm a b" " " "13 merge b no ancestor"
486 created new head
485 created new head
487 --------------
486 --------------
488 test L:up b R:nm a b W: - 13 merge b no ancestor
487 test L:up b R:nm a b W: - 13 merge b no ancestor
489 --------------
488 --------------
490 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
489 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
491 on remote side:
490 on remote side:
492 src: 'a' -> dst: 'b'
491 src: 'a' -> dst: 'b'
493 checking for directory renames
492 checking for directory renames
494 resolving manifests
493 resolving manifests
495 branchmerge: True, force: False, partial: False
494 branchmerge: True, force: False, partial: False
496 ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a
495 ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a
497 a: other deleted -> r
496 a: other deleted -> r
498 removing a
497 removing a
498 starting 4 threads for background file closing (?)
499 preserving b for resolve of b
499 preserving b for resolve of b
500 preserving rev for resolve of rev
500 preserving rev for resolve of rev
501 starting 4 threads for background file closing (?)
502 b: both created -> m (premerge)
501 b: both created -> m (premerge)
503 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
502 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
504 merging b
503 merging b
505 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
504 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
506 rev: versions differ -> m (premerge)
505 rev: versions differ -> m (premerge)
507 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
506 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
508 merging rev
507 merging rev
509 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
508 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
510 b: both created -> m (merge)
509 b: both created -> m (merge)
511 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
510 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
512 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
511 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
513 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
512 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
514 merge tool returned: 0
513 merge tool returned: 0
515 rev: versions differ -> m (merge)
514 rev: versions differ -> m (merge)
516 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
515 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
517 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
516 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
518 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
517 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
519 merge tool returned: 0
518 merge tool returned: 0
520 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
519 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
521 (branch merge, don't forget to commit)
520 (branch merge, don't forget to commit)
522 --------------
521 --------------
523 M b
522 M b
524 --------------
523 --------------
525
524
526 $ tm "nc a b" "up a b" " " "14 merge b no ancestor"
525 $ tm "nc a b" "up a b" " " "14 merge b no ancestor"
527 created new head
526 created new head
528 --------------
527 --------------
529 test L:nc a b R:up a b W: - 14 merge b no ancestor
528 test L:nc a b R:up a b W: - 14 merge b no ancestor
530 --------------
529 --------------
531 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
530 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
532 on local side:
531 on local side:
533 src: 'a' -> dst: 'b' *
532 src: 'a' -> dst: 'b' *
534 checking for directory renames
533 checking for directory renames
535 resolving manifests
534 resolving manifests
536 branchmerge: True, force: False, partial: False
535 branchmerge: True, force: False, partial: False
537 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a
536 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a
538 a: remote is newer -> g
537 a: remote is newer -> g
539 getting a
538 getting a
540 preserving b for resolve of b
539 preserving b for resolve of b
541 preserving rev for resolve of rev
540 preserving rev for resolve of rev
542 b: both renamed from a -> m (premerge)
541 b: both renamed from a -> m (premerge)
543 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
542 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
544 merging b
543 merging b
545 my b@86a2aa42fc76+ other b@8dbce441892a ancestor a@924404dff337
544 my b@86a2aa42fc76+ other b@8dbce441892a ancestor a@924404dff337
546 premerge successful
545 premerge successful
547 rev: versions differ -> m (premerge)
546 rev: versions differ -> m (premerge)
548 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
547 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
549 merging rev
548 merging rev
550 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
549 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
551 rev: versions differ -> m (merge)
550 rev: versions differ -> m (merge)
552 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
551 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
553 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
552 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
554 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
553 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
555 merge tool returned: 0
554 merge tool returned: 0
556 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
555 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
557 (branch merge, don't forget to commit)
556 (branch merge, don't forget to commit)
558 --------------
557 --------------
559 M a
558 M a
560 M b
559 M b
561 --------------
560 --------------
562
561
563 $ tm "up b " "nm a b" " " "15 merge b no ancestor, remove a"
562 $ tm "up b " "nm a b" " " "15 merge b no ancestor, remove a"
564 created new head
563 created new head
565 --------------
564 --------------
566 test L:up b R:nm a b W: - 15 merge b no ancestor, remove a
565 test L:up b R:nm a b W: - 15 merge b no ancestor, remove a
567 --------------
566 --------------
568 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
567 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
569 on remote side:
568 on remote side:
570 src: 'a' -> dst: 'b'
569 src: 'a' -> dst: 'b'
571 checking for directory renames
570 checking for directory renames
572 resolving manifests
571 resolving manifests
573 branchmerge: True, force: False, partial: False
572 branchmerge: True, force: False, partial: False
574 ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a
573 ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a
575 a: other deleted -> r
574 a: other deleted -> r
576 removing a
575 removing a
576 starting 4 threads for background file closing (?)
577 preserving b for resolve of b
577 preserving b for resolve of b
578 preserving rev for resolve of rev
578 preserving rev for resolve of rev
579 starting 4 threads for background file closing (?)
580 b: both created -> m (premerge)
579 b: both created -> m (premerge)
581 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
580 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
582 merging b
581 merging b
583 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
582 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
584 rev: versions differ -> m (premerge)
583 rev: versions differ -> m (premerge)
585 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
584 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
586 merging rev
585 merging rev
587 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
586 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
588 b: both created -> m (merge)
587 b: both created -> m (merge)
589 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
588 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
590 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
589 my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000
591 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
590 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
592 merge tool returned: 0
591 merge tool returned: 0
593 rev: versions differ -> m (merge)
592 rev: versions differ -> m (merge)
594 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
593 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
595 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
594 my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337
596 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
595 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
597 merge tool returned: 0
596 merge tool returned: 0
598 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
597 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
599 (branch merge, don't forget to commit)
598 (branch merge, don't forget to commit)
600 --------------
599 --------------
601 M b
600 M b
602 --------------
601 --------------
603
602
604 $ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor"
603 $ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor"
605 created new head
604 created new head
606 --------------
605 --------------
607 test L:nc a b R:up a b W: - 16 get a, merge b no ancestor
606 test L:nc a b R:up a b W: - 16 get a, merge b no ancestor
608 --------------
607 --------------
609 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
608 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
610 on local side:
609 on local side:
611 src: 'a' -> dst: 'b' *
610 src: 'a' -> dst: 'b' *
612 checking for directory renames
611 checking for directory renames
613 resolving manifests
612 resolving manifests
614 branchmerge: True, force: False, partial: False
613 branchmerge: True, force: False, partial: False
615 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a
614 ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a
616 a: remote is newer -> g
615 a: remote is newer -> g
617 getting a
616 getting a
618 preserving b for resolve of b
617 preserving b for resolve of b
619 preserving rev for resolve of rev
618 preserving rev for resolve of rev
620 b: both renamed from a -> m (premerge)
619 b: both renamed from a -> m (premerge)
621 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
620 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
622 merging b
621 merging b
623 my b@86a2aa42fc76+ other b@8dbce441892a ancestor a@924404dff337
622 my b@86a2aa42fc76+ other b@8dbce441892a ancestor a@924404dff337
624 premerge successful
623 premerge successful
625 rev: versions differ -> m (premerge)
624 rev: versions differ -> m (premerge)
626 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
625 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
627 merging rev
626 merging rev
628 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
627 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
629 rev: versions differ -> m (merge)
628 rev: versions differ -> m (merge)
630 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
629 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
631 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
630 my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337
632 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
631 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
633 merge tool returned: 0
632 merge tool returned: 0
634 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
633 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
635 (branch merge, don't forget to commit)
634 (branch merge, don't forget to commit)
636 --------------
635 --------------
637 M a
636 M a
638 M b
637 M b
639 --------------
638 --------------
640
639
641 $ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor"
640 $ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor"
642 created new head
641 created new head
643 --------------
642 --------------
644 test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor
643 test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor
645 --------------
644 --------------
646 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
645 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
647 on remote side:
646 on remote side:
648 src: 'a' -> dst: 'b' *
647 src: 'a' -> dst: 'b' *
649 checking for directory renames
648 checking for directory renames
650 resolving manifests
649 resolving manifests
651 branchmerge: True, force: False, partial: False
650 branchmerge: True, force: False, partial: False
652 ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24
651 ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24
652 starting 4 threads for background file closing (?)
653 preserving b for resolve of b
653 preserving b for resolve of b
654 preserving rev for resolve of rev
654 preserving rev for resolve of rev
655 starting 4 threads for background file closing (?)
656 b: both renamed from a -> m (premerge)
655 b: both renamed from a -> m (premerge)
657 starting 4 threads for background file closing (?)
658 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
656 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
659 merging b
657 merging b
660 my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor a@924404dff337
658 my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor a@924404dff337
661 premerge successful
659 premerge successful
662 rev: versions differ -> m (premerge)
660 rev: versions differ -> m (premerge)
663 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
661 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
664 merging rev
662 merging rev
665 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
663 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
666 rev: versions differ -> m (merge)
664 rev: versions differ -> m (merge)
667 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
665 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
668 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
666 my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337
669 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
667 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
670 merge tool returned: 0
668 merge tool returned: 0
671 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
669 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
672 (branch merge, don't forget to commit)
670 (branch merge, don't forget to commit)
673 --------------
671 --------------
674 M b
672 M b
675 C a
673 C a
676 --------------
674 --------------
677
675
678 $ tm "nm a b" "up a b" " " "18 merge b no ancestor"
676 $ tm "nm a b" "up a b" " " "18 merge b no ancestor"
679 created new head
677 created new head
680 --------------
678 --------------
681 test L:nm a b R:up a b W: - 18 merge b no ancestor
679 test L:nm a b R:up a b W: - 18 merge b no ancestor
682 --------------
680 --------------
683 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
681 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
684 on local side:
682 on local side:
685 src: 'a' -> dst: 'b' *
683 src: 'a' -> dst: 'b' *
686 checking for directory renames
684 checking for directory renames
687 resolving manifests
685 resolving manifests
688 branchmerge: True, force: False, partial: False
686 branchmerge: True, force: False, partial: False
689 ancestor: 924404dff337, local: 02963e448370+, remote: 8dbce441892a
687 ancestor: 924404dff337, local: 02963e448370+, remote: 8dbce441892a
688 starting 4 threads for background file closing (?)
690 preserving b for resolve of b
689 preserving b for resolve of b
691 preserving rev for resolve of rev
690 preserving rev for resolve of rev
692 starting 4 threads for background file closing (?)
693 b: both renamed from a -> m (premerge)
691 b: both renamed from a -> m (premerge)
694 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
692 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
695 merging b
693 merging b
696 my b@02963e448370+ other b@8dbce441892a ancestor a@924404dff337
694 my b@02963e448370+ other b@8dbce441892a ancestor a@924404dff337
697 premerge successful
695 premerge successful
698 rev: versions differ -> m (premerge)
696 rev: versions differ -> m (premerge)
699 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
697 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
700 merging rev
698 merging rev
701 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
699 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
702 rev: versions differ -> m (merge)
700 rev: versions differ -> m (merge)
703 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
701 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
704 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
702 my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337
705 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
703 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
706 merge tool returned: 0
704 merge tool returned: 0
707 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
705 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
708 (branch merge, don't forget to commit)
706 (branch merge, don't forget to commit)
709 --------------
707 --------------
710 M b
708 M b
711 --------------
709 --------------
712
710
713 $ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a"
711 $ tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a"
714 created new head
712 created new head
715 --------------
713 --------------
716 test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a
714 test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a
717 --------------
715 --------------
718 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
716 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
719 on remote side:
717 on remote side:
720 src: 'a' -> dst: 'b' *
718 src: 'a' -> dst: 'b' *
721 checking for directory renames
719 checking for directory renames
722 resolving manifests
720 resolving manifests
723 branchmerge: True, force: False, partial: False
721 branchmerge: True, force: False, partial: False
724 ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a
722 ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a
723 starting 4 threads for background file closing (?)
725 preserving b for resolve of b
724 preserving b for resolve of b
726 preserving rev for resolve of rev
725 preserving rev for resolve of rev
727 starting 4 threads for background file closing (?)
728 b: both renamed from a -> m (premerge)
726 b: both renamed from a -> m (premerge)
729 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
727 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
730 merging b
728 merging b
731 my b@0b76e65c8289+ other b@bdb19105162a ancestor a@924404dff337
729 my b@0b76e65c8289+ other b@bdb19105162a ancestor a@924404dff337
732 premerge successful
730 premerge successful
733 rev: versions differ -> m (premerge)
731 rev: versions differ -> m (premerge)
734 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
732 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
735 merging rev
733 merging rev
736 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
734 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
737 rev: versions differ -> m (merge)
735 rev: versions differ -> m (merge)
738 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
736 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
739 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
737 my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337
740 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
738 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
741 merge tool returned: 0
739 merge tool returned: 0
742 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
740 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
743 (branch merge, don't forget to commit)
741 (branch merge, don't forget to commit)
744 --------------
742 --------------
745 M b
743 M b
746 C a
744 C a
747 --------------
745 --------------
748
746
749 $ tm "up a " "um a b" " " "20 merge a and b to b, remove a"
747 $ tm "up a " "um a b" " " "20 merge a and b to b, remove a"
750 created new head
748 created new head
751 --------------
749 --------------
752 test L:up a R:um a b W: - 20 merge a and b to b, remove a
750 test L:up a R:um a b W: - 20 merge a and b to b, remove a
753 --------------
751 --------------
754 unmatched files in other:
752 unmatched files in other:
755 b
753 b
756 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
754 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
757 on remote side:
755 on remote side:
758 src: 'a' -> dst: 'b' *
756 src: 'a' -> dst: 'b' *
759 checking for directory renames
757 checking for directory renames
760 resolving manifests
758 resolving manifests
761 branchmerge: True, force: False, partial: False
759 branchmerge: True, force: False, partial: False
762 ancestor: 924404dff337, local: e300d1c794ec+, remote: 49b6d8032493
760 ancestor: 924404dff337, local: e300d1c794ec+, remote: 49b6d8032493
761 starting 4 threads for background file closing (?)
763 preserving a for resolve of b
762 preserving a for resolve of b
764 preserving rev for resolve of rev
763 preserving rev for resolve of rev
765 removing a
764 removing a
766 starting 4 threads for background file closing (?)
767 b: remote moved from a -> m (premerge)
765 b: remote moved from a -> m (premerge)
768 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
766 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
769 merging a and b to b
767 merging a and b to b
770 my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337
768 my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337
771 rev: versions differ -> m (premerge)
769 rev: versions differ -> m (premerge)
772 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
770 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
773 merging rev
771 merging rev
774 my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337
772 my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337
775 b: remote moved from a -> m (merge)
773 b: remote moved from a -> m (merge)
776 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
774 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
777 my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337
775 my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337
778 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
776 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
779 merge tool returned: 0
777 merge tool returned: 0
780 rev: versions differ -> m (merge)
778 rev: versions differ -> m (merge)
781 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
779 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
782 my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337
780 my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337
783 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
781 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
784 merge tool returned: 0
782 merge tool returned: 0
785 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
783 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
786 (branch merge, don't forget to commit)
784 (branch merge, don't forget to commit)
787 --------------
785 --------------
788 M b
786 M b
789 a
787 a
790 --------------
788 --------------
791
789
792 $ tm "um a b" "up a " " " "21 merge a and b to b"
790 $ tm "um a b" "up a " " " "21 merge a and b to b"
793 created new head
791 created new head
794 --------------
792 --------------
795 test L:um a b R:up a W: - 21 merge a and b to b
793 test L:um a b R:up a W: - 21 merge a and b to b
796 --------------
794 --------------
797 unmatched files in local:
795 unmatched files in local:
798 b
796 b
799 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
797 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
800 on local side:
798 on local side:
801 src: 'a' -> dst: 'b' *
799 src: 'a' -> dst: 'b' *
802 checking for directory renames
800 checking for directory renames
803 resolving manifests
801 resolving manifests
804 branchmerge: True, force: False, partial: False
802 branchmerge: True, force: False, partial: False
805 ancestor: 924404dff337, local: 62e7bf090eba+, remote: f4db7e329e71
803 ancestor: 924404dff337, local: 62e7bf090eba+, remote: f4db7e329e71
804 starting 4 threads for background file closing (?)
806 preserving b for resolve of b
805 preserving b for resolve of b
807 preserving rev for resolve of rev
806 preserving rev for resolve of rev
808 starting 4 threads for background file closing (?)
809 b: local copied/moved from a -> m (premerge)
807 b: local copied/moved from a -> m (premerge)
810 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
808 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
811 merging b and a to b
809 merging b and a to b
812 my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337
810 my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337
813 rev: versions differ -> m (premerge)
811 rev: versions differ -> m (premerge)
814 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
812 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
815 merging rev
813 merging rev
816 my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337
814 my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337
817 b: local copied/moved from a -> m (merge)
815 b: local copied/moved from a -> m (merge)
818 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
816 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
819 my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337
817 my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337
820 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
818 launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob)
821 merge tool returned: 0
819 merge tool returned: 0
822 rev: versions differ -> m (merge)
820 rev: versions differ -> m (merge)
823 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
821 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
824 my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337
822 my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337
825 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
823 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
826 merge tool returned: 0
824 merge tool returned: 0
827 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
825 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
828 (branch merge, don't forget to commit)
826 (branch merge, don't forget to commit)
829 --------------
827 --------------
830 M b
828 M b
831 a
829 a
832 --------------
830 --------------
833
831
834
832
835 m "nm a b" "um x a" " " "22 get a, keep b"
833 m "nm a b" "um x a" " " "22 get a, keep b"
836
834
837 $ tm "nm a b" "up a c" " " "23 get c, keep b"
835 $ tm "nm a b" "up a c" " " "23 get c, keep b"
838 created new head
836 created new head
839 --------------
837 --------------
840 test L:nm a b R:up a c W: - 23 get c, keep b
838 test L:nm a b R:up a c W: - 23 get c, keep b
841 --------------
839 --------------
842 unmatched files in local:
840 unmatched files in local:
843 b
841 b
844 unmatched files in other:
842 unmatched files in other:
845 c
843 c
846 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
844 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
847 on local side:
845 on local side:
848 src: 'a' -> dst: 'b' *
846 src: 'a' -> dst: 'b' *
849 checking for directory renames
847 checking for directory renames
850 resolving manifests
848 resolving manifests
851 branchmerge: True, force: False, partial: False
849 branchmerge: True, force: False, partial: False
852 ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f
850 ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f
853 c: remote created -> g
851 c: remote created -> g
854 getting c
852 getting c
855 preserving b for resolve of b
853 preserving b for resolve of b
856 preserving rev for resolve of rev
854 preserving rev for resolve of rev
857 b: local copied/moved from a -> m (premerge)
855 b: local copied/moved from a -> m (premerge)
858 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
856 picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob)
859 merging b and a to b
857 merging b and a to b
860 my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337
858 my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337
861 premerge successful
859 premerge successful
862 rev: versions differ -> m (premerge)
860 rev: versions differ -> m (premerge)
863 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
861 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
864 merging rev
862 merging rev
865 my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337
863 my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337
866 rev: versions differ -> m (merge)
864 rev: versions differ -> m (merge)
867 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
865 picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob)
868 my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337
866 my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337
869 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
867 launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob)
870 merge tool returned: 0
868 merge tool returned: 0
871 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
869 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
872 (branch merge, don't forget to commit)
870 (branch merge, don't forget to commit)
873 --------------
871 --------------
874 M b
872 M b
875 a
873 a
876 M c
874 M c
877 --------------
875 --------------
878
876
879
877
880 $ cd ..
878 $ cd ..
881
879
882
880
883 Systematic and terse testing of merge merges and ancestor calculation:
881 Systematic and terse testing of merge merges and ancestor calculation:
884
882
885 Expected result:
883 Expected result:
886
884
887 \ a m1 m2 dst
885 \ a m1 m2 dst
888 0 - f f f "versions differ"
886 0 - f f f "versions differ"
889 1 f g g g "versions differ"
887 1 f g g g "versions differ"
890 2 f f f f "versions differ"
888 2 f f f f "versions differ"
891 3 f f g f+g "remote copied to " + f
889 3 f f g f+g "remote copied to " + f
892 4 f f g g "remote moved to " + f
890 4 f f g g "remote moved to " + f
893 5 f g f f+g "local copied to " + f2
891 5 f g f f+g "local copied to " + f2
894 6 f g f g "local moved to " + f2
892 6 f g f g "local moved to " + f2
895 7 - (f) f f "remote differs from untracked local"
893 7 - (f) f f "remote differs from untracked local"
896 8 f (f) f f "remote differs from untracked local"
894 8 f (f) f f "remote differs from untracked local"
897
895
898 $ hg init ancestortest
896 $ hg init ancestortest
899 $ cd ancestortest
897 $ cd ancestortest
900 $ for x in 1 2 3 4 5 6 8; do mkdir $x; echo a > $x/f; done
898 $ for x in 1 2 3 4 5 6 8; do mkdir $x; echo a > $x/f; done
901 $ hg ci -Aqm "a"
899 $ hg ci -Aqm "a"
902 $ mkdir 0
900 $ mkdir 0
903 $ touch 0/f
901 $ touch 0/f
904 $ hg mv 1/f 1/g
902 $ hg mv 1/f 1/g
905 $ hg cp 5/f 5/g
903 $ hg cp 5/f 5/g
906 $ hg mv 6/f 6/g
904 $ hg mv 6/f 6/g
907 $ hg rm 8/f
905 $ hg rm 8/f
908 $ for x in */*; do echo m1 > $x; done
906 $ for x in */*; do echo m1 > $x; done
909 $ hg ci -Aqm "m1"
907 $ hg ci -Aqm "m1"
910 $ hg up -qr0
908 $ hg up -qr0
911 $ mkdir 0 7
909 $ mkdir 0 7
912 $ touch 0/f 7/f
910 $ touch 0/f 7/f
913 $ hg mv 1/f 1/g
911 $ hg mv 1/f 1/g
914 $ hg cp 3/f 3/g
912 $ hg cp 3/f 3/g
915 $ hg mv 4/f 4/g
913 $ hg mv 4/f 4/g
916 $ for x in */*; do echo m2 > $x; done
914 $ for x in */*; do echo m2 > $x; done
917 $ hg ci -Aqm "m2"
915 $ hg ci -Aqm "m2"
918 $ hg up -qr1
916 $ hg up -qr1
919 $ mkdir 7 8
917 $ mkdir 7 8
920 $ echo m > 7/f
918 $ echo m > 7/f
921 $ echo m > 8/f
919 $ echo m > 8/f
922 $ hg merge -f --tool internal:dump -v --debug -r2 | sed '/^resolving manifests/,$d' 2> /dev/null
920 $ hg merge -f --tool internal:dump -v --debug -r2 | sed '/^resolving manifests/,$d' 2> /dev/null
923 unmatched files in local:
921 unmatched files in local:
924 5/g
922 5/g
925 6/g
923 6/g
926 unmatched files in other:
924 unmatched files in other:
927 3/g
925 3/g
928 4/g
926 4/g
929 7/f
927 7/f
930 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
928 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
931 on local side:
929 on local side:
932 src: '1/f' -> dst: '1/g' *
930 src: '1/f' -> dst: '1/g' *
933 src: '5/f' -> dst: '5/g' *
931 src: '5/f' -> dst: '5/g' *
934 src: '6/f' -> dst: '6/g' *
932 src: '6/f' -> dst: '6/g' *
935 on remote side:
933 on remote side:
936 src: '1/f' -> dst: '1/g' *
934 src: '1/f' -> dst: '1/g' *
937 src: '3/f' -> dst: '3/g' *
935 src: '3/f' -> dst: '3/g' *
938 src: '4/f' -> dst: '4/g' *
936 src: '4/f' -> dst: '4/g' *
939 checking for directory renames
937 checking for directory renames
940 $ hg mani
938 $ hg mani
941 0/f
939 0/f
942 1/g
940 1/g
943 2/f
941 2/f
944 3/f
942 3/f
945 4/f
943 4/f
946 5/f
944 5/f
947 5/g
945 5/g
948 6/g
946 6/g
949 $ for f in */*; do echo $f:; cat $f; done
947 $ for f in */*; do echo $f:; cat $f; done
950 0/f:
948 0/f:
951 m1
949 m1
952 0/f.base:
950 0/f.base:
953 0/f.local:
951 0/f.local:
954 m1
952 m1
955 0/f.orig:
953 0/f.orig:
956 m1
954 m1
957 0/f.other:
955 0/f.other:
958 m2
956 m2
959 1/g:
957 1/g:
960 m1
958 m1
961 1/g.base:
959 1/g.base:
962 a
960 a
963 1/g.local:
961 1/g.local:
964 m1
962 m1
965 1/g.orig:
963 1/g.orig:
966 m1
964 m1
967 1/g.other:
965 1/g.other:
968 m2
966 m2
969 2/f:
967 2/f:
970 m1
968 m1
971 2/f.base:
969 2/f.base:
972 a
970 a
973 2/f.local:
971 2/f.local:
974 m1
972 m1
975 2/f.orig:
973 2/f.orig:
976 m1
974 m1
977 2/f.other:
975 2/f.other:
978 m2
976 m2
979 3/f:
977 3/f:
980 m1
978 m1
981 3/f.base:
979 3/f.base:
982 a
980 a
983 3/f.local:
981 3/f.local:
984 m1
982 m1
985 3/f.orig:
983 3/f.orig:
986 m1
984 m1
987 3/f.other:
985 3/f.other:
988 m2
986 m2
989 3/g:
987 3/g:
990 m1
988 m1
991 3/g.base:
989 3/g.base:
992 a
990 a
993 3/g.local:
991 3/g.local:
994 m1
992 m1
995 3/g.orig:
993 3/g.orig:
996 m1
994 m1
997 3/g.other:
995 3/g.other:
998 m2
996 m2
999 4/g:
997 4/g:
1000 m1
998 m1
1001 4/g.base:
999 4/g.base:
1002 a
1000 a
1003 4/g.local:
1001 4/g.local:
1004 m1
1002 m1
1005 4/g.orig:
1003 4/g.orig:
1006 m1
1004 m1
1007 4/g.other:
1005 4/g.other:
1008 m2
1006 m2
1009 5/f:
1007 5/f:
1010 m1
1008 m1
1011 5/f.base:
1009 5/f.base:
1012 a
1010 a
1013 5/f.local:
1011 5/f.local:
1014 m1
1012 m1
1015 5/f.orig:
1013 5/f.orig:
1016 m1
1014 m1
1017 5/f.other:
1015 5/f.other:
1018 m2
1016 m2
1019 5/g:
1017 5/g:
1020 m1
1018 m1
1021 5/g.base:
1019 5/g.base:
1022 a
1020 a
1023 5/g.local:
1021 5/g.local:
1024 m1
1022 m1
1025 5/g.orig:
1023 5/g.orig:
1026 m1
1024 m1
1027 5/g.other:
1025 5/g.other:
1028 m2
1026 m2
1029 6/g:
1027 6/g:
1030 m1
1028 m1
1031 6/g.base:
1029 6/g.base:
1032 a
1030 a
1033 6/g.local:
1031 6/g.local:
1034 m1
1032 m1
1035 6/g.orig:
1033 6/g.orig:
1036 m1
1034 m1
1037 6/g.other:
1035 6/g.other:
1038 m2
1036 m2
1039 7/f:
1037 7/f:
1040 m
1038 m
1041 7/f.base:
1039 7/f.base:
1042 7/f.local:
1040 7/f.local:
1043 m
1041 m
1044 7/f.orig:
1042 7/f.orig:
1045 m
1043 m
1046 7/f.other:
1044 7/f.other:
1047 m2
1045 m2
1048 8/f:
1046 8/f:
1049 m2
1047 m2
1050 $ cd ..
1048 $ cd ..
@@ -1,2035 +1,2035 b''
1 Let commit recurse into subrepos by default to match pre-2.0 behavior:
1 Let commit recurse into subrepos by default to match pre-2.0 behavior:
2
2
3 $ echo "[ui]" >> $HGRCPATH
3 $ echo "[ui]" >> $HGRCPATH
4 $ echo "commitsubrepos = Yes" >> $HGRCPATH
4 $ echo "commitsubrepos = Yes" >> $HGRCPATH
5
5
6 $ hg init t
6 $ hg init t
7 $ cd t
7 $ cd t
8
8
9 first revision, no sub
9 first revision, no sub
10
10
11 $ echo a > a
11 $ echo a > a
12 $ hg ci -Am0
12 $ hg ci -Am0
13 adding a
13 adding a
14
14
15 add first sub
15 add first sub
16
16
17 $ echo s = s > .hgsub
17 $ echo s = s > .hgsub
18 $ hg add .hgsub
18 $ hg add .hgsub
19 $ hg init s
19 $ hg init s
20 $ echo a > s/a
20 $ echo a > s/a
21
21
22 Issue2232: committing a subrepo without .hgsub
22 Issue2232: committing a subrepo without .hgsub
23
23
24 $ hg ci -mbad s
24 $ hg ci -mbad s
25 abort: can't commit subrepos without .hgsub
25 abort: can't commit subrepos without .hgsub
26 [255]
26 [255]
27
27
28 $ hg -R s add s/a
28 $ hg -R s add s/a
29 $ hg files -S
29 $ hg files -S
30 .hgsub
30 .hgsub
31 a
31 a
32 s/a
32 s/a
33
33
34 `hg files` respects ui.relative-paths
34 `hg files` respects ui.relative-paths
35 BROKEN: shows subrepo paths relative to the subrepo
35 BROKEN: shows subrepo paths relative to the subrepo
36 $ hg files -S --config ui.relative-paths=no
36 $ hg files -S --config ui.relative-paths=no
37 .hgsub
37 .hgsub
38 a
38 a
39 s/a
39 s/a
40
40
41 $ hg -R s ci -Ams0
41 $ hg -R s ci -Ams0
42 $ hg sum
42 $ hg sum
43 parent: 0:f7b1eb17ad24 tip
43 parent: 0:f7b1eb17ad24 tip
44 0
44 0
45 branch: default
45 branch: default
46 commit: 1 added, 1 subrepos
46 commit: 1 added, 1 subrepos
47 update: (current)
47 update: (current)
48 phases: 1 draft
48 phases: 1 draft
49 $ hg ci -m1
49 $ hg ci -m1
50
50
51 test handling .hgsubstate "added" explicitly.
51 test handling .hgsubstate "added" explicitly.
52
52
53 $ hg parents --template '{node}\n{files}\n'
53 $ hg parents --template '{node}\n{files}\n'
54 7cf8cfea66e410e8e3336508dfeec07b3192de51
54 7cf8cfea66e410e8e3336508dfeec07b3192de51
55 .hgsub .hgsubstate
55 .hgsub .hgsubstate
56 $ hg rollback -q
56 $ hg rollback -q
57 $ hg add .hgsubstate
57 $ hg add .hgsubstate
58 $ hg ci -m1
58 $ hg ci -m1
59 $ hg parents --template '{node}\n{files}\n'
59 $ hg parents --template '{node}\n{files}\n'
60 7cf8cfea66e410e8e3336508dfeec07b3192de51
60 7cf8cfea66e410e8e3336508dfeec07b3192de51
61 .hgsub .hgsubstate
61 .hgsub .hgsubstate
62
62
63 Subrepopath which overlaps with filepath, does not change warnings in remove()
63 Subrepopath which overlaps with filepath, does not change warnings in remove()
64
64
65 $ mkdir snot
65 $ mkdir snot
66 $ touch snot/file
66 $ touch snot/file
67 $ hg remove -S snot/file
67 $ hg remove -S snot/file
68 not removing snot/file: file is untracked
68 not removing snot/file: file is untracked
69 [1]
69 [1]
70 $ hg cat snot/filenot
70 $ hg cat snot/filenot
71 snot/filenot: no such file in rev 7cf8cfea66e4
71 snot/filenot: no such file in rev 7cf8cfea66e4
72 [1]
72 [1]
73 $ rm -r snot
73 $ rm -r snot
74
74
75 Revert subrepo and test subrepo fileset keyword:
75 Revert subrepo and test subrepo fileset keyword:
76
76
77 $ echo b > s/a
77 $ echo b > s/a
78 $ hg revert --dry-run "set:subrepo('glob:s*')"
78 $ hg revert --dry-run "set:subrepo('glob:s*')"
79 reverting subrepo s
79 reverting subrepo s
80 reverting s/a
80 reverting s/a
81 $ cat s/a
81 $ cat s/a
82 b
82 b
83 $ hg revert "set:subrepo('glob:s*')"
83 $ hg revert "set:subrepo('glob:s*')"
84 reverting subrepo s
84 reverting subrepo s
85 reverting s/a
85 reverting s/a
86 $ cat s/a
86 $ cat s/a
87 a
87 a
88 $ rm s/a.orig
88 $ rm s/a.orig
89
89
90 Revert subrepo with no backup. The "reverting s/a" line is gone since
90 Revert subrepo with no backup. The "reverting s/a" line is gone since
91 we're really running 'hg update' in the subrepo:
91 we're really running 'hg update' in the subrepo:
92
92
93 $ echo b > s/a
93 $ echo b > s/a
94 $ hg revert --no-backup s
94 $ hg revert --no-backup s
95 reverting subrepo s
95 reverting subrepo s
96
96
97 Issue2022: update -C
97 Issue2022: update -C
98
98
99 $ echo b > s/a
99 $ echo b > s/a
100 $ hg sum
100 $ hg sum
101 parent: 1:7cf8cfea66e4 tip
101 parent: 1:7cf8cfea66e4 tip
102 1
102 1
103 branch: default
103 branch: default
104 commit: 1 subrepos
104 commit: 1 subrepos
105 update: (current)
105 update: (current)
106 phases: 2 draft
106 phases: 2 draft
107 $ hg co -C 1
107 $ hg co -C 1
108 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
108 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
109 $ hg sum
109 $ hg sum
110 parent: 1:7cf8cfea66e4 tip
110 parent: 1:7cf8cfea66e4 tip
111 1
111 1
112 branch: default
112 branch: default
113 commit: (clean)
113 commit: (clean)
114 update: (current)
114 update: (current)
115 phases: 2 draft
115 phases: 2 draft
116
116
117 commands that require a clean repo should respect subrepos
117 commands that require a clean repo should respect subrepos
118
118
119 $ echo b >> s/a
119 $ echo b >> s/a
120 $ hg backout tip
120 $ hg backout tip
121 abort: uncommitted changes in subrepository "s"
121 abort: uncommitted changes in subrepository "s"
122 [255]
122 [255]
123 $ hg revert -C -R s s/a
123 $ hg revert -C -R s s/a
124
124
125 add sub sub
125 add sub sub
126
126
127 $ echo ss = ss > s/.hgsub
127 $ echo ss = ss > s/.hgsub
128 $ hg init s/ss
128 $ hg init s/ss
129 $ echo a > s/ss/a
129 $ echo a > s/ss/a
130 $ hg -R s add s/.hgsub
130 $ hg -R s add s/.hgsub
131 $ hg -R s/ss add s/ss/a
131 $ hg -R s/ss add s/ss/a
132 $ hg sum
132 $ hg sum
133 parent: 1:7cf8cfea66e4 tip
133 parent: 1:7cf8cfea66e4 tip
134 1
134 1
135 branch: default
135 branch: default
136 commit: 1 subrepos
136 commit: 1 subrepos
137 update: (current)
137 update: (current)
138 phases: 2 draft
138 phases: 2 draft
139 $ hg ci -m2
139 $ hg ci -m2
140 committing subrepository s
140 committing subrepository s
141 committing subrepository s/ss
141 committing subrepository s/ss
142 $ hg sum
142 $ hg sum
143 parent: 2:df30734270ae tip
143 parent: 2:df30734270ae tip
144 2
144 2
145 branch: default
145 branch: default
146 commit: (clean)
146 commit: (clean)
147 update: (current)
147 update: (current)
148 phases: 3 draft
148 phases: 3 draft
149
149
150 test handling .hgsubstate "modified" explicitly.
150 test handling .hgsubstate "modified" explicitly.
151
151
152 $ hg parents --template '{node}\n{files}\n'
152 $ hg parents --template '{node}\n{files}\n'
153 df30734270ae757feb35e643b7018e818e78a9aa
153 df30734270ae757feb35e643b7018e818e78a9aa
154 .hgsubstate
154 .hgsubstate
155 $ hg rollback -q
155 $ hg rollback -q
156 $ hg status -A .hgsubstate
156 $ hg status -A .hgsubstate
157 M .hgsubstate
157 M .hgsubstate
158 $ hg ci -m2
158 $ hg ci -m2
159 $ hg parents --template '{node}\n{files}\n'
159 $ hg parents --template '{node}\n{files}\n'
160 df30734270ae757feb35e643b7018e818e78a9aa
160 df30734270ae757feb35e643b7018e818e78a9aa
161 .hgsubstate
161 .hgsubstate
162
162
163 bump sub rev (and check it is ignored by ui.commitsubrepos)
163 bump sub rev (and check it is ignored by ui.commitsubrepos)
164
164
165 $ echo b > s/a
165 $ echo b > s/a
166 $ hg -R s ci -ms1
166 $ hg -R s ci -ms1
167 $ hg --config ui.commitsubrepos=no ci -m3
167 $ hg --config ui.commitsubrepos=no ci -m3
168
168
169 leave sub dirty (and check ui.commitsubrepos=no aborts the commit)
169 leave sub dirty (and check ui.commitsubrepos=no aborts the commit)
170
170
171 $ echo c > s/a
171 $ echo c > s/a
172 $ hg --config ui.commitsubrepos=no ci -m4
172 $ hg --config ui.commitsubrepos=no ci -m4
173 abort: uncommitted changes in subrepository "s"
173 abort: uncommitted changes in subrepository "s"
174 (use --subrepos for recursive commit)
174 (use --subrepos for recursive commit)
175 [255]
175 [255]
176 $ hg id
176 $ hg id
177 f6affe3fbfaa+ tip
177 f6affe3fbfaa+ tip
178 $ hg -R s ci -mc
178 $ hg -R s ci -mc
179 $ hg id
179 $ hg id
180 f6affe3fbfaa+ tip
180 f6affe3fbfaa+ tip
181 $ echo d > s/a
181 $ echo d > s/a
182 $ hg ci -m4
182 $ hg ci -m4
183 committing subrepository s
183 committing subrepository s
184 $ hg tip -R s
184 $ hg tip -R s
185 changeset: 4:02dcf1d70411
185 changeset: 4:02dcf1d70411
186 tag: tip
186 tag: tip
187 user: test
187 user: test
188 date: Thu Jan 01 00:00:00 1970 +0000
188 date: Thu Jan 01 00:00:00 1970 +0000
189 summary: 4
189 summary: 4
190
190
191
191
192 check caching
192 check caching
193
193
194 $ hg co 0
194 $ hg co 0
195 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
195 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
196 $ hg debugsub
196 $ hg debugsub
197
197
198 restore
198 restore
199
199
200 $ hg co
200 $ hg co
201 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
201 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
202 $ hg debugsub
202 $ hg debugsub
203 path s
203 path s
204 source s
204 source s
205 revision 02dcf1d704118aee3ee306ccfa1910850d5b05ef
205 revision 02dcf1d704118aee3ee306ccfa1910850d5b05ef
206
206
207 new branch for merge tests
207 new branch for merge tests
208
208
209 $ hg co 1
209 $ hg co 1
210 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
210 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
211 $ echo t = t >> .hgsub
211 $ echo t = t >> .hgsub
212 $ hg init t
212 $ hg init t
213 $ echo t > t/t
213 $ echo t > t/t
214 $ hg -R t add t
214 $ hg -R t add t
215 adding t/t
215 adding t/t
216
216
217 5
217 5
218
218
219 $ hg ci -m5 # add sub
219 $ hg ci -m5 # add sub
220 committing subrepository t
220 committing subrepository t
221 created new head
221 created new head
222 $ echo t2 > t/t
222 $ echo t2 > t/t
223
223
224 6
224 6
225
225
226 $ hg st -R s
226 $ hg st -R s
227 $ hg ci -m6 # change sub
227 $ hg ci -m6 # change sub
228 committing subrepository t
228 committing subrepository t
229 $ hg debugsub
229 $ hg debugsub
230 path s
230 path s
231 source s
231 source s
232 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
232 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
233 path t
233 path t
234 source t
234 source t
235 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
235 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
236 $ echo t3 > t/t
236 $ echo t3 > t/t
237
237
238 7
238 7
239
239
240 $ hg ci -m7 # change sub again for conflict test
240 $ hg ci -m7 # change sub again for conflict test
241 committing subrepository t
241 committing subrepository t
242 $ hg rm .hgsub
242 $ hg rm .hgsub
243
243
244 8
244 8
245
245
246 $ hg ci -m8 # remove sub
246 $ hg ci -m8 # remove sub
247
247
248 test handling .hgsubstate "removed" explicitly.
248 test handling .hgsubstate "removed" explicitly.
249
249
250 $ hg parents --template '{node}\n{files}\n'
250 $ hg parents --template '{node}\n{files}\n'
251 96615c1dad2dc8e3796d7332c77ce69156f7b78e
251 96615c1dad2dc8e3796d7332c77ce69156f7b78e
252 .hgsub .hgsubstate
252 .hgsub .hgsubstate
253 $ hg rollback -q
253 $ hg rollback -q
254 $ hg remove .hgsubstate
254 $ hg remove .hgsubstate
255 $ hg ci -m8
255 $ hg ci -m8
256 $ hg parents --template '{node}\n{files}\n'
256 $ hg parents --template '{node}\n{files}\n'
257 96615c1dad2dc8e3796d7332c77ce69156f7b78e
257 96615c1dad2dc8e3796d7332c77ce69156f7b78e
258 .hgsub .hgsubstate
258 .hgsub .hgsubstate
259
259
260 merge tests
260 merge tests
261
261
262 $ hg co -C 3
262 $ hg co -C 3
263 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
263 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
264 $ hg merge 5 # test adding
264 $ hg merge 5 # test adding
265 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
265 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
266 (branch merge, don't forget to commit)
266 (branch merge, don't forget to commit)
267 $ hg debugsub
267 $ hg debugsub
268 path s
268 path s
269 source s
269 source s
270 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
270 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
271 path t
271 path t
272 source t
272 source t
273 revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
273 revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
274 $ hg ci -m9
274 $ hg ci -m9
275 created new head
275 created new head
276 $ hg merge 6 --debug # test change
276 $ hg merge 6 --debug # test change
277 resolving manifests
277 resolving manifests
278 branchmerge: True, force: False, partial: False
278 branchmerge: True, force: False, partial: False
279 ancestor: 1f14a2e2d3ec, local: f0d2028bf86d+, remote: 1831e14459c4
279 ancestor: 1f14a2e2d3ec, local: f0d2028bf86d+, remote: 1831e14459c4
280 starting 4 threads for background file closing (?)
280 starting 4 threads for background file closing (?)
281 .hgsubstate: versions differ -> m (premerge)
281 .hgsubstate: versions differ -> m (premerge)
282 subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
282 subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
283 subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
283 subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
284 getting subrepo t
284 getting subrepo t
285 resolving manifests
285 resolving manifests
286 branchmerge: False, force: False, partial: False
286 branchmerge: False, force: False, partial: False
287 ancestor: 60ca1237c194, local: 60ca1237c194+, remote: 6747d179aa9a
287 ancestor: 60ca1237c194, local: 60ca1237c194+, remote: 6747d179aa9a
288 t: remote is newer -> g
288 t: remote is newer -> g
289 getting t
289 getting t
290 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
290 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
291 (branch merge, don't forget to commit)
291 (branch merge, don't forget to commit)
292 $ hg debugsub
292 $ hg debugsub
293 path s
293 path s
294 source s
294 source s
295 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
295 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
296 path t
296 path t
297 source t
297 source t
298 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
298 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
299 $ echo conflict > t/t
299 $ echo conflict > t/t
300 $ hg ci -m10
300 $ hg ci -m10
301 committing subrepository t
301 committing subrepository t
302 $ HGMERGE=internal:merge hg merge --debug 7 # test conflict
302 $ HGMERGE=internal:merge hg merge --debug 7 # test conflict
303 resolving manifests
303 resolving manifests
304 branchmerge: True, force: False, partial: False
304 branchmerge: True, force: False, partial: False
305 ancestor: 1831e14459c4, local: e45c8b14af55+, remote: f94576341bcf
305 ancestor: 1831e14459c4, local: e45c8b14af55+, remote: f94576341bcf
306 starting 4 threads for background file closing (?)
306 starting 4 threads for background file closing (?)
307 .hgsubstate: versions differ -> m (premerge)
307 .hgsubstate: versions differ -> m (premerge)
308 subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
308 subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
309 subrepo t: both sides changed
309 subrepo t: both sides changed
310 subrepository t diverged (local revision: 20a0db6fbf6c, remote revision: 7af322bc1198)
310 subrepository t diverged (local revision: 20a0db6fbf6c, remote revision: 7af322bc1198)
311 starting 4 threads for background file closing (?)
311 starting 4 threads for background file closing (?)
312 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [merge rev].
312 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [merge rev].
313 what do you want to do? m
313 what do you want to do? m
314 merging subrepository "t"
314 merging subrepository "t"
315 resolving manifests
315 resolving manifests
316 branchmerge: True, force: False, partial: False
316 branchmerge: True, force: False, partial: False
317 ancestor: 6747d179aa9a, local: 20a0db6fbf6c+, remote: 7af322bc1198
317 ancestor: 6747d179aa9a, local: 20a0db6fbf6c+, remote: 7af322bc1198
318 starting 4 threads for background file closing (?)
318 preserving t for resolve of t
319 preserving t for resolve of t
319 starting 4 threads for background file closing (?)
320 t: versions differ -> m (premerge)
320 t: versions differ -> m (premerge)
321 picked tool ':merge' for t (binary False symlink False changedelete False)
321 picked tool ':merge' for t (binary False symlink False changedelete False)
322 merging t
322 merging t
323 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
323 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
324 t: versions differ -> m (merge)
324 t: versions differ -> m (merge)
325 picked tool ':merge' for t (binary False symlink False changedelete False)
325 picked tool ':merge' for t (binary False symlink False changedelete False)
326 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
326 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
327 warning: conflicts while merging t! (edit, then use 'hg resolve --mark')
327 warning: conflicts while merging t! (edit, then use 'hg resolve --mark')
328 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
328 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
329 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
329 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
330 subrepo t: merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
330 subrepo t: merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
331 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
331 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
332 (branch merge, don't forget to commit)
332 (branch merge, don't forget to commit)
333
333
334 should conflict
334 should conflict
335
335
336 $ cat t/t
336 $ cat t/t
337 <<<<<<< local: 20a0db6fbf6c - test: 10
337 <<<<<<< local: 20a0db6fbf6c - test: 10
338 conflict
338 conflict
339 =======
339 =======
340 t3
340 t3
341 >>>>>>> other: 7af322bc1198 - test: 7
341 >>>>>>> other: 7af322bc1198 - test: 7
342
342
343 11: remove subrepo t
343 11: remove subrepo t
344
344
345 $ hg co -C 5
345 $ hg co -C 5
346 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
346 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
347 $ hg revert -r 4 .hgsub # remove t
347 $ hg revert -r 4 .hgsub # remove t
348 $ hg ci -m11
348 $ hg ci -m11
349 created new head
349 created new head
350 $ hg debugsub
350 $ hg debugsub
351 path s
351 path s
352 source s
352 source s
353 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
353 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
354
354
355 local removed, remote changed, keep changed
355 local removed, remote changed, keep changed
356
356
357 $ hg merge 6
357 $ hg merge 6
358 remote [merge rev] changed subrepository t which local [working copy] removed
358 remote [merge rev] changed subrepository t which local [working copy] removed
359 use (c)hanged version or (d)elete? c
359 use (c)hanged version or (d)elete? c
360 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
360 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
361 (branch merge, don't forget to commit)
361 (branch merge, don't forget to commit)
362 BROKEN: should include subrepo t
362 BROKEN: should include subrepo t
363 $ hg debugsub
363 $ hg debugsub
364 path s
364 path s
365 source s
365 source s
366 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
366 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
367 $ cat .hgsubstate
367 $ cat .hgsubstate
368 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
368 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
369 6747d179aa9a688023c4b0cad32e4c92bb7f34ad t
369 6747d179aa9a688023c4b0cad32e4c92bb7f34ad t
370 $ hg ci -m 'local removed, remote changed, keep changed'
370 $ hg ci -m 'local removed, remote changed, keep changed'
371 BROKEN: should include subrepo t
371 BROKEN: should include subrepo t
372 $ hg debugsub
372 $ hg debugsub
373 path s
373 path s
374 source s
374 source s
375 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
375 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
376 BROKEN: should include subrepo t
376 BROKEN: should include subrepo t
377 $ cat .hgsubstate
377 $ cat .hgsubstate
378 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
378 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
379 $ cat t/t
379 $ cat t/t
380 t2
380 t2
381
381
382 local removed, remote changed, keep removed
382 local removed, remote changed, keep removed
383
383
384 $ hg co -C 11
384 $ hg co -C 11
385 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
385 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
386 $ hg merge --config ui.interactive=true 6 <<EOF
386 $ hg merge --config ui.interactive=true 6 <<EOF
387 > d
387 > d
388 > EOF
388 > EOF
389 remote [merge rev] changed subrepository t which local [working copy] removed
389 remote [merge rev] changed subrepository t which local [working copy] removed
390 use (c)hanged version or (d)elete? d
390 use (c)hanged version or (d)elete? d
391 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
391 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
392 (branch merge, don't forget to commit)
392 (branch merge, don't forget to commit)
393 $ hg debugsub
393 $ hg debugsub
394 path s
394 path s
395 source s
395 source s
396 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
396 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
397 $ cat .hgsubstate
397 $ cat .hgsubstate
398 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
398 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
399 $ hg ci -m 'local removed, remote changed, keep removed'
399 $ hg ci -m 'local removed, remote changed, keep removed'
400 created new head
400 created new head
401 $ hg debugsub
401 $ hg debugsub
402 path s
402 path s
403 source s
403 source s
404 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
404 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
405 $ cat .hgsubstate
405 $ cat .hgsubstate
406 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
406 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
407
407
408 local changed, remote removed, keep changed
408 local changed, remote removed, keep changed
409
409
410 $ hg co -C 6
410 $ hg co -C 6
411 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
411 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
412 $ hg merge 11
412 $ hg merge 11
413 local [working copy] changed subrepository t which remote [merge rev] removed
413 local [working copy] changed subrepository t which remote [merge rev] removed
414 use (c)hanged version or (d)elete? c
414 use (c)hanged version or (d)elete? c
415 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
415 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
416 (branch merge, don't forget to commit)
416 (branch merge, don't forget to commit)
417 BROKEN: should include subrepo t
417 BROKEN: should include subrepo t
418 $ hg debugsub
418 $ hg debugsub
419 path s
419 path s
420 source s
420 source s
421 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
421 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
422 BROKEN: should include subrepo t
422 BROKEN: should include subrepo t
423 $ cat .hgsubstate
423 $ cat .hgsubstate
424 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
424 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
425 $ hg ci -m 'local changed, remote removed, keep changed'
425 $ hg ci -m 'local changed, remote removed, keep changed'
426 created new head
426 created new head
427 BROKEN: should include subrepo t
427 BROKEN: should include subrepo t
428 $ hg debugsub
428 $ hg debugsub
429 path s
429 path s
430 source s
430 source s
431 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
431 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
432 BROKEN: should include subrepo t
432 BROKEN: should include subrepo t
433 $ cat .hgsubstate
433 $ cat .hgsubstate
434 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
434 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
435 $ cat t/t
435 $ cat t/t
436 t2
436 t2
437
437
438 local changed, remote removed, keep removed
438 local changed, remote removed, keep removed
439
439
440 $ hg co -C 6
440 $ hg co -C 6
441 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
441 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
442 $ hg merge --config ui.interactive=true 11 <<EOF
442 $ hg merge --config ui.interactive=true 11 <<EOF
443 > d
443 > d
444 > EOF
444 > EOF
445 local [working copy] changed subrepository t which remote [merge rev] removed
445 local [working copy] changed subrepository t which remote [merge rev] removed
446 use (c)hanged version or (d)elete? d
446 use (c)hanged version or (d)elete? d
447 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
447 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
448 (branch merge, don't forget to commit)
448 (branch merge, don't forget to commit)
449 $ hg debugsub
449 $ hg debugsub
450 path s
450 path s
451 source s
451 source s
452 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
452 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
453 $ cat .hgsubstate
453 $ cat .hgsubstate
454 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
454 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
455 $ hg ci -m 'local changed, remote removed, keep removed'
455 $ hg ci -m 'local changed, remote removed, keep removed'
456 created new head
456 created new head
457 $ hg debugsub
457 $ hg debugsub
458 path s
458 path s
459 source s
459 source s
460 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
460 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
461 $ cat .hgsubstate
461 $ cat .hgsubstate
462 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
462 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
463
463
464 clean up to avoid having to fix up the tests below
464 clean up to avoid having to fix up the tests below
465
465
466 $ hg co -C 10
466 $ hg co -C 10
467 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
467 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
468 $ cat >> $HGRCPATH <<EOF
468 $ cat >> $HGRCPATH <<EOF
469 > [extensions]
469 > [extensions]
470 > strip=
470 > strip=
471 > EOF
471 > EOF
472 $ hg strip -r 11:15
472 $ hg strip -r 11:15
473 saved backup bundle to $TESTTMP/t/.hg/strip-backup/*-backup.hg (glob)
473 saved backup bundle to $TESTTMP/t/.hg/strip-backup/*-backup.hg (glob)
474
474
475 clone
475 clone
476
476
477 $ cd ..
477 $ cd ..
478 $ hg clone t tc
478 $ hg clone t tc
479 updating to branch default
479 updating to branch default
480 cloning subrepo s from $TESTTMP/t/s
480 cloning subrepo s from $TESTTMP/t/s
481 cloning subrepo s/ss from $TESTTMP/t/s/ss
481 cloning subrepo s/ss from $TESTTMP/t/s/ss
482 cloning subrepo t from $TESTTMP/t/t
482 cloning subrepo t from $TESTTMP/t/t
483 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
483 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
484 $ cd tc
484 $ cd tc
485 $ hg debugsub
485 $ hg debugsub
486 path s
486 path s
487 source s
487 source s
488 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
488 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
489 path t
489 path t
490 source t
490 source t
491 revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
491 revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
492 $ cd ..
492 $ cd ..
493
493
494 clone with subrepo disabled (update should fail)
494 clone with subrepo disabled (update should fail)
495
495
496 $ hg clone t -U tc2 --config subrepos.allowed=false
496 $ hg clone t -U tc2 --config subrepos.allowed=false
497 $ hg update -R tc2 --config subrepos.allowed=false
497 $ hg update -R tc2 --config subrepos.allowed=false
498 abort: subrepos not enabled
498 abort: subrepos not enabled
499 (see 'hg help config.subrepos' for details)
499 (see 'hg help config.subrepos' for details)
500 [255]
500 [255]
501 $ ls -A tc2
501 $ ls -A tc2
502 .hg
502 .hg
503 .hgsub
503 .hgsub
504 .hgsubstate
504 .hgsubstate
505 a
505 a
506
506
507 $ hg clone t tc3 --config subrepos.allowed=false
507 $ hg clone t tc3 --config subrepos.allowed=false
508 updating to branch default
508 updating to branch default
509 abort: subrepos not enabled
509 abort: subrepos not enabled
510 (see 'hg help config.subrepos' for details)
510 (see 'hg help config.subrepos' for details)
511 [255]
511 [255]
512 $ ls -A tc3
512 $ ls -A tc3
513 .hg
513 .hg
514 .hgsub
514 .hgsub
515 .hgsubstate
515 .hgsubstate
516 a
516 a
517
517
518 And again with just the hg type disabled
518 And again with just the hg type disabled
519
519
520 $ hg clone t -U tc4 --config subrepos.hg:allowed=false
520 $ hg clone t -U tc4 --config subrepos.hg:allowed=false
521 $ hg update -R tc4 --config subrepos.hg:allowed=false
521 $ hg update -R tc4 --config subrepos.hg:allowed=false
522 abort: hg subrepos not allowed
522 abort: hg subrepos not allowed
523 (see 'hg help config.subrepos' for details)
523 (see 'hg help config.subrepos' for details)
524 [255]
524 [255]
525 $ ls -A tc4
525 $ ls -A tc4
526 .hg
526 .hg
527 .hgsub
527 .hgsub
528 .hgsubstate
528 .hgsubstate
529 a
529 a
530
530
531 $ hg clone t tc5 --config subrepos.hg:allowed=false
531 $ hg clone t tc5 --config subrepos.hg:allowed=false
532 updating to branch default
532 updating to branch default
533 abort: hg subrepos not allowed
533 abort: hg subrepos not allowed
534 (see 'hg help config.subrepos' for details)
534 (see 'hg help config.subrepos' for details)
535 [255]
535 [255]
536 $ ls -A tc5
536 $ ls -A tc5
537 .hg
537 .hg
538 .hgsub
538 .hgsub
539 .hgsubstate
539 .hgsubstate
540 a
540 a
541
541
542 push
542 push
543
543
544 $ cd tc
544 $ cd tc
545 $ echo bah > t/t
545 $ echo bah > t/t
546 $ hg ci -m11
546 $ hg ci -m11
547 committing subrepository t
547 committing subrepository t
548 $ hg push
548 $ hg push
549 pushing to $TESTTMP/t
549 pushing to $TESTTMP/t
550 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
550 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
551 no changes made to subrepo s since last push to $TESTTMP/t/s
551 no changes made to subrepo s since last push to $TESTTMP/t/s
552 pushing subrepo t to $TESTTMP/t/t
552 pushing subrepo t to $TESTTMP/t/t
553 searching for changes
553 searching for changes
554 adding changesets
554 adding changesets
555 adding manifests
555 adding manifests
556 adding file changes
556 adding file changes
557 added 1 changesets with 1 changes to 1 files
557 added 1 changesets with 1 changes to 1 files
558 searching for changes
558 searching for changes
559 adding changesets
559 adding changesets
560 adding manifests
560 adding manifests
561 adding file changes
561 adding file changes
562 added 1 changesets with 1 changes to 1 files
562 added 1 changesets with 1 changes to 1 files
563
563
564 push -f
564 push -f
565
565
566 $ echo bah > s/a
566 $ echo bah > s/a
567 $ hg ci -m12
567 $ hg ci -m12
568 committing subrepository s
568 committing subrepository s
569 $ hg push
569 $ hg push
570 pushing to $TESTTMP/t
570 pushing to $TESTTMP/t
571 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
571 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
572 pushing subrepo s to $TESTTMP/t/s
572 pushing subrepo s to $TESTTMP/t/s
573 searching for changes
573 searching for changes
574 abort: push creates new remote head 12a213df6fa9 (in subrepository "s")
574 abort: push creates new remote head 12a213df6fa9 (in subrepository "s")
575 (merge or see 'hg help push' for details about pushing new heads)
575 (merge or see 'hg help push' for details about pushing new heads)
576 [255]
576 [255]
577 $ hg push -f
577 $ hg push -f
578 pushing to $TESTTMP/t
578 pushing to $TESTTMP/t
579 pushing subrepo s/ss to $TESTTMP/t/s/ss
579 pushing subrepo s/ss to $TESTTMP/t/s/ss
580 searching for changes
580 searching for changes
581 no changes found
581 no changes found
582 pushing subrepo s to $TESTTMP/t/s
582 pushing subrepo s to $TESTTMP/t/s
583 searching for changes
583 searching for changes
584 adding changesets
584 adding changesets
585 adding manifests
585 adding manifests
586 adding file changes
586 adding file changes
587 added 1 changesets with 1 changes to 1 files (+1 heads)
587 added 1 changesets with 1 changes to 1 files (+1 heads)
588 pushing subrepo t to $TESTTMP/t/t
588 pushing subrepo t to $TESTTMP/t/t
589 searching for changes
589 searching for changes
590 no changes found
590 no changes found
591 searching for changes
591 searching for changes
592 adding changesets
592 adding changesets
593 adding manifests
593 adding manifests
594 adding file changes
594 adding file changes
595 added 1 changesets with 1 changes to 1 files
595 added 1 changesets with 1 changes to 1 files
596
596
597 check that unmodified subrepos are not pushed
597 check that unmodified subrepos are not pushed
598
598
599 $ hg clone . ../tcc
599 $ hg clone . ../tcc
600 updating to branch default
600 updating to branch default
601 cloning subrepo s from $TESTTMP/tc/s
601 cloning subrepo s from $TESTTMP/tc/s
602 cloning subrepo s/ss from $TESTTMP/tc/s/ss
602 cloning subrepo s/ss from $TESTTMP/tc/s/ss
603 cloning subrepo t from $TESTTMP/tc/t
603 cloning subrepo t from $TESTTMP/tc/t
604 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
604 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
605
605
606 the subrepos on the new clone have nothing to push to its source
606 the subrepos on the new clone have nothing to push to its source
607
607
608 $ hg push -R ../tcc .
608 $ hg push -R ../tcc .
609 pushing to .
609 pushing to .
610 no changes made to subrepo s/ss since last push to s/ss
610 no changes made to subrepo s/ss since last push to s/ss
611 no changes made to subrepo s since last push to s
611 no changes made to subrepo s since last push to s
612 no changes made to subrepo t since last push to t
612 no changes made to subrepo t since last push to t
613 searching for changes
613 searching for changes
614 no changes found
614 no changes found
615 [1]
615 [1]
616
616
617 the subrepos on the source do not have a clean store versus the clone target
617 the subrepos on the source do not have a clean store versus the clone target
618 because they were never explicitly pushed to the source
618 because they were never explicitly pushed to the source
619
619
620 $ hg push ../tcc
620 $ hg push ../tcc
621 pushing to ../tcc
621 pushing to ../tcc
622 pushing subrepo s/ss to ../tcc/s/ss
622 pushing subrepo s/ss to ../tcc/s/ss
623 searching for changes
623 searching for changes
624 no changes found
624 no changes found
625 pushing subrepo s to ../tcc/s
625 pushing subrepo s to ../tcc/s
626 searching for changes
626 searching for changes
627 no changes found
627 no changes found
628 pushing subrepo t to ../tcc/t
628 pushing subrepo t to ../tcc/t
629 searching for changes
629 searching for changes
630 no changes found
630 no changes found
631 searching for changes
631 searching for changes
632 no changes found
632 no changes found
633 [1]
633 [1]
634
634
635 after push their stores become clean
635 after push their stores become clean
636
636
637 $ hg push ../tcc
637 $ hg push ../tcc
638 pushing to ../tcc
638 pushing to ../tcc
639 no changes made to subrepo s/ss since last push to ../tcc/s/ss
639 no changes made to subrepo s/ss since last push to ../tcc/s/ss
640 no changes made to subrepo s since last push to ../tcc/s
640 no changes made to subrepo s since last push to ../tcc/s
641 no changes made to subrepo t since last push to ../tcc/t
641 no changes made to subrepo t since last push to ../tcc/t
642 searching for changes
642 searching for changes
643 no changes found
643 no changes found
644 [1]
644 [1]
645
645
646 updating a subrepo to a different revision or changing
646 updating a subrepo to a different revision or changing
647 its working directory does not make its store dirty
647 its working directory does not make its store dirty
648
648
649 $ hg -R s update '.^'
649 $ hg -R s update '.^'
650 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
650 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
651 $ hg push
651 $ hg push
652 pushing to $TESTTMP/t
652 pushing to $TESTTMP/t
653 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
653 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
654 no changes made to subrepo s since last push to $TESTTMP/t/s
654 no changes made to subrepo s since last push to $TESTTMP/t/s
655 no changes made to subrepo t since last push to $TESTTMP/t/t
655 no changes made to subrepo t since last push to $TESTTMP/t/t
656 searching for changes
656 searching for changes
657 no changes found
657 no changes found
658 [1]
658 [1]
659 $ echo foo >> s/a
659 $ echo foo >> s/a
660 $ hg push
660 $ hg push
661 pushing to $TESTTMP/t
661 pushing to $TESTTMP/t
662 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
662 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
663 no changes made to subrepo s since last push to $TESTTMP/t/s
663 no changes made to subrepo s since last push to $TESTTMP/t/s
664 no changes made to subrepo t since last push to $TESTTMP/t/t
664 no changes made to subrepo t since last push to $TESTTMP/t/t
665 searching for changes
665 searching for changes
666 no changes found
666 no changes found
667 [1]
667 [1]
668 $ hg -R s update -C tip
668 $ hg -R s update -C tip
669 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
669 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
670
670
671 committing into a subrepo makes its store (but not its parent's store) dirty
671 committing into a subrepo makes its store (but not its parent's store) dirty
672
672
673 $ echo foo >> s/ss/a
673 $ echo foo >> s/ss/a
674 $ hg -R s/ss commit -m 'test dirty store detection'
674 $ hg -R s/ss commit -m 'test dirty store detection'
675
675
676 $ hg out -S -r `hg log -r tip -T "{node|short}"`
676 $ hg out -S -r `hg log -r tip -T "{node|short}"`
677 comparing with $TESTTMP/t
677 comparing with $TESTTMP/t
678 searching for changes
678 searching for changes
679 no changes found
679 no changes found
680 comparing with $TESTTMP/t/s
680 comparing with $TESTTMP/t/s
681 searching for changes
681 searching for changes
682 no changes found
682 no changes found
683 comparing with $TESTTMP/t/s/ss
683 comparing with $TESTTMP/t/s/ss
684 searching for changes
684 searching for changes
685 changeset: 1:79ea5566a333
685 changeset: 1:79ea5566a333
686 tag: tip
686 tag: tip
687 user: test
687 user: test
688 date: Thu Jan 01 00:00:00 1970 +0000
688 date: Thu Jan 01 00:00:00 1970 +0000
689 summary: test dirty store detection
689 summary: test dirty store detection
690
690
691 comparing with $TESTTMP/t/t
691 comparing with $TESTTMP/t/t
692 searching for changes
692 searching for changes
693 no changes found
693 no changes found
694
694
695 $ hg push
695 $ hg push
696 pushing to $TESTTMP/t
696 pushing to $TESTTMP/t
697 pushing subrepo s/ss to $TESTTMP/t/s/ss
697 pushing subrepo s/ss to $TESTTMP/t/s/ss
698 searching for changes
698 searching for changes
699 adding changesets
699 adding changesets
700 adding manifests
700 adding manifests
701 adding file changes
701 adding file changes
702 added 1 changesets with 1 changes to 1 files
702 added 1 changesets with 1 changes to 1 files
703 no changes made to subrepo s since last push to $TESTTMP/t/s
703 no changes made to subrepo s since last push to $TESTTMP/t/s
704 no changes made to subrepo t since last push to $TESTTMP/t/t
704 no changes made to subrepo t since last push to $TESTTMP/t/t
705 searching for changes
705 searching for changes
706 no changes found
706 no changes found
707 [1]
707 [1]
708
708
709 a subrepo store may be clean versus one repo but not versus another
709 a subrepo store may be clean versus one repo but not versus another
710
710
711 $ hg push
711 $ hg push
712 pushing to $TESTTMP/t
712 pushing to $TESTTMP/t
713 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
713 no changes made to subrepo s/ss since last push to $TESTTMP/t/s/ss
714 no changes made to subrepo s since last push to $TESTTMP/t/s
714 no changes made to subrepo s since last push to $TESTTMP/t/s
715 no changes made to subrepo t since last push to $TESTTMP/t/t
715 no changes made to subrepo t since last push to $TESTTMP/t/t
716 searching for changes
716 searching for changes
717 no changes found
717 no changes found
718 [1]
718 [1]
719 $ hg push ../tcc
719 $ hg push ../tcc
720 pushing to ../tcc
720 pushing to ../tcc
721 pushing subrepo s/ss to ../tcc/s/ss
721 pushing subrepo s/ss to ../tcc/s/ss
722 searching for changes
722 searching for changes
723 adding changesets
723 adding changesets
724 adding manifests
724 adding manifests
725 adding file changes
725 adding file changes
726 added 1 changesets with 1 changes to 1 files
726 added 1 changesets with 1 changes to 1 files
727 no changes made to subrepo s since last push to ../tcc/s
727 no changes made to subrepo s since last push to ../tcc/s
728 no changes made to subrepo t since last push to ../tcc/t
728 no changes made to subrepo t since last push to ../tcc/t
729 searching for changes
729 searching for changes
730 no changes found
730 no changes found
731 [1]
731 [1]
732
732
733 update
733 update
734
734
735 $ cd ../t
735 $ cd ../t
736 $ hg up -C # discard our earlier merge
736 $ hg up -C # discard our earlier merge
737 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
737 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
738 updated to "c373c8102e68: 12"
738 updated to "c373c8102e68: 12"
739 2 other heads for branch "default"
739 2 other heads for branch "default"
740 $ echo blah > t/t
740 $ echo blah > t/t
741 $ hg ci -m13
741 $ hg ci -m13
742 committing subrepository t
742 committing subrepository t
743
743
744 backout calls revert internally with minimal opts, which should not raise
744 backout calls revert internally with minimal opts, which should not raise
745 KeyError
745 KeyError
746
746
747 $ hg backout ".^" --no-commit
747 $ hg backout ".^" --no-commit
748 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
748 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
749 changeset c373c8102e68 backed out, don't forget to commit.
749 changeset c373c8102e68 backed out, don't forget to commit.
750
750
751 $ hg up -C # discard changes
751 $ hg up -C # discard changes
752 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
752 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
753 updated to "925c17564ef8: 13"
753 updated to "925c17564ef8: 13"
754 2 other heads for branch "default"
754 2 other heads for branch "default"
755
755
756 pull
756 pull
757
757
758 $ cd ../tc
758 $ cd ../tc
759 $ hg pull
759 $ hg pull
760 pulling from $TESTTMP/t
760 pulling from $TESTTMP/t
761 searching for changes
761 searching for changes
762 adding changesets
762 adding changesets
763 adding manifests
763 adding manifests
764 adding file changes
764 adding file changes
765 added 1 changesets with 1 changes to 1 files
765 added 1 changesets with 1 changes to 1 files
766 new changesets 925c17564ef8
766 new changesets 925c17564ef8
767 (run 'hg update' to get a working copy)
767 (run 'hg update' to get a working copy)
768
768
769 should pull t
769 should pull t
770
770
771 $ hg incoming -S -r `hg log -r tip -T "{node|short}"`
771 $ hg incoming -S -r `hg log -r tip -T "{node|short}"`
772 comparing with $TESTTMP/t
772 comparing with $TESTTMP/t
773 no changes found
773 no changes found
774 comparing with $TESTTMP/t/s
774 comparing with $TESTTMP/t/s
775 searching for changes
775 searching for changes
776 no changes found
776 no changes found
777 comparing with $TESTTMP/t/s/ss
777 comparing with $TESTTMP/t/s/ss
778 searching for changes
778 searching for changes
779 no changes found
779 no changes found
780 comparing with $TESTTMP/t/t
780 comparing with $TESTTMP/t/t
781 searching for changes
781 searching for changes
782 changeset: 5:52c0adc0515a
782 changeset: 5:52c0adc0515a
783 tag: tip
783 tag: tip
784 user: test
784 user: test
785 date: Thu Jan 01 00:00:00 1970 +0000
785 date: Thu Jan 01 00:00:00 1970 +0000
786 summary: 13
786 summary: 13
787
787
788
788
789 $ hg up
789 $ hg up
790 pulling subrepo t from $TESTTMP/t/t
790 pulling subrepo t from $TESTTMP/t/t
791 searching for changes
791 searching for changes
792 adding changesets
792 adding changesets
793 adding manifests
793 adding manifests
794 adding file changes
794 adding file changes
795 added 1 changesets with 1 changes to 1 files
795 added 1 changesets with 1 changes to 1 files
796 new changesets 52c0adc0515a
796 new changesets 52c0adc0515a
797 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
797 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
798 updated to "925c17564ef8: 13"
798 updated to "925c17564ef8: 13"
799 2 other heads for branch "default"
799 2 other heads for branch "default"
800 $ cat t/t
800 $ cat t/t
801 blah
801 blah
802
802
803 bogus subrepo path aborts
803 bogus subrepo path aborts
804
804
805 $ echo 'bogus=[boguspath' >> .hgsub
805 $ echo 'bogus=[boguspath' >> .hgsub
806 $ hg ci -m 'bogus subrepo path'
806 $ hg ci -m 'bogus subrepo path'
807 abort: missing ] in subrepository source
807 abort: missing ] in subrepository source
808 [255]
808 [255]
809
809
810 Issue1986: merge aborts when trying to merge a subrepo that
810 Issue1986: merge aborts when trying to merge a subrepo that
811 shouldn't need merging
811 shouldn't need merging
812
812
813 # subrepo layout
813 # subrepo layout
814 #
814 #
815 # o 5 br
815 # o 5 br
816 # /|
816 # /|
817 # o | 4 default
817 # o | 4 default
818 # | |
818 # | |
819 # | o 3 br
819 # | o 3 br
820 # |/|
820 # |/|
821 # o | 2 default
821 # o | 2 default
822 # | |
822 # | |
823 # | o 1 br
823 # | o 1 br
824 # |/
824 # |/
825 # o 0 default
825 # o 0 default
826
826
827 $ cd ..
827 $ cd ..
828 $ rm -rf sub
828 $ rm -rf sub
829 $ hg init main
829 $ hg init main
830 $ cd main
830 $ cd main
831 $ hg init s
831 $ hg init s
832 $ cd s
832 $ cd s
833 $ echo a > a
833 $ echo a > a
834 $ hg ci -Am1
834 $ hg ci -Am1
835 adding a
835 adding a
836 $ hg branch br
836 $ hg branch br
837 marked working directory as branch br
837 marked working directory as branch br
838 (branches are permanent and global, did you want a bookmark?)
838 (branches are permanent and global, did you want a bookmark?)
839 $ echo a >> a
839 $ echo a >> a
840 $ hg ci -m1
840 $ hg ci -m1
841 $ hg up default
841 $ hg up default
842 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
842 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
843 $ echo b > b
843 $ echo b > b
844 $ hg ci -Am1
844 $ hg ci -Am1
845 adding b
845 adding b
846 $ hg up br
846 $ hg up br
847 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
847 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
848 $ hg merge tip
848 $ hg merge tip
849 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
849 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
850 (branch merge, don't forget to commit)
850 (branch merge, don't forget to commit)
851 $ hg ci -m1
851 $ hg ci -m1
852 $ hg up 2
852 $ hg up 2
853 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
853 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
854 $ echo c > c
854 $ echo c > c
855 $ hg ci -Am1
855 $ hg ci -Am1
856 adding c
856 adding c
857 $ hg up 3
857 $ hg up 3
858 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
858 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
859 $ hg merge 4
859 $ hg merge 4
860 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
860 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
861 (branch merge, don't forget to commit)
861 (branch merge, don't forget to commit)
862 $ hg ci -m1
862 $ hg ci -m1
863
863
864 # main repo layout:
864 # main repo layout:
865 #
865 #
866 # * <-- try to merge default into br again
866 # * <-- try to merge default into br again
867 # .`|
867 # .`|
868 # . o 5 br --> substate = 5
868 # . o 5 br --> substate = 5
869 # . |
869 # . |
870 # o | 4 default --> substate = 4
870 # o | 4 default --> substate = 4
871 # | |
871 # | |
872 # | o 3 br --> substate = 2
872 # | o 3 br --> substate = 2
873 # |/|
873 # |/|
874 # o | 2 default --> substate = 2
874 # o | 2 default --> substate = 2
875 # | |
875 # | |
876 # | o 1 br --> substate = 3
876 # | o 1 br --> substate = 3
877 # |/
877 # |/
878 # o 0 default --> substate = 2
878 # o 0 default --> substate = 2
879
879
880 $ cd ..
880 $ cd ..
881 $ echo 's = s' > .hgsub
881 $ echo 's = s' > .hgsub
882 $ hg -R s up 2
882 $ hg -R s up 2
883 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
883 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
884 $ hg ci -Am1
884 $ hg ci -Am1
885 adding .hgsub
885 adding .hgsub
886 $ hg branch br
886 $ hg branch br
887 marked working directory as branch br
887 marked working directory as branch br
888 (branches are permanent and global, did you want a bookmark?)
888 (branches are permanent and global, did you want a bookmark?)
889 $ echo b > b
889 $ echo b > b
890 $ hg -R s up 3
890 $ hg -R s up 3
891 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
891 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
892 $ hg ci -Am1
892 $ hg ci -Am1
893 adding b
893 adding b
894 $ hg up default
894 $ hg up default
895 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
895 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
896 $ echo c > c
896 $ echo c > c
897 $ hg ci -Am1
897 $ hg ci -Am1
898 adding c
898 adding c
899 $ hg up 1
899 $ hg up 1
900 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
900 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
901 $ hg merge 2
901 $ hg merge 2
902 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
902 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
903 (branch merge, don't forget to commit)
903 (branch merge, don't forget to commit)
904 $ hg ci -m1
904 $ hg ci -m1
905 $ hg up 2
905 $ hg up 2
906 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
906 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
907 $ hg -R s up 4
907 $ hg -R s up 4
908 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
908 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
909 $ echo d > d
909 $ echo d > d
910 $ hg ci -Am1
910 $ hg ci -Am1
911 adding d
911 adding d
912 $ hg up 3
912 $ hg up 3
913 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
913 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
914 $ hg -R s up 5
914 $ hg -R s up 5
915 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
915 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
916 $ echo e > e
916 $ echo e > e
917 $ hg ci -Am1
917 $ hg ci -Am1
918 adding e
918 adding e
919
919
920 $ hg up 5
920 $ hg up 5
921 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
921 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
922 $ hg merge 4 # try to merge default into br again
922 $ hg merge 4 # try to merge default into br again
923 subrepository s diverged (local revision: f8f13b33206e, remote revision: a3f9062a4f88)
923 subrepository s diverged (local revision: f8f13b33206e, remote revision: a3f9062a4f88)
924 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [merge rev].
924 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [merge rev].
925 what do you want to do? m
925 what do you want to do? m
926 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
926 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
927 (branch merge, don't forget to commit)
927 (branch merge, don't forget to commit)
928 $ cd ..
928 $ cd ..
929
929
930 test subrepo delete from .hgsubstate
930 test subrepo delete from .hgsubstate
931
931
932 $ hg init testdelete
932 $ hg init testdelete
933 $ mkdir testdelete/nested testdelete/nested2
933 $ mkdir testdelete/nested testdelete/nested2
934 $ hg init testdelete/nested
934 $ hg init testdelete/nested
935 $ hg init testdelete/nested2
935 $ hg init testdelete/nested2
936 $ echo test > testdelete/nested/foo
936 $ echo test > testdelete/nested/foo
937 $ echo test > testdelete/nested2/foo
937 $ echo test > testdelete/nested2/foo
938 $ hg -R testdelete/nested add
938 $ hg -R testdelete/nested add
939 adding testdelete/nested/foo
939 adding testdelete/nested/foo
940 $ hg -R testdelete/nested2 add
940 $ hg -R testdelete/nested2 add
941 adding testdelete/nested2/foo
941 adding testdelete/nested2/foo
942 $ hg -R testdelete/nested ci -m test
942 $ hg -R testdelete/nested ci -m test
943 $ hg -R testdelete/nested2 ci -m test
943 $ hg -R testdelete/nested2 ci -m test
944 $ echo nested = nested > testdelete/.hgsub
944 $ echo nested = nested > testdelete/.hgsub
945 $ echo nested2 = nested2 >> testdelete/.hgsub
945 $ echo nested2 = nested2 >> testdelete/.hgsub
946 $ hg -R testdelete add
946 $ hg -R testdelete add
947 adding testdelete/.hgsub
947 adding testdelete/.hgsub
948 $ hg -R testdelete ci -m "nested 1 & 2 added"
948 $ hg -R testdelete ci -m "nested 1 & 2 added"
949 $ echo nested = nested > testdelete/.hgsub
949 $ echo nested = nested > testdelete/.hgsub
950 $ hg -R testdelete ci -m "nested 2 deleted"
950 $ hg -R testdelete ci -m "nested 2 deleted"
951 $ cat testdelete/.hgsubstate
951 $ cat testdelete/.hgsubstate
952 bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
952 bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
953 $ hg -R testdelete remove testdelete/.hgsub
953 $ hg -R testdelete remove testdelete/.hgsub
954 $ hg -R testdelete ci -m ".hgsub deleted"
954 $ hg -R testdelete ci -m ".hgsub deleted"
955 $ cat testdelete/.hgsubstate
955 $ cat testdelete/.hgsubstate
956 bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
956 bdf5c9a3103743d900b12ae0db3ffdcfd7b0d878 nested
957
957
958 test repository cloning
958 test repository cloning
959
959
960 $ mkdir mercurial mercurial2
960 $ mkdir mercurial mercurial2
961 $ hg init nested_absolute
961 $ hg init nested_absolute
962 $ echo test > nested_absolute/foo
962 $ echo test > nested_absolute/foo
963 $ hg -R nested_absolute add
963 $ hg -R nested_absolute add
964 adding nested_absolute/foo
964 adding nested_absolute/foo
965 $ hg -R nested_absolute ci -mtest
965 $ hg -R nested_absolute ci -mtest
966 $ cd mercurial
966 $ cd mercurial
967 $ hg init nested_relative
967 $ hg init nested_relative
968 $ echo test2 > nested_relative/foo2
968 $ echo test2 > nested_relative/foo2
969 $ hg -R nested_relative add
969 $ hg -R nested_relative add
970 adding nested_relative/foo2
970 adding nested_relative/foo2
971 $ hg -R nested_relative ci -mtest2
971 $ hg -R nested_relative ci -mtest2
972 $ hg init main
972 $ hg init main
973 $ echo "nested_relative = ../nested_relative" > main/.hgsub
973 $ echo "nested_relative = ../nested_relative" > main/.hgsub
974 $ echo "nested_absolute = `pwd`/nested_absolute" >> main/.hgsub
974 $ echo "nested_absolute = `pwd`/nested_absolute" >> main/.hgsub
975 $ hg -R main add
975 $ hg -R main add
976 adding main/.hgsub
976 adding main/.hgsub
977 $ hg -R main ci -m "add subrepos"
977 $ hg -R main ci -m "add subrepos"
978 $ cd ..
978 $ cd ..
979 $ hg clone mercurial/main mercurial2/main
979 $ hg clone mercurial/main mercurial2/main
980 updating to branch default
980 updating to branch default
981 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
981 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
982 $ cat mercurial2/main/nested_absolute/.hg/hgrc \
982 $ cat mercurial2/main/nested_absolute/.hg/hgrc \
983 > mercurial2/main/nested_relative/.hg/hgrc
983 > mercurial2/main/nested_relative/.hg/hgrc
984 [paths]
984 [paths]
985 default = $TESTTMP/mercurial/nested_absolute
985 default = $TESTTMP/mercurial/nested_absolute
986 [paths]
986 [paths]
987 default = $TESTTMP/mercurial/nested_relative
987 default = $TESTTMP/mercurial/nested_relative
988 $ rm -rf mercurial mercurial2
988 $ rm -rf mercurial mercurial2
989
989
990 Issue1977: multirepo push should fail if subrepo push fails
990 Issue1977: multirepo push should fail if subrepo push fails
991
991
992 $ hg init repo
992 $ hg init repo
993 $ hg init repo/s
993 $ hg init repo/s
994 $ echo a > repo/s/a
994 $ echo a > repo/s/a
995 $ hg -R repo/s ci -Am0
995 $ hg -R repo/s ci -Am0
996 adding a
996 adding a
997 $ echo s = s > repo/.hgsub
997 $ echo s = s > repo/.hgsub
998 $ hg -R repo ci -Am1
998 $ hg -R repo ci -Am1
999 adding .hgsub
999 adding .hgsub
1000 $ hg clone repo repo2
1000 $ hg clone repo repo2
1001 updating to branch default
1001 updating to branch default
1002 cloning subrepo s from $TESTTMP/repo/s
1002 cloning subrepo s from $TESTTMP/repo/s
1003 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1003 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1004 $ hg -q -R repo2 pull -u
1004 $ hg -q -R repo2 pull -u
1005 $ echo 1 > repo2/s/a
1005 $ echo 1 > repo2/s/a
1006 $ hg -R repo2/s ci -m2
1006 $ hg -R repo2/s ci -m2
1007 $ hg -q -R repo2/s push
1007 $ hg -q -R repo2/s push
1008 $ hg -R repo2/s up -C 0
1008 $ hg -R repo2/s up -C 0
1009 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1009 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1010 $ echo 2 > repo2/s/b
1010 $ echo 2 > repo2/s/b
1011 $ hg -R repo2/s ci -m3 -A
1011 $ hg -R repo2/s ci -m3 -A
1012 adding b
1012 adding b
1013 created new head
1013 created new head
1014 $ hg -R repo2 ci -m3
1014 $ hg -R repo2 ci -m3
1015 $ hg -q -R repo2 push
1015 $ hg -q -R repo2 push
1016 abort: push creates new remote head cc505f09a8b2 (in subrepository "s")
1016 abort: push creates new remote head cc505f09a8b2 (in subrepository "s")
1017 (merge or see 'hg help push' for details about pushing new heads)
1017 (merge or see 'hg help push' for details about pushing new heads)
1018 [255]
1018 [255]
1019 $ hg -R repo update
1019 $ hg -R repo update
1020 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1020 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1021
1021
1022 test if untracked file is not overwritten
1022 test if untracked file is not overwritten
1023
1023
1024 (this also tests that updated .hgsubstate is treated as "modified",
1024 (this also tests that updated .hgsubstate is treated as "modified",
1025 when 'merge.update()' is aborted before 'merge.recordupdates()', even
1025 when 'merge.update()' is aborted before 'merge.recordupdates()', even
1026 if none of mode, size and timestamp of it isn't changed on the
1026 if none of mode, size and timestamp of it isn't changed on the
1027 filesystem (see also issue4583))
1027 filesystem (see also issue4583))
1028
1028
1029 $ echo issue3276_ok > repo/s/b
1029 $ echo issue3276_ok > repo/s/b
1030 $ hg -R repo2 push -f -q
1030 $ hg -R repo2 push -f -q
1031 $ touch -t 200001010000 repo/.hgsubstate
1031 $ touch -t 200001010000 repo/.hgsubstate
1032
1032
1033 $ cat >> repo/.hg/hgrc <<EOF
1033 $ cat >> repo/.hg/hgrc <<EOF
1034 > [fakedirstatewritetime]
1034 > [fakedirstatewritetime]
1035 > # emulate invoking dirstate.write() via repo.status()
1035 > # emulate invoking dirstate.write() via repo.status()
1036 > # at 2000-01-01 00:00
1036 > # at 2000-01-01 00:00
1037 > fakenow = 200001010000
1037 > fakenow = 200001010000
1038 >
1038 >
1039 > [extensions]
1039 > [extensions]
1040 > fakedirstatewritetime = $TESTDIR/fakedirstatewritetime.py
1040 > fakedirstatewritetime = $TESTDIR/fakedirstatewritetime.py
1041 > EOF
1041 > EOF
1042 $ hg -R repo update
1042 $ hg -R repo update
1043 b: untracked file differs
1043 b: untracked file differs
1044 abort: untracked files in working directory differ from files in requested revision (in subrepository "s")
1044 abort: untracked files in working directory differ from files in requested revision (in subrepository "s")
1045 [255]
1045 [255]
1046 $ cat >> repo/.hg/hgrc <<EOF
1046 $ cat >> repo/.hg/hgrc <<EOF
1047 > [extensions]
1047 > [extensions]
1048 > fakedirstatewritetime = !
1048 > fakedirstatewritetime = !
1049 > EOF
1049 > EOF
1050
1050
1051 $ cat repo/s/b
1051 $ cat repo/s/b
1052 issue3276_ok
1052 issue3276_ok
1053 $ rm repo/s/b
1053 $ rm repo/s/b
1054 $ touch -t 200001010000 repo/.hgsubstate
1054 $ touch -t 200001010000 repo/.hgsubstate
1055 $ hg -R repo revert --all
1055 $ hg -R repo revert --all
1056 reverting repo/.hgsubstate
1056 reverting repo/.hgsubstate
1057 reverting subrepo s
1057 reverting subrepo s
1058 $ hg -R repo update
1058 $ hg -R repo update
1059 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1059 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1060 $ cat repo/s/b
1060 $ cat repo/s/b
1061 2
1061 2
1062 $ rm -rf repo2 repo
1062 $ rm -rf repo2 repo
1063
1063
1064
1064
1065 Issue1852 subrepos with relative paths always push/pull relative to default
1065 Issue1852 subrepos with relative paths always push/pull relative to default
1066
1066
1067 Prepare a repo with subrepo
1067 Prepare a repo with subrepo
1068
1068
1069 $ hg init issue1852a
1069 $ hg init issue1852a
1070 $ cd issue1852a
1070 $ cd issue1852a
1071 $ hg init sub/repo
1071 $ hg init sub/repo
1072 $ echo test > sub/repo/foo
1072 $ echo test > sub/repo/foo
1073 $ hg -R sub/repo add sub/repo/foo
1073 $ hg -R sub/repo add sub/repo/foo
1074 $ echo sub/repo = sub/repo > .hgsub
1074 $ echo sub/repo = sub/repo > .hgsub
1075 $ hg add .hgsub
1075 $ hg add .hgsub
1076 $ hg ci -mtest
1076 $ hg ci -mtest
1077 committing subrepository sub/repo
1077 committing subrepository sub/repo
1078 $ echo test >> sub/repo/foo
1078 $ echo test >> sub/repo/foo
1079 $ hg ci -mtest
1079 $ hg ci -mtest
1080 committing subrepository sub/repo
1080 committing subrepository sub/repo
1081 $ hg cat sub/repo/foo
1081 $ hg cat sub/repo/foo
1082 test
1082 test
1083 test
1083 test
1084 $ hg cat sub/repo/foo -Tjson | sed 's|\\\\|/|g'
1084 $ hg cat sub/repo/foo -Tjson | sed 's|\\\\|/|g'
1085 [
1085 [
1086 {
1086 {
1087 "data": "test\ntest\n",
1087 "data": "test\ntest\n",
1088 "path": "foo"
1088 "path": "foo"
1089 }
1089 }
1090 ]
1090 ]
1091
1091
1092 non-exact match:
1092 non-exact match:
1093
1093
1094 $ hg cat -T '{path|relpath}\n' 'glob:**'
1094 $ hg cat -T '{path|relpath}\n' 'glob:**'
1095 .hgsub
1095 .hgsub
1096 .hgsubstate
1096 .hgsubstate
1097 sub/repo/foo
1097 sub/repo/foo
1098 $ hg cat -T '{path|relpath}\n' 're:^sub'
1098 $ hg cat -T '{path|relpath}\n' 're:^sub'
1099 sub/repo/foo
1099 sub/repo/foo
1100
1100
1101 missing subrepos in working directory:
1101 missing subrepos in working directory:
1102
1102
1103 $ mkdir -p tmp/sub/repo
1103 $ mkdir -p tmp/sub/repo
1104 $ hg cat -r 0 --output tmp/%p_p sub/repo/foo
1104 $ hg cat -r 0 --output tmp/%p_p sub/repo/foo
1105 $ cat tmp/sub/repo/foo_p
1105 $ cat tmp/sub/repo/foo_p
1106 test
1106 test
1107 $ mv sub/repo sub_
1107 $ mv sub/repo sub_
1108 $ hg cat sub/repo/baz
1108 $ hg cat sub/repo/baz
1109 skipping missing subrepository: sub/repo
1109 skipping missing subrepository: sub/repo
1110 [1]
1110 [1]
1111 $ rm -rf sub/repo
1111 $ rm -rf sub/repo
1112 $ mv sub_ sub/repo
1112 $ mv sub_ sub/repo
1113 $ cd ..
1113 $ cd ..
1114
1114
1115 Create repo without default path, pull top repo, and see what happens on update
1115 Create repo without default path, pull top repo, and see what happens on update
1116
1116
1117 $ hg init issue1852b
1117 $ hg init issue1852b
1118 $ hg -R issue1852b pull issue1852a
1118 $ hg -R issue1852b pull issue1852a
1119 pulling from issue1852a
1119 pulling from issue1852a
1120 requesting all changes
1120 requesting all changes
1121 adding changesets
1121 adding changesets
1122 adding manifests
1122 adding manifests
1123 adding file changes
1123 adding file changes
1124 added 2 changesets with 3 changes to 2 files
1124 added 2 changesets with 3 changes to 2 files
1125 new changesets 19487b456929:be5eb94e7215
1125 new changesets 19487b456929:be5eb94e7215
1126 (run 'hg update' to get a working copy)
1126 (run 'hg update' to get a working copy)
1127 $ hg -R issue1852b update
1127 $ hg -R issue1852b update
1128 abort: default path for subrepository not found (in subrepository "sub/repo")
1128 abort: default path for subrepository not found (in subrepository "sub/repo")
1129 [255]
1129 [255]
1130
1130
1131 Ensure a full traceback, not just the SubrepoAbort part
1131 Ensure a full traceback, not just the SubrepoAbort part
1132
1132
1133 $ hg -R issue1852b update --traceback 2>&1 | grep 'raise error\.Abort'
1133 $ hg -R issue1852b update --traceback 2>&1 | grep 'raise error\.Abort'
1134 raise error.Abort(_(b"default path for subrepository not found"))
1134 raise error.Abort(_(b"default path for subrepository not found"))
1135
1135
1136 Pull -u now doesn't help
1136 Pull -u now doesn't help
1137
1137
1138 $ hg -R issue1852b pull -u issue1852a
1138 $ hg -R issue1852b pull -u issue1852a
1139 pulling from issue1852a
1139 pulling from issue1852a
1140 searching for changes
1140 searching for changes
1141 no changes found
1141 no changes found
1142
1142
1143 Try the same, but with pull -u
1143 Try the same, but with pull -u
1144
1144
1145 $ hg init issue1852c
1145 $ hg init issue1852c
1146 $ hg -R issue1852c pull -r0 -u issue1852a
1146 $ hg -R issue1852c pull -r0 -u issue1852a
1147 pulling from issue1852a
1147 pulling from issue1852a
1148 adding changesets
1148 adding changesets
1149 adding manifests
1149 adding manifests
1150 adding file changes
1150 adding file changes
1151 added 1 changesets with 2 changes to 2 files
1151 added 1 changesets with 2 changes to 2 files
1152 new changesets 19487b456929
1152 new changesets 19487b456929
1153 cloning subrepo sub/repo from issue1852a/sub/repo
1153 cloning subrepo sub/repo from issue1852a/sub/repo
1154 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1154 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1155
1155
1156 Try to push from the other side
1156 Try to push from the other side
1157
1157
1158 $ hg -R issue1852a push `pwd`/issue1852c
1158 $ hg -R issue1852a push `pwd`/issue1852c
1159 pushing to $TESTTMP/issue1852c
1159 pushing to $TESTTMP/issue1852c
1160 pushing subrepo sub/repo to $TESTTMP/issue1852c/sub/repo
1160 pushing subrepo sub/repo to $TESTTMP/issue1852c/sub/repo
1161 searching for changes
1161 searching for changes
1162 no changes found
1162 no changes found
1163 searching for changes
1163 searching for changes
1164 adding changesets
1164 adding changesets
1165 adding manifests
1165 adding manifests
1166 adding file changes
1166 adding file changes
1167 added 1 changesets with 1 changes to 1 files
1167 added 1 changesets with 1 changes to 1 files
1168
1168
1169 Incoming and outgoing should not use the default path:
1169 Incoming and outgoing should not use the default path:
1170
1170
1171 $ hg clone -q issue1852a issue1852d
1171 $ hg clone -q issue1852a issue1852d
1172 $ hg -R issue1852d outgoing --subrepos issue1852c
1172 $ hg -R issue1852d outgoing --subrepos issue1852c
1173 comparing with issue1852c
1173 comparing with issue1852c
1174 searching for changes
1174 searching for changes
1175 no changes found
1175 no changes found
1176 comparing with issue1852c/sub/repo
1176 comparing with issue1852c/sub/repo
1177 searching for changes
1177 searching for changes
1178 no changes found
1178 no changes found
1179 [1]
1179 [1]
1180 $ hg -R issue1852d incoming --subrepos issue1852c
1180 $ hg -R issue1852d incoming --subrepos issue1852c
1181 comparing with issue1852c
1181 comparing with issue1852c
1182 searching for changes
1182 searching for changes
1183 no changes found
1183 no changes found
1184 comparing with issue1852c/sub/repo
1184 comparing with issue1852c/sub/repo
1185 searching for changes
1185 searching for changes
1186 no changes found
1186 no changes found
1187 [1]
1187 [1]
1188
1188
1189 Check that merge of a new subrepo doesn't write the uncommitted state to
1189 Check that merge of a new subrepo doesn't write the uncommitted state to
1190 .hgsubstate (issue4622)
1190 .hgsubstate (issue4622)
1191
1191
1192 $ hg init issue1852a/addedsub
1192 $ hg init issue1852a/addedsub
1193 $ echo zzz > issue1852a/addedsub/zz.txt
1193 $ echo zzz > issue1852a/addedsub/zz.txt
1194 $ hg -R issue1852a/addedsub ci -Aqm "initial ZZ"
1194 $ hg -R issue1852a/addedsub ci -Aqm "initial ZZ"
1195
1195
1196 $ hg clone issue1852a/addedsub issue1852d/addedsub
1196 $ hg clone issue1852a/addedsub issue1852d/addedsub
1197 updating to branch default
1197 updating to branch default
1198 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1198 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1199
1199
1200 $ echo def > issue1852a/sub/repo/foo
1200 $ echo def > issue1852a/sub/repo/foo
1201 $ hg -R issue1852a ci -SAm 'tweaked subrepo'
1201 $ hg -R issue1852a ci -SAm 'tweaked subrepo'
1202 adding tmp/sub/repo/foo_p
1202 adding tmp/sub/repo/foo_p
1203 committing subrepository sub/repo
1203 committing subrepository sub/repo
1204
1204
1205 $ echo 'addedsub = addedsub' >> issue1852d/.hgsub
1205 $ echo 'addedsub = addedsub' >> issue1852d/.hgsub
1206 $ echo xyz > issue1852d/sub/repo/foo
1206 $ echo xyz > issue1852d/sub/repo/foo
1207 $ hg -R issue1852d pull -u
1207 $ hg -R issue1852d pull -u
1208 pulling from $TESTTMP/issue1852a
1208 pulling from $TESTTMP/issue1852a
1209 searching for changes
1209 searching for changes
1210 adding changesets
1210 adding changesets
1211 adding manifests
1211 adding manifests
1212 adding file changes
1212 adding file changes
1213 added 1 changesets with 2 changes to 2 files
1213 added 1 changesets with 2 changes to 2 files
1214 new changesets c82b79fdcc5b
1214 new changesets c82b79fdcc5b
1215 subrepository sub/repo diverged (local revision: f42d5c7504a8, remote revision: 46cd4aac504c)
1215 subrepository sub/repo diverged (local revision: f42d5c7504a8, remote revision: 46cd4aac504c)
1216 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1216 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1217 what do you want to do? m
1217 what do you want to do? m
1218 pulling subrepo sub/repo from $TESTTMP/issue1852a/sub/repo
1218 pulling subrepo sub/repo from $TESTTMP/issue1852a/sub/repo
1219 searching for changes
1219 searching for changes
1220 adding changesets
1220 adding changesets
1221 adding manifests
1221 adding manifests
1222 adding file changes
1222 adding file changes
1223 added 1 changesets with 1 changes to 1 files
1223 added 1 changesets with 1 changes to 1 files
1224 new changesets 46cd4aac504c
1224 new changesets 46cd4aac504c
1225 subrepository sources for sub/repo differ
1225 subrepository sources for sub/repo differ
1226 you can use (l)ocal source (f42d5c7504a8) or (r)emote source (46cd4aac504c).
1226 you can use (l)ocal source (f42d5c7504a8) or (r)emote source (46cd4aac504c).
1227 what do you want to do? l
1227 what do you want to do? l
1228 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1228 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1229 $ cat issue1852d/.hgsubstate
1229 $ cat issue1852d/.hgsubstate
1230 f42d5c7504a811dda50f5cf3e5e16c3330b87172 sub/repo
1230 f42d5c7504a811dda50f5cf3e5e16c3330b87172 sub/repo
1231
1231
1232 Check status of files when none of them belong to the first
1232 Check status of files when none of them belong to the first
1233 subrepository:
1233 subrepository:
1234
1234
1235 $ hg init subrepo-status
1235 $ hg init subrepo-status
1236 $ cd subrepo-status
1236 $ cd subrepo-status
1237 $ hg init subrepo-1
1237 $ hg init subrepo-1
1238 $ hg init subrepo-2
1238 $ hg init subrepo-2
1239 $ cd subrepo-2
1239 $ cd subrepo-2
1240 $ touch file
1240 $ touch file
1241 $ hg add file
1241 $ hg add file
1242 $ cd ..
1242 $ cd ..
1243 $ echo subrepo-1 = subrepo-1 > .hgsub
1243 $ echo subrepo-1 = subrepo-1 > .hgsub
1244 $ echo subrepo-2 = subrepo-2 >> .hgsub
1244 $ echo subrepo-2 = subrepo-2 >> .hgsub
1245 $ hg add .hgsub
1245 $ hg add .hgsub
1246 $ hg ci -m 'Added subrepos'
1246 $ hg ci -m 'Added subrepos'
1247 committing subrepository subrepo-2
1247 committing subrepository subrepo-2
1248 $ hg st subrepo-2/file
1248 $ hg st subrepo-2/file
1249
1249
1250 Check that share works with subrepo
1250 Check that share works with subrepo
1251 $ hg --config extensions.share= share . ../shared
1251 $ hg --config extensions.share= share . ../shared
1252 updating working directory
1252 updating working directory
1253 sharing subrepo subrepo-1 from $TESTTMP/subrepo-status/subrepo-1
1253 sharing subrepo subrepo-1 from $TESTTMP/subrepo-status/subrepo-1
1254 sharing subrepo subrepo-2 from $TESTTMP/subrepo-status/subrepo-2
1254 sharing subrepo subrepo-2 from $TESTTMP/subrepo-status/subrepo-2
1255 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1255 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1256 $ find ../shared/* | sort
1256 $ find ../shared/* | sort
1257 ../shared/subrepo-1
1257 ../shared/subrepo-1
1258 ../shared/subrepo-1/.hg
1258 ../shared/subrepo-1/.hg
1259 ../shared/subrepo-1/.hg/cache
1259 ../shared/subrepo-1/.hg/cache
1260 ../shared/subrepo-1/.hg/cache/storehash
1260 ../shared/subrepo-1/.hg/cache/storehash
1261 ../shared/subrepo-1/.hg/cache/storehash/* (glob)
1261 ../shared/subrepo-1/.hg/cache/storehash/* (glob)
1262 ../shared/subrepo-1/.hg/hgrc
1262 ../shared/subrepo-1/.hg/hgrc
1263 ../shared/subrepo-1/.hg/requires
1263 ../shared/subrepo-1/.hg/requires
1264 ../shared/subrepo-1/.hg/sharedpath
1264 ../shared/subrepo-1/.hg/sharedpath
1265 ../shared/subrepo-1/.hg/wcache
1265 ../shared/subrepo-1/.hg/wcache
1266 ../shared/subrepo-2
1266 ../shared/subrepo-2
1267 ../shared/subrepo-2/.hg
1267 ../shared/subrepo-2/.hg
1268 ../shared/subrepo-2/.hg/branch
1268 ../shared/subrepo-2/.hg/branch
1269 ../shared/subrepo-2/.hg/cache
1269 ../shared/subrepo-2/.hg/cache
1270 ../shared/subrepo-2/.hg/cache/storehash
1270 ../shared/subrepo-2/.hg/cache/storehash
1271 ../shared/subrepo-2/.hg/cache/storehash/* (glob)
1271 ../shared/subrepo-2/.hg/cache/storehash/* (glob)
1272 ../shared/subrepo-2/.hg/dirstate
1272 ../shared/subrepo-2/.hg/dirstate
1273 ../shared/subrepo-2/.hg/hgrc
1273 ../shared/subrepo-2/.hg/hgrc
1274 ../shared/subrepo-2/.hg/requires
1274 ../shared/subrepo-2/.hg/requires
1275 ../shared/subrepo-2/.hg/sharedpath
1275 ../shared/subrepo-2/.hg/sharedpath
1276 ../shared/subrepo-2/.hg/wcache
1276 ../shared/subrepo-2/.hg/wcache
1277 ../shared/subrepo-2/.hg/wcache/checkisexec (execbit !)
1277 ../shared/subrepo-2/.hg/wcache/checkisexec (execbit !)
1278 ../shared/subrepo-2/.hg/wcache/checklink (symlink !)
1278 ../shared/subrepo-2/.hg/wcache/checklink (symlink !)
1279 ../shared/subrepo-2/.hg/wcache/checklink-target (symlink !)
1279 ../shared/subrepo-2/.hg/wcache/checklink-target (symlink !)
1280 ../shared/subrepo-2/.hg/wcache/manifestfulltextcache (reporevlogstore !)
1280 ../shared/subrepo-2/.hg/wcache/manifestfulltextcache (reporevlogstore !)
1281 ../shared/subrepo-2/file
1281 ../shared/subrepo-2/file
1282 $ hg -R ../shared in
1282 $ hg -R ../shared in
1283 abort: repository default not found
1283 abort: repository default not found
1284 [255]
1284 [255]
1285 $ hg -R ../shared/subrepo-2 showconfig paths
1285 $ hg -R ../shared/subrepo-2 showconfig paths
1286 paths.default=$TESTTMP/subrepo-status/subrepo-2
1286 paths.default=$TESTTMP/subrepo-status/subrepo-2
1287 $ hg -R ../shared/subrepo-1 sum --remote
1287 $ hg -R ../shared/subrepo-1 sum --remote
1288 parent: -1:000000000000 tip (empty repository)
1288 parent: -1:000000000000 tip (empty repository)
1289 branch: default
1289 branch: default
1290 commit: (clean)
1290 commit: (clean)
1291 update: (current)
1291 update: (current)
1292 remote: (synced)
1292 remote: (synced)
1293
1293
1294 Check hg update --clean
1294 Check hg update --clean
1295 $ cd $TESTTMP/t
1295 $ cd $TESTTMP/t
1296 $ rm -r t/t.orig
1296 $ rm -r t/t.orig
1297 $ hg status -S --all
1297 $ hg status -S --all
1298 C .hgsub
1298 C .hgsub
1299 C .hgsubstate
1299 C .hgsubstate
1300 C a
1300 C a
1301 C s/.hgsub
1301 C s/.hgsub
1302 C s/.hgsubstate
1302 C s/.hgsubstate
1303 C s/a
1303 C s/a
1304 C s/ss/a
1304 C s/ss/a
1305 C t/t
1305 C t/t
1306 $ echo c1 > s/a
1306 $ echo c1 > s/a
1307 $ cd s
1307 $ cd s
1308 $ echo c1 > b
1308 $ echo c1 > b
1309 $ echo c1 > c
1309 $ echo c1 > c
1310 $ hg add b
1310 $ hg add b
1311 $ cd ..
1311 $ cd ..
1312 $ hg status -S
1312 $ hg status -S
1313 M s/a
1313 M s/a
1314 A s/b
1314 A s/b
1315 ? s/c
1315 ? s/c
1316 $ hg update -C
1316 $ hg update -C
1317 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1317 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1318 updated to "925c17564ef8: 13"
1318 updated to "925c17564ef8: 13"
1319 2 other heads for branch "default"
1319 2 other heads for branch "default"
1320 $ hg status -S
1320 $ hg status -S
1321 ? s/b
1321 ? s/b
1322 ? s/c
1322 ? s/c
1323
1323
1324 Sticky subrepositories, no changes
1324 Sticky subrepositories, no changes
1325 $ cd $TESTTMP/t
1325 $ cd $TESTTMP/t
1326 $ hg id
1326 $ hg id
1327 925c17564ef8 tip
1327 925c17564ef8 tip
1328 $ hg -R s id
1328 $ hg -R s id
1329 12a213df6fa9 tip
1329 12a213df6fa9 tip
1330 $ hg -R t id
1330 $ hg -R t id
1331 52c0adc0515a tip
1331 52c0adc0515a tip
1332 $ hg update 11
1332 $ hg update 11
1333 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1333 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1334 $ hg id
1334 $ hg id
1335 365661e5936a
1335 365661e5936a
1336 $ hg -R s id
1336 $ hg -R s id
1337 fc627a69481f
1337 fc627a69481f
1338 $ hg -R t id
1338 $ hg -R t id
1339 e95bcfa18a35
1339 e95bcfa18a35
1340
1340
1341 Sticky subrepositories, file changes
1341 Sticky subrepositories, file changes
1342 $ touch s/f1
1342 $ touch s/f1
1343 $ touch t/f1
1343 $ touch t/f1
1344 $ hg add -S s/f1
1344 $ hg add -S s/f1
1345 $ hg add -S t/f1
1345 $ hg add -S t/f1
1346 $ hg id
1346 $ hg id
1347 365661e5936a+
1347 365661e5936a+
1348 $ hg -R s id
1348 $ hg -R s id
1349 fc627a69481f+
1349 fc627a69481f+
1350 $ hg -R t id
1350 $ hg -R t id
1351 e95bcfa18a35+
1351 e95bcfa18a35+
1352 $ hg update tip
1352 $ hg update tip
1353 subrepository s diverged (local revision: fc627a69481f, remote revision: 12a213df6fa9)
1353 subrepository s diverged (local revision: fc627a69481f, remote revision: 12a213df6fa9)
1354 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1354 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1355 what do you want to do? m
1355 what do you want to do? m
1356 subrepository sources for s differ
1356 subrepository sources for s differ
1357 you can use (l)ocal source (fc627a69481f) or (r)emote source (12a213df6fa9).
1357 you can use (l)ocal source (fc627a69481f) or (r)emote source (12a213df6fa9).
1358 what do you want to do? l
1358 what do you want to do? l
1359 subrepository t diverged (local revision: e95bcfa18a35, remote revision: 52c0adc0515a)
1359 subrepository t diverged (local revision: e95bcfa18a35, remote revision: 52c0adc0515a)
1360 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1360 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1361 what do you want to do? m
1361 what do you want to do? m
1362 subrepository sources for t differ
1362 subrepository sources for t differ
1363 you can use (l)ocal source (e95bcfa18a35) or (r)emote source (52c0adc0515a).
1363 you can use (l)ocal source (e95bcfa18a35) or (r)emote source (52c0adc0515a).
1364 what do you want to do? l
1364 what do you want to do? l
1365 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1365 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1366 $ hg id
1366 $ hg id
1367 925c17564ef8+ tip
1367 925c17564ef8+ tip
1368 $ hg -R s id
1368 $ hg -R s id
1369 fc627a69481f+
1369 fc627a69481f+
1370 $ hg -R t id
1370 $ hg -R t id
1371 e95bcfa18a35+
1371 e95bcfa18a35+
1372 $ hg update --clean tip
1372 $ hg update --clean tip
1373 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1373 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1374
1374
1375 Sticky subrepository, revision updates
1375 Sticky subrepository, revision updates
1376 $ hg id
1376 $ hg id
1377 925c17564ef8 tip
1377 925c17564ef8 tip
1378 $ hg -R s id
1378 $ hg -R s id
1379 12a213df6fa9 tip
1379 12a213df6fa9 tip
1380 $ hg -R t id
1380 $ hg -R t id
1381 52c0adc0515a tip
1381 52c0adc0515a tip
1382 $ cd s
1382 $ cd s
1383 $ hg update -r -2
1383 $ hg update -r -2
1384 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1384 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1385 $ cd ../t
1385 $ cd ../t
1386 $ hg update -r 2
1386 $ hg update -r 2
1387 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1387 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1388 $ cd ..
1388 $ cd ..
1389 $ hg update 10
1389 $ hg update 10
1390 subrepository s diverged (local revision: 12a213df6fa9, remote revision: fc627a69481f)
1390 subrepository s diverged (local revision: 12a213df6fa9, remote revision: fc627a69481f)
1391 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1391 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1392 what do you want to do? m
1392 what do you want to do? m
1393 subrepository t diverged (local revision: 52c0adc0515a, remote revision: 20a0db6fbf6c)
1393 subrepository t diverged (local revision: 52c0adc0515a, remote revision: 20a0db6fbf6c)
1394 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1394 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1395 what do you want to do? m
1395 what do you want to do? m
1396 subrepository sources for t differ (in checked out version)
1396 subrepository sources for t differ (in checked out version)
1397 you can use (l)ocal source (7af322bc1198) or (r)emote source (20a0db6fbf6c).
1397 you can use (l)ocal source (7af322bc1198) or (r)emote source (20a0db6fbf6c).
1398 what do you want to do? l
1398 what do you want to do? l
1399 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1399 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1400 $ hg id
1400 $ hg id
1401 e45c8b14af55+
1401 e45c8b14af55+
1402 $ hg -R s id
1402 $ hg -R s id
1403 02dcf1d70411
1403 02dcf1d70411
1404 $ hg -R t id
1404 $ hg -R t id
1405 7af322bc1198
1405 7af322bc1198
1406
1406
1407 Sticky subrepository, file changes and revision updates
1407 Sticky subrepository, file changes and revision updates
1408 $ touch s/f1
1408 $ touch s/f1
1409 $ touch t/f1
1409 $ touch t/f1
1410 $ hg add -S s/f1
1410 $ hg add -S s/f1
1411 $ hg add -S t/f1
1411 $ hg add -S t/f1
1412 $ hg id
1412 $ hg id
1413 e45c8b14af55+
1413 e45c8b14af55+
1414 $ hg -R s id
1414 $ hg -R s id
1415 02dcf1d70411+
1415 02dcf1d70411+
1416 $ hg -R t id
1416 $ hg -R t id
1417 7af322bc1198+
1417 7af322bc1198+
1418 $ hg update tip
1418 $ hg update tip
1419 subrepository s diverged (local revision: 12a213df6fa9, remote revision: 12a213df6fa9)
1419 subrepository s diverged (local revision: 12a213df6fa9, remote revision: 12a213df6fa9)
1420 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1420 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1421 what do you want to do? m
1421 what do you want to do? m
1422 subrepository sources for s differ
1422 subrepository sources for s differ
1423 you can use (l)ocal source (02dcf1d70411) or (r)emote source (12a213df6fa9).
1423 you can use (l)ocal source (02dcf1d70411) or (r)emote source (12a213df6fa9).
1424 what do you want to do? l
1424 what do you want to do? l
1425 subrepository t diverged (local revision: 52c0adc0515a, remote revision: 52c0adc0515a)
1425 subrepository t diverged (local revision: 52c0adc0515a, remote revision: 52c0adc0515a)
1426 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1426 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1427 what do you want to do? m
1427 what do you want to do? m
1428 subrepository sources for t differ
1428 subrepository sources for t differ
1429 you can use (l)ocal source (7af322bc1198) or (r)emote source (52c0adc0515a).
1429 you can use (l)ocal source (7af322bc1198) or (r)emote source (52c0adc0515a).
1430 what do you want to do? l
1430 what do you want to do? l
1431 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1431 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1432 $ hg id
1432 $ hg id
1433 925c17564ef8+ tip
1433 925c17564ef8+ tip
1434 $ hg -R s id
1434 $ hg -R s id
1435 02dcf1d70411+
1435 02dcf1d70411+
1436 $ hg -R t id
1436 $ hg -R t id
1437 7af322bc1198+
1437 7af322bc1198+
1438
1438
1439 Sticky repository, update --clean
1439 Sticky repository, update --clean
1440 $ hg update --clean tip
1440 $ hg update --clean tip
1441 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1441 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1442 $ hg id
1442 $ hg id
1443 925c17564ef8 tip
1443 925c17564ef8 tip
1444 $ hg -R s id
1444 $ hg -R s id
1445 12a213df6fa9 tip
1445 12a213df6fa9 tip
1446 $ hg -R t id
1446 $ hg -R t id
1447 52c0adc0515a tip
1447 52c0adc0515a tip
1448
1448
1449 Test subrepo already at intended revision:
1449 Test subrepo already at intended revision:
1450 $ cd s
1450 $ cd s
1451 $ hg update fc627a69481f
1451 $ hg update fc627a69481f
1452 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1452 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1453 $ cd ..
1453 $ cd ..
1454 $ hg update 11
1454 $ hg update 11
1455 subrepository s diverged (local revision: 12a213df6fa9, remote revision: fc627a69481f)
1455 subrepository s diverged (local revision: 12a213df6fa9, remote revision: fc627a69481f)
1456 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1456 you can (m)erge, keep (l)ocal [working copy] or keep (r)emote [destination].
1457 what do you want to do? m
1457 what do you want to do? m
1458 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1458 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1459 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1459 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1460 $ hg id -n
1460 $ hg id -n
1461 11+
1461 11+
1462 $ hg -R s id
1462 $ hg -R s id
1463 fc627a69481f
1463 fc627a69481f
1464 $ hg -R t id
1464 $ hg -R t id
1465 e95bcfa18a35
1465 e95bcfa18a35
1466
1466
1467 Test that removing .hgsubstate doesn't break anything:
1467 Test that removing .hgsubstate doesn't break anything:
1468
1468
1469 $ hg rm -f .hgsubstate
1469 $ hg rm -f .hgsubstate
1470 $ hg ci -mrm
1470 $ hg ci -mrm
1471 nothing changed
1471 nothing changed
1472 [1]
1472 [1]
1473 $ hg log -vr tip
1473 $ hg log -vr tip
1474 changeset: 13:925c17564ef8
1474 changeset: 13:925c17564ef8
1475 tag: tip
1475 tag: tip
1476 user: test
1476 user: test
1477 date: Thu Jan 01 00:00:00 1970 +0000
1477 date: Thu Jan 01 00:00:00 1970 +0000
1478 files: .hgsubstate
1478 files: .hgsubstate
1479 description:
1479 description:
1480 13
1480 13
1481
1481
1482
1482
1483
1483
1484 Test that removing .hgsub removes .hgsubstate:
1484 Test that removing .hgsub removes .hgsubstate:
1485
1485
1486 $ hg rm .hgsub
1486 $ hg rm .hgsub
1487 $ hg ci -mrm2
1487 $ hg ci -mrm2
1488 created new head
1488 created new head
1489 $ hg log -vr tip
1489 $ hg log -vr tip
1490 changeset: 14:2400bccd50af
1490 changeset: 14:2400bccd50af
1491 tag: tip
1491 tag: tip
1492 parent: 11:365661e5936a
1492 parent: 11:365661e5936a
1493 user: test
1493 user: test
1494 date: Thu Jan 01 00:00:00 1970 +0000
1494 date: Thu Jan 01 00:00:00 1970 +0000
1495 files: .hgsub .hgsubstate
1495 files: .hgsub .hgsubstate
1496 description:
1496 description:
1497 rm2
1497 rm2
1498
1498
1499
1499
1500 Test issue3153: diff -S with deleted subrepos
1500 Test issue3153: diff -S with deleted subrepos
1501
1501
1502 $ hg diff --nodates -S -c .
1502 $ hg diff --nodates -S -c .
1503 diff -r 365661e5936a -r 2400bccd50af .hgsub
1503 diff -r 365661e5936a -r 2400bccd50af .hgsub
1504 --- a/.hgsub
1504 --- a/.hgsub
1505 +++ /dev/null
1505 +++ /dev/null
1506 @@ -1,2 +0,0 @@
1506 @@ -1,2 +0,0 @@
1507 -s = s
1507 -s = s
1508 -t = t
1508 -t = t
1509 diff -r 365661e5936a -r 2400bccd50af .hgsubstate
1509 diff -r 365661e5936a -r 2400bccd50af .hgsubstate
1510 --- a/.hgsubstate
1510 --- a/.hgsubstate
1511 +++ /dev/null
1511 +++ /dev/null
1512 @@ -1,2 +0,0 @@
1512 @@ -1,2 +0,0 @@
1513 -fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
1513 -fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
1514 -e95bcfa18a358dc4936da981ebf4147b4cad1362 t
1514 -e95bcfa18a358dc4936da981ebf4147b4cad1362 t
1515
1515
1516 Test behavior of add for explicit path in subrepo:
1516 Test behavior of add for explicit path in subrepo:
1517 $ cd ..
1517 $ cd ..
1518 $ hg init explicit
1518 $ hg init explicit
1519 $ cd explicit
1519 $ cd explicit
1520 $ echo s = s > .hgsub
1520 $ echo s = s > .hgsub
1521 $ hg add .hgsub
1521 $ hg add .hgsub
1522 $ hg init s
1522 $ hg init s
1523 $ hg ci -m0
1523 $ hg ci -m0
1524 Adding with an explicit path in a subrepo adds the file
1524 Adding with an explicit path in a subrepo adds the file
1525 $ echo c1 > f1
1525 $ echo c1 > f1
1526 $ echo c2 > s/f2
1526 $ echo c2 > s/f2
1527 $ hg st -S
1527 $ hg st -S
1528 ? f1
1528 ? f1
1529 ? s/f2
1529 ? s/f2
1530 $ hg add s/f2
1530 $ hg add s/f2
1531 $ hg st -S
1531 $ hg st -S
1532 A s/f2
1532 A s/f2
1533 ? f1
1533 ? f1
1534 $ hg ci -R s -m0
1534 $ hg ci -R s -m0
1535 $ hg ci -Am1
1535 $ hg ci -Am1
1536 adding f1
1536 adding f1
1537 Adding with an explicit path in a subrepo with -S has the same behavior
1537 Adding with an explicit path in a subrepo with -S has the same behavior
1538 $ echo c3 > f3
1538 $ echo c3 > f3
1539 $ echo c4 > s/f4
1539 $ echo c4 > s/f4
1540 $ hg st -S
1540 $ hg st -S
1541 ? f3
1541 ? f3
1542 ? s/f4
1542 ? s/f4
1543 $ hg add -S s/f4
1543 $ hg add -S s/f4
1544 $ hg st -S
1544 $ hg st -S
1545 A s/f4
1545 A s/f4
1546 ? f3
1546 ? f3
1547 $ hg ci -R s -m1
1547 $ hg ci -R s -m1
1548 $ hg ci -Ama2
1548 $ hg ci -Ama2
1549 adding f3
1549 adding f3
1550 Adding without a path or pattern silently ignores subrepos
1550 Adding without a path or pattern silently ignores subrepos
1551 $ echo c5 > f5
1551 $ echo c5 > f5
1552 $ echo c6 > s/f6
1552 $ echo c6 > s/f6
1553 $ echo c7 > s/f7
1553 $ echo c7 > s/f7
1554 $ hg st -S
1554 $ hg st -S
1555 ? f5
1555 ? f5
1556 ? s/f6
1556 ? s/f6
1557 ? s/f7
1557 ? s/f7
1558 $ hg add
1558 $ hg add
1559 adding f5
1559 adding f5
1560 $ hg st -S
1560 $ hg st -S
1561 A f5
1561 A f5
1562 ? s/f6
1562 ? s/f6
1563 ? s/f7
1563 ? s/f7
1564 $ hg ci -R s -Am2
1564 $ hg ci -R s -Am2
1565 adding f6
1565 adding f6
1566 adding f7
1566 adding f7
1567 $ hg ci -m3
1567 $ hg ci -m3
1568 Adding without a path or pattern with -S also adds files in subrepos
1568 Adding without a path or pattern with -S also adds files in subrepos
1569 $ echo c8 > f8
1569 $ echo c8 > f8
1570 $ echo c9 > s/f9
1570 $ echo c9 > s/f9
1571 $ echo c10 > s/f10
1571 $ echo c10 > s/f10
1572 $ hg st -S
1572 $ hg st -S
1573 ? f8
1573 ? f8
1574 ? s/f10
1574 ? s/f10
1575 ? s/f9
1575 ? s/f9
1576 $ hg add -S
1576 $ hg add -S
1577 adding f8
1577 adding f8
1578 adding s/f10
1578 adding s/f10
1579 adding s/f9
1579 adding s/f9
1580 $ hg st -S
1580 $ hg st -S
1581 A f8
1581 A f8
1582 A s/f10
1582 A s/f10
1583 A s/f9
1583 A s/f9
1584 $ hg ci -R s -m3
1584 $ hg ci -R s -m3
1585 $ hg ci -m4
1585 $ hg ci -m4
1586 Adding with a pattern silently ignores subrepos
1586 Adding with a pattern silently ignores subrepos
1587 $ echo c11 > fm11
1587 $ echo c11 > fm11
1588 $ echo c12 > fn12
1588 $ echo c12 > fn12
1589 $ echo c13 > s/fm13
1589 $ echo c13 > s/fm13
1590 $ echo c14 > s/fn14
1590 $ echo c14 > s/fn14
1591 $ hg st -S
1591 $ hg st -S
1592 ? fm11
1592 ? fm11
1593 ? fn12
1593 ? fn12
1594 ? s/fm13
1594 ? s/fm13
1595 ? s/fn14
1595 ? s/fn14
1596 $ hg add 'glob:**fm*'
1596 $ hg add 'glob:**fm*'
1597 adding fm11
1597 adding fm11
1598 $ hg st -S
1598 $ hg st -S
1599 A fm11
1599 A fm11
1600 ? fn12
1600 ? fn12
1601 ? s/fm13
1601 ? s/fm13
1602 ? s/fn14
1602 ? s/fn14
1603 $ hg ci -R s -Am4
1603 $ hg ci -R s -Am4
1604 adding fm13
1604 adding fm13
1605 adding fn14
1605 adding fn14
1606 $ hg ci -Am5
1606 $ hg ci -Am5
1607 adding fn12
1607 adding fn12
1608 Adding with a pattern with -S also adds matches in subrepos
1608 Adding with a pattern with -S also adds matches in subrepos
1609 $ echo c15 > fm15
1609 $ echo c15 > fm15
1610 $ echo c16 > fn16
1610 $ echo c16 > fn16
1611 $ echo c17 > s/fm17
1611 $ echo c17 > s/fm17
1612 $ echo c18 > s/fn18
1612 $ echo c18 > s/fn18
1613 $ hg st -S
1613 $ hg st -S
1614 ? fm15
1614 ? fm15
1615 ? fn16
1615 ? fn16
1616 ? s/fm17
1616 ? s/fm17
1617 ? s/fn18
1617 ? s/fn18
1618 $ hg add -S 'glob:**fm*'
1618 $ hg add -S 'glob:**fm*'
1619 adding fm15
1619 adding fm15
1620 adding s/fm17
1620 adding s/fm17
1621 $ hg st -S
1621 $ hg st -S
1622 A fm15
1622 A fm15
1623 A s/fm17
1623 A s/fm17
1624 ? fn16
1624 ? fn16
1625 ? s/fn18
1625 ? s/fn18
1626 $ hg ci -R s -Am5
1626 $ hg ci -R s -Am5
1627 adding fn18
1627 adding fn18
1628 $ hg ci -Am6
1628 $ hg ci -Am6
1629 adding fn16
1629 adding fn16
1630
1630
1631 Test behavior of forget for explicit path in subrepo:
1631 Test behavior of forget for explicit path in subrepo:
1632 Forgetting an explicit path in a subrepo untracks the file
1632 Forgetting an explicit path in a subrepo untracks the file
1633 $ echo c19 > s/f19
1633 $ echo c19 > s/f19
1634 $ hg add s/f19
1634 $ hg add s/f19
1635 $ hg st -S
1635 $ hg st -S
1636 A s/f19
1636 A s/f19
1637 $ hg forget s/f19
1637 $ hg forget s/f19
1638 $ hg st -S
1638 $ hg st -S
1639 ? s/f19
1639 ? s/f19
1640 $ rm s/f19
1640 $ rm s/f19
1641 $ cd ..
1641 $ cd ..
1642
1642
1643 Courtesy phases synchronisation to publishing server does not block the push
1643 Courtesy phases synchronisation to publishing server does not block the push
1644 (issue3781)
1644 (issue3781)
1645
1645
1646 $ cp -R main issue3781
1646 $ cp -R main issue3781
1647 $ cp -R main issue3781-dest
1647 $ cp -R main issue3781-dest
1648 $ cd issue3781-dest/s
1648 $ cd issue3781-dest/s
1649 $ hg phase tip # show we have draft changeset
1649 $ hg phase tip # show we have draft changeset
1650 5: draft
1650 5: draft
1651 $ chmod a-w .hg/store/phaseroots # prevent phase push
1651 $ chmod a-w .hg/store/phaseroots # prevent phase push
1652 $ cd ../../issue3781
1652 $ cd ../../issue3781
1653 $ cat >> .hg/hgrc << EOF
1653 $ cat >> .hg/hgrc << EOF
1654 > [paths]
1654 > [paths]
1655 > default=../issue3781-dest/
1655 > default=../issue3781-dest/
1656 > EOF
1656 > EOF
1657 $ hg push --config devel.legacy.exchange=bundle1
1657 $ hg push --config devel.legacy.exchange=bundle1
1658 pushing to $TESTTMP/issue3781-dest
1658 pushing to $TESTTMP/issue3781-dest
1659 pushing subrepo s to $TESTTMP/issue3781-dest/s
1659 pushing subrepo s to $TESTTMP/issue3781-dest/s
1660 searching for changes
1660 searching for changes
1661 no changes found
1661 no changes found
1662 searching for changes
1662 searching for changes
1663 no changes found
1663 no changes found
1664 [1]
1664 [1]
1665 # clean the push cache
1665 # clean the push cache
1666 $ rm s/.hg/cache/storehash/*
1666 $ rm s/.hg/cache/storehash/*
1667 $ hg push # bundle2+
1667 $ hg push # bundle2+
1668 pushing to $TESTTMP/issue3781-dest
1668 pushing to $TESTTMP/issue3781-dest
1669 pushing subrepo s to $TESTTMP/issue3781-dest/s
1669 pushing subrepo s to $TESTTMP/issue3781-dest/s
1670 searching for changes
1670 searching for changes
1671 no changes found
1671 no changes found
1672 searching for changes
1672 searching for changes
1673 no changes found
1673 no changes found
1674 [1]
1674 [1]
1675 $ cd ..
1675 $ cd ..
1676
1676
1677 Test phase choice for newly created commit with "phases.subrepochecks"
1677 Test phase choice for newly created commit with "phases.subrepochecks"
1678 configuration
1678 configuration
1679
1679
1680 $ cd t
1680 $ cd t
1681 $ hg update -q -r 12
1681 $ hg update -q -r 12
1682
1682
1683 $ cat >> s/ss/.hg/hgrc <<EOF
1683 $ cat >> s/ss/.hg/hgrc <<EOF
1684 > [phases]
1684 > [phases]
1685 > new-commit = secret
1685 > new-commit = secret
1686 > EOF
1686 > EOF
1687 $ cat >> s/.hg/hgrc <<EOF
1687 $ cat >> s/.hg/hgrc <<EOF
1688 > [phases]
1688 > [phases]
1689 > new-commit = draft
1689 > new-commit = draft
1690 > EOF
1690 > EOF
1691 $ echo phasecheck1 >> s/ss/a
1691 $ echo phasecheck1 >> s/ss/a
1692 $ hg -R s commit -S --config phases.checksubrepos=abort -m phasecheck1
1692 $ hg -R s commit -S --config phases.checksubrepos=abort -m phasecheck1
1693 committing subrepository ss
1693 committing subrepository ss
1694 transaction abort!
1694 transaction abort!
1695 rollback completed
1695 rollback completed
1696 abort: can't commit in draft phase conflicting secret from subrepository ss
1696 abort: can't commit in draft phase conflicting secret from subrepository ss
1697 [255]
1697 [255]
1698 $ echo phasecheck2 >> s/ss/a
1698 $ echo phasecheck2 >> s/ss/a
1699 $ hg -R s commit -S --config phases.checksubrepos=ignore -m phasecheck2
1699 $ hg -R s commit -S --config phases.checksubrepos=ignore -m phasecheck2
1700 committing subrepository ss
1700 committing subrepository ss
1701 $ hg -R s/ss phase tip
1701 $ hg -R s/ss phase tip
1702 3: secret
1702 3: secret
1703 $ hg -R s phase tip
1703 $ hg -R s phase tip
1704 6: draft
1704 6: draft
1705 $ echo phasecheck3 >> s/ss/a
1705 $ echo phasecheck3 >> s/ss/a
1706 $ hg -R s commit -S -m phasecheck3
1706 $ hg -R s commit -S -m phasecheck3
1707 committing subrepository ss
1707 committing subrepository ss
1708 warning: changes are committed in secret phase from subrepository ss
1708 warning: changes are committed in secret phase from subrepository ss
1709 $ hg -R s/ss phase tip
1709 $ hg -R s/ss phase tip
1710 4: secret
1710 4: secret
1711 $ hg -R s phase tip
1711 $ hg -R s phase tip
1712 7: secret
1712 7: secret
1713
1713
1714 $ cat >> t/.hg/hgrc <<EOF
1714 $ cat >> t/.hg/hgrc <<EOF
1715 > [phases]
1715 > [phases]
1716 > new-commit = draft
1716 > new-commit = draft
1717 > EOF
1717 > EOF
1718 $ cat >> .hg/hgrc <<EOF
1718 $ cat >> .hg/hgrc <<EOF
1719 > [phases]
1719 > [phases]
1720 > new-commit = public
1720 > new-commit = public
1721 > EOF
1721 > EOF
1722 $ echo phasecheck4 >> s/ss/a
1722 $ echo phasecheck4 >> s/ss/a
1723 $ echo phasecheck4 >> t/t
1723 $ echo phasecheck4 >> t/t
1724 $ hg commit -S -m phasecheck4
1724 $ hg commit -S -m phasecheck4
1725 committing subrepository s
1725 committing subrepository s
1726 committing subrepository s/ss
1726 committing subrepository s/ss
1727 warning: changes are committed in secret phase from subrepository ss
1727 warning: changes are committed in secret phase from subrepository ss
1728 committing subrepository t
1728 committing subrepository t
1729 warning: changes are committed in secret phase from subrepository s
1729 warning: changes are committed in secret phase from subrepository s
1730 created new head
1730 created new head
1731 $ hg -R s/ss phase tip
1731 $ hg -R s/ss phase tip
1732 5: secret
1732 5: secret
1733 $ hg -R s phase tip
1733 $ hg -R s phase tip
1734 8: secret
1734 8: secret
1735 $ hg -R t phase tip
1735 $ hg -R t phase tip
1736 6: draft
1736 6: draft
1737 $ hg phase tip
1737 $ hg phase tip
1738 15: secret
1738 15: secret
1739
1739
1740 $ cd ..
1740 $ cd ..
1741
1741
1742
1742
1743 Test that commit --secret works on both repo and subrepo (issue4182)
1743 Test that commit --secret works on both repo and subrepo (issue4182)
1744
1744
1745 $ cd main
1745 $ cd main
1746 $ echo secret >> b
1746 $ echo secret >> b
1747 $ echo secret >> s/b
1747 $ echo secret >> s/b
1748 $ hg commit --secret --subrepo -m "secret"
1748 $ hg commit --secret --subrepo -m "secret"
1749 committing subrepository s
1749 committing subrepository s
1750 $ hg phase -r .
1750 $ hg phase -r .
1751 6: secret
1751 6: secret
1752 $ cd s
1752 $ cd s
1753 $ hg phase -r .
1753 $ hg phase -r .
1754 6: secret
1754 6: secret
1755 $ cd ../../
1755 $ cd ../../
1756
1756
1757 Test "subrepos" template keyword
1757 Test "subrepos" template keyword
1758
1758
1759 $ cd t
1759 $ cd t
1760 $ hg update -q 15
1760 $ hg update -q 15
1761 $ cat > .hgsub <<EOF
1761 $ cat > .hgsub <<EOF
1762 > s = s
1762 > s = s
1763 > EOF
1763 > EOF
1764 $ hg commit -m "16"
1764 $ hg commit -m "16"
1765 warning: changes are committed in secret phase from subrepository s
1765 warning: changes are committed in secret phase from subrepository s
1766
1766
1767 (addition of ".hgsub" itself)
1767 (addition of ".hgsub" itself)
1768
1768
1769 $ hg diff --nodates -c 1 .hgsubstate
1769 $ hg diff --nodates -c 1 .hgsubstate
1770 diff -r f7b1eb17ad24 -r 7cf8cfea66e4 .hgsubstate
1770 diff -r f7b1eb17ad24 -r 7cf8cfea66e4 .hgsubstate
1771 --- /dev/null
1771 --- /dev/null
1772 +++ b/.hgsubstate
1772 +++ b/.hgsubstate
1773 @@ -0,0 +1,1 @@
1773 @@ -0,0 +1,1 @@
1774 +e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
1774 +e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
1775 $ hg log -r 1 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1775 $ hg log -r 1 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1776 f7b1eb17ad24 000000000000
1776 f7b1eb17ad24 000000000000
1777 s
1777 s
1778
1778
1779 (modification of existing entry)
1779 (modification of existing entry)
1780
1780
1781 $ hg diff --nodates -c 2 .hgsubstate
1781 $ hg diff --nodates -c 2 .hgsubstate
1782 diff -r 7cf8cfea66e4 -r df30734270ae .hgsubstate
1782 diff -r 7cf8cfea66e4 -r df30734270ae .hgsubstate
1783 --- a/.hgsubstate
1783 --- a/.hgsubstate
1784 +++ b/.hgsubstate
1784 +++ b/.hgsubstate
1785 @@ -1,1 +1,1 @@
1785 @@ -1,1 +1,1 @@
1786 -e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
1786 -e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
1787 +dc73e2e6d2675eb2e41e33c205f4bdab4ea5111d s
1787 +dc73e2e6d2675eb2e41e33c205f4bdab4ea5111d s
1788 $ hg log -r 2 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1788 $ hg log -r 2 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1789 7cf8cfea66e4 000000000000
1789 7cf8cfea66e4 000000000000
1790 s
1790 s
1791
1791
1792 (addition of entry)
1792 (addition of entry)
1793
1793
1794 $ hg diff --nodates -c 5 .hgsubstate
1794 $ hg diff --nodates -c 5 .hgsubstate
1795 diff -r 7cf8cfea66e4 -r 1f14a2e2d3ec .hgsubstate
1795 diff -r 7cf8cfea66e4 -r 1f14a2e2d3ec .hgsubstate
1796 --- a/.hgsubstate
1796 --- a/.hgsubstate
1797 +++ b/.hgsubstate
1797 +++ b/.hgsubstate
1798 @@ -1,1 +1,2 @@
1798 @@ -1,1 +1,2 @@
1799 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
1799 e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
1800 +60ca1237c19474e7a3978b0dc1ca4e6f36d51382 t
1800 +60ca1237c19474e7a3978b0dc1ca4e6f36d51382 t
1801 $ hg log -r 5 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1801 $ hg log -r 5 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1802 7cf8cfea66e4 000000000000
1802 7cf8cfea66e4 000000000000
1803 t
1803 t
1804
1804
1805 (removal of existing entry)
1805 (removal of existing entry)
1806
1806
1807 $ hg diff --nodates -c 16 .hgsubstate
1807 $ hg diff --nodates -c 16 .hgsubstate
1808 diff -r 8bec38d2bd0b -r f2f70bc3d3c9 .hgsubstate
1808 diff -r 8bec38d2bd0b -r f2f70bc3d3c9 .hgsubstate
1809 --- a/.hgsubstate
1809 --- a/.hgsubstate
1810 +++ b/.hgsubstate
1810 +++ b/.hgsubstate
1811 @@ -1,2 +1,1 @@
1811 @@ -1,2 +1,1 @@
1812 0731af8ca9423976d3743119d0865097c07bdc1b s
1812 0731af8ca9423976d3743119d0865097c07bdc1b s
1813 -e202dc79b04c88a636ea8913d9182a1346d9b3dc t
1813 -e202dc79b04c88a636ea8913d9182a1346d9b3dc t
1814 $ hg log -r 16 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1814 $ hg log -r 16 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1815 8bec38d2bd0b 000000000000
1815 8bec38d2bd0b 000000000000
1816 t
1816 t
1817
1817
1818 (merging)
1818 (merging)
1819
1819
1820 $ hg diff --nodates -c 9 .hgsubstate
1820 $ hg diff --nodates -c 9 .hgsubstate
1821 diff -r f6affe3fbfaa -r f0d2028bf86d .hgsubstate
1821 diff -r f6affe3fbfaa -r f0d2028bf86d .hgsubstate
1822 --- a/.hgsubstate
1822 --- a/.hgsubstate
1823 +++ b/.hgsubstate
1823 +++ b/.hgsubstate
1824 @@ -1,1 +1,2 @@
1824 @@ -1,1 +1,2 @@
1825 fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
1825 fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
1826 +60ca1237c19474e7a3978b0dc1ca4e6f36d51382 t
1826 +60ca1237c19474e7a3978b0dc1ca4e6f36d51382 t
1827 $ hg log -r 9 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1827 $ hg log -r 9 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1828 f6affe3fbfaa 1f14a2e2d3ec
1828 f6affe3fbfaa 1f14a2e2d3ec
1829 t
1829 t
1830
1830
1831 (removal of ".hgsub" itself)
1831 (removal of ".hgsub" itself)
1832
1832
1833 $ hg diff --nodates -c 8 .hgsubstate
1833 $ hg diff --nodates -c 8 .hgsubstate
1834 diff -r f94576341bcf -r 96615c1dad2d .hgsubstate
1834 diff -r f94576341bcf -r 96615c1dad2d .hgsubstate
1835 --- a/.hgsubstate
1835 --- a/.hgsubstate
1836 +++ /dev/null
1836 +++ /dev/null
1837 @@ -1,2 +0,0 @@
1837 @@ -1,2 +0,0 @@
1838 -e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
1838 -e4ece1bf43360ddc8f6a96432201a37b7cd27ae4 s
1839 -7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4 t
1839 -7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4 t
1840 $ hg log -r 8 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1840 $ hg log -r 8 --template "{p1node|short} {p2node|short}\n{subrepos % '{subrepo}\n'}"
1841 f94576341bcf 000000000000
1841 f94576341bcf 000000000000
1842
1842
1843 Test that '[paths]' is configured correctly at subrepo creation
1843 Test that '[paths]' is configured correctly at subrepo creation
1844
1844
1845 $ cd $TESTTMP/tc
1845 $ cd $TESTTMP/tc
1846 $ cat > .hgsub <<EOF
1846 $ cat > .hgsub <<EOF
1847 > # to clear bogus subrepo path 'bogus=[boguspath'
1847 > # to clear bogus subrepo path 'bogus=[boguspath'
1848 > s = s
1848 > s = s
1849 > t = t
1849 > t = t
1850 > EOF
1850 > EOF
1851 $ hg update -q --clean null
1851 $ hg update -q --clean null
1852 $ rm -rf s t
1852 $ rm -rf s t
1853 $ cat >> .hg/hgrc <<EOF
1853 $ cat >> .hg/hgrc <<EOF
1854 > [paths]
1854 > [paths]
1855 > default-push = /foo/bar
1855 > default-push = /foo/bar
1856 > EOF
1856 > EOF
1857 $ hg update -q
1857 $ hg update -q
1858 $ cat s/.hg/hgrc
1858 $ cat s/.hg/hgrc
1859 [paths]
1859 [paths]
1860 default = $TESTTMP/t/s
1860 default = $TESTTMP/t/s
1861 default-push = /foo/bar/s
1861 default-push = /foo/bar/s
1862 $ cat s/ss/.hg/hgrc
1862 $ cat s/ss/.hg/hgrc
1863 [paths]
1863 [paths]
1864 default = $TESTTMP/t/s/ss
1864 default = $TESTTMP/t/s/ss
1865 default-push = /foo/bar/s/ss
1865 default-push = /foo/bar/s/ss
1866 $ cat t/.hg/hgrc
1866 $ cat t/.hg/hgrc
1867 [paths]
1867 [paths]
1868 default = $TESTTMP/t/t
1868 default = $TESTTMP/t/t
1869 default-push = /foo/bar/t
1869 default-push = /foo/bar/t
1870
1870
1871 $ cd $TESTTMP/t
1871 $ cd $TESTTMP/t
1872 $ hg up -qC 0
1872 $ hg up -qC 0
1873 $ echo 'bar' > bar.txt
1873 $ echo 'bar' > bar.txt
1874 $ hg ci -Am 'branch before subrepo add'
1874 $ hg ci -Am 'branch before subrepo add'
1875 adding bar.txt
1875 adding bar.txt
1876 created new head
1876 created new head
1877 $ hg merge -r "first(subrepo('s'))"
1877 $ hg merge -r "first(subrepo('s'))"
1878 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1878 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
1879 (branch merge, don't forget to commit)
1879 (branch merge, don't forget to commit)
1880 $ hg status -S -X '.hgsub*'
1880 $ hg status -S -X '.hgsub*'
1881 A s/a
1881 A s/a
1882 ? s/b
1882 ? s/b
1883 ? s/c
1883 ? s/c
1884 ? s/f1
1884 ? s/f1
1885 $ hg status -S --rev 'p2()'
1885 $ hg status -S --rev 'p2()'
1886 A bar.txt
1886 A bar.txt
1887 ? s/b
1887 ? s/b
1888 ? s/c
1888 ? s/c
1889 ? s/f1
1889 ? s/f1
1890 $ hg diff -S -X '.hgsub*' --nodates
1890 $ hg diff -S -X '.hgsub*' --nodates
1891 diff -r 000000000000 s/a
1891 diff -r 000000000000 s/a
1892 --- /dev/null
1892 --- /dev/null
1893 +++ b/s/a
1893 +++ b/s/a
1894 @@ -0,0 +1,1 @@
1894 @@ -0,0 +1,1 @@
1895 +a
1895 +a
1896 $ hg diff -S --rev 'p2()' --nodates
1896 $ hg diff -S --rev 'p2()' --nodates
1897 diff -r 7cf8cfea66e4 bar.txt
1897 diff -r 7cf8cfea66e4 bar.txt
1898 --- /dev/null
1898 --- /dev/null
1899 +++ b/bar.txt
1899 +++ b/bar.txt
1900 @@ -0,0 +1,1 @@
1900 @@ -0,0 +1,1 @@
1901 +bar
1901 +bar
1902
1902
1903 $ hg diff -X '.hgsub*' --nodates s
1903 $ hg diff -X '.hgsub*' --nodates s
1904 diff -r 000000000000 s/a
1904 diff -r 000000000000 s/a
1905 --- /dev/null
1905 --- /dev/null
1906 +++ b/s/a
1906 +++ b/s/a
1907 @@ -0,0 +1,1 @@
1907 @@ -0,0 +1,1 @@
1908 +a
1908 +a
1909 $ hg diff -X '.hgsub*' --nodates s/a
1909 $ hg diff -X '.hgsub*' --nodates s/a
1910 diff -r 000000000000 s/a
1910 diff -r 000000000000 s/a
1911 --- /dev/null
1911 --- /dev/null
1912 +++ b/s/a
1912 +++ b/s/a
1913 @@ -0,0 +1,1 @@
1913 @@ -0,0 +1,1 @@
1914 +a
1914 +a
1915
1915
1916 $ cd ..
1916 $ cd ..
1917
1917
1918 test for ssh exploit 2017-07-25
1918 test for ssh exploit 2017-07-25
1919
1919
1920 $ cat >> $HGRCPATH << EOF
1920 $ cat >> $HGRCPATH << EOF
1921 > [ui]
1921 > [ui]
1922 > ssh = sh -c "read l; read l; read l"
1922 > ssh = sh -c "read l; read l; read l"
1923 > EOF
1923 > EOF
1924
1924
1925 $ hg init malicious-proxycommand
1925 $ hg init malicious-proxycommand
1926 $ cd malicious-proxycommand
1926 $ cd malicious-proxycommand
1927 $ echo 's = [hg]ssh://-oProxyCommand=touch${IFS}owned/path' > .hgsub
1927 $ echo 's = [hg]ssh://-oProxyCommand=touch${IFS}owned/path' > .hgsub
1928 $ hg init s
1928 $ hg init s
1929 $ cd s
1929 $ cd s
1930 $ echo init > init
1930 $ echo init > init
1931 $ hg add
1931 $ hg add
1932 adding init
1932 adding init
1933 $ hg commit -m init
1933 $ hg commit -m init
1934 $ cd ..
1934 $ cd ..
1935 $ hg add .hgsub
1935 $ hg add .hgsub
1936 $ hg ci -m 'add subrepo'
1936 $ hg ci -m 'add subrepo'
1937 $ cd ..
1937 $ cd ..
1938 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1938 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1939 updating to branch default
1939 updating to branch default
1940 cloning subrepo s from ssh://-oProxyCommand%3Dtouch%24%7BIFS%7Downed/path
1940 cloning subrepo s from ssh://-oProxyCommand%3Dtouch%24%7BIFS%7Downed/path
1941 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path' (in subrepository "s")
1941 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path' (in subrepository "s")
1942 [255]
1942 [255]
1943
1943
1944 also check that a percent encoded '-' (%2D) doesn't work
1944 also check that a percent encoded '-' (%2D) doesn't work
1945
1945
1946 $ cd malicious-proxycommand
1946 $ cd malicious-proxycommand
1947 $ echo 's = [hg]ssh://%2DoProxyCommand=touch${IFS}owned/path' > .hgsub
1947 $ echo 's = [hg]ssh://%2DoProxyCommand=touch${IFS}owned/path' > .hgsub
1948 $ hg ci -m 'change url to percent encoded'
1948 $ hg ci -m 'change url to percent encoded'
1949 $ cd ..
1949 $ cd ..
1950 $ rm -r malicious-proxycommand-clone
1950 $ rm -r malicious-proxycommand-clone
1951 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1951 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1952 updating to branch default
1952 updating to branch default
1953 cloning subrepo s from ssh://-oProxyCommand%3Dtouch%24%7BIFS%7Downed/path
1953 cloning subrepo s from ssh://-oProxyCommand%3Dtouch%24%7BIFS%7Downed/path
1954 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path' (in subrepository "s")
1954 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch${IFS}owned/path' (in subrepository "s")
1955 [255]
1955 [255]
1956
1956
1957 also check for a pipe
1957 also check for a pipe
1958
1958
1959 $ cd malicious-proxycommand
1959 $ cd malicious-proxycommand
1960 $ echo 's = [hg]ssh://fakehost|touch${IFS}owned/path' > .hgsub
1960 $ echo 's = [hg]ssh://fakehost|touch${IFS}owned/path' > .hgsub
1961 $ hg ci -m 'change url to pipe'
1961 $ hg ci -m 'change url to pipe'
1962 $ cd ..
1962 $ cd ..
1963 $ rm -r malicious-proxycommand-clone
1963 $ rm -r malicious-proxycommand-clone
1964 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1964 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1965 updating to branch default
1965 updating to branch default
1966 cloning subrepo s from ssh://fakehost%7Ctouch%24%7BIFS%7Downed/path
1966 cloning subrepo s from ssh://fakehost%7Ctouch%24%7BIFS%7Downed/path
1967 abort: no suitable response from remote hg
1967 abort: no suitable response from remote hg
1968 [255]
1968 [255]
1969 $ [ ! -f owned ] || echo 'you got owned'
1969 $ [ ! -f owned ] || echo 'you got owned'
1970
1970
1971 also check that a percent encoded '|' (%7C) doesn't work
1971 also check that a percent encoded '|' (%7C) doesn't work
1972
1972
1973 $ cd malicious-proxycommand
1973 $ cd malicious-proxycommand
1974 $ echo 's = [hg]ssh://fakehost%7Ctouch%20owned/path' > .hgsub
1974 $ echo 's = [hg]ssh://fakehost%7Ctouch%20owned/path' > .hgsub
1975 $ hg ci -m 'change url to percent encoded pipe'
1975 $ hg ci -m 'change url to percent encoded pipe'
1976 $ cd ..
1976 $ cd ..
1977 $ rm -r malicious-proxycommand-clone
1977 $ rm -r malicious-proxycommand-clone
1978 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1978 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1979 updating to branch default
1979 updating to branch default
1980 cloning subrepo s from ssh://fakehost%7Ctouch%20owned/path
1980 cloning subrepo s from ssh://fakehost%7Ctouch%20owned/path
1981 abort: no suitable response from remote hg
1981 abort: no suitable response from remote hg
1982 [255]
1982 [255]
1983 $ [ ! -f owned ] || echo 'you got owned'
1983 $ [ ! -f owned ] || echo 'you got owned'
1984
1984
1985 and bad usernames:
1985 and bad usernames:
1986 $ cd malicious-proxycommand
1986 $ cd malicious-proxycommand
1987 $ echo 's = [hg]ssh://-oProxyCommand=touch owned@example.com/path' > .hgsub
1987 $ echo 's = [hg]ssh://-oProxyCommand=touch owned@example.com/path' > .hgsub
1988 $ hg ci -m 'owned username'
1988 $ hg ci -m 'owned username'
1989 $ cd ..
1989 $ cd ..
1990 $ rm -r malicious-proxycommand-clone
1990 $ rm -r malicious-proxycommand-clone
1991 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1991 $ hg clone malicious-proxycommand malicious-proxycommand-clone
1992 updating to branch default
1992 updating to branch default
1993 cloning subrepo s from ssh://-oProxyCommand%3Dtouch%20owned@example.com/path
1993 cloning subrepo s from ssh://-oProxyCommand%3Dtouch%20owned@example.com/path
1994 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch owned@example.com/path' (in subrepository "s")
1994 abort: potentially unsafe url: 'ssh://-oProxyCommand=touch owned@example.com/path' (in subrepository "s")
1995 [255]
1995 [255]
1996
1996
1997 Test convert subrepositories including merge (issue5526):
1997 Test convert subrepositories including merge (issue5526):
1998
1998
1999 $ hg init tconv
1999 $ hg init tconv
2000 $ hg convert --config extensions.convert= -q t/s tconv/s
2000 $ hg convert --config extensions.convert= -q t/s tconv/s
2001 $ hg convert --config extensions.convert= -q t/s/ss tconv/s/ss
2001 $ hg convert --config extensions.convert= -q t/s/ss tconv/s/ss
2002 $ hg convert --config extensions.convert= -q t/t tconv/t
2002 $ hg convert --config extensions.convert= -q t/t tconv/t
2003
2003
2004 convert shouldn't fail because of pseudo filenode:
2004 convert shouldn't fail because of pseudo filenode:
2005
2005
2006 $ hg convert --config extensions.convert= t tconv
2006 $ hg convert --config extensions.convert= t tconv
2007 scanning source...
2007 scanning source...
2008 sorting...
2008 sorting...
2009 converting...
2009 converting...
2010 17 0
2010 17 0
2011 16 1
2011 16 1
2012 15 2
2012 15 2
2013 14 3
2013 14 3
2014 13 4
2014 13 4
2015 12 5
2015 12 5
2016 11 6
2016 11 6
2017 10 7
2017 10 7
2018 9 8
2018 9 8
2019 8 9
2019 8 9
2020 7 10
2020 7 10
2021 6 11
2021 6 11
2022 5 12
2022 5 12
2023 4 13
2023 4 13
2024 3 rm2
2024 3 rm2
2025 2 phasecheck4
2025 2 phasecheck4
2026 1 16
2026 1 16
2027 0 branch before subrepo add
2027 0 branch before subrepo add
2028
2028
2029 converted .hgsubstate should point to valid nodes:
2029 converted .hgsubstate should point to valid nodes:
2030
2030
2031 $ hg up -R tconv 9
2031 $ hg up -R tconv 9
2032 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
2032 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
2033 $ cat tconv/.hgsubstate
2033 $ cat tconv/.hgsubstate
2034 fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
2034 fc627a69481fcbe5f1135069e8a3881c023e4cf5 s
2035 60ca1237c19474e7a3978b0dc1ca4e6f36d51382 t
2035 60ca1237c19474e7a3978b0dc1ca4e6f36d51382 t
@@ -1,245 +1,245 b''
1 $ HGMERGE=true; export HGMERGE
1 $ HGMERGE=true; export HGMERGE
2
2
3 $ hg init r1
3 $ hg init r1
4 $ cd r1
4 $ cd r1
5 $ echo a > a
5 $ echo a > a
6 $ hg addremove
6 $ hg addremove
7 adding a
7 adding a
8 $ hg commit -m "1"
8 $ hg commit -m "1"
9
9
10 $ hg clone . ../r2
10 $ hg clone . ../r2
11 updating to branch default
11 updating to branch default
12 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
12 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 $ cd ../r2
13 $ cd ../r2
14 $ hg up
14 $ hg up
15 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
15 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 $ echo abc > a
16 $ echo abc > a
17 $ hg diff --nodates
17 $ hg diff --nodates
18 diff -r c19d34741b0a a
18 diff -r c19d34741b0a a
19 --- a/a
19 --- a/a
20 +++ b/a
20 +++ b/a
21 @@ -1,1 +1,1 @@
21 @@ -1,1 +1,1 @@
22 -a
22 -a
23 +abc
23 +abc
24
24
25 $ cd ../r1
25 $ cd ../r1
26 $ echo b > b
26 $ echo b > b
27 $ echo a2 > a
27 $ echo a2 > a
28 $ hg addremove
28 $ hg addremove
29 adding b
29 adding b
30 $ hg commit -m "2"
30 $ hg commit -m "2"
31
31
32 $ cd ../r2
32 $ cd ../r2
33 $ hg -q pull ../r1
33 $ hg -q pull ../r1
34 $ hg status
34 $ hg status
35 M a
35 M a
36 $ hg parents
36 $ hg parents
37 changeset: 0:c19d34741b0a
37 changeset: 0:c19d34741b0a
38 user: test
38 user: test
39 date: Thu Jan 01 00:00:00 1970 +0000
39 date: Thu Jan 01 00:00:00 1970 +0000
40 summary: 1
40 summary: 1
41
41
42 $ hg --debug up
42 $ hg --debug up
43 resolving manifests
43 resolving manifests
44 branchmerge: False, force: False, partial: False
44 branchmerge: False, force: False, partial: False
45 ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
45 ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
46 b: remote created -> g
46 b: remote created -> g
47 getting b
47 getting b
48 preserving a for resolve of a
48 preserving a for resolve of a
49 a: versions differ -> m (premerge)
49 a: versions differ -> m (premerge)
50 picked tool 'true' for a (binary False symlink False changedelete False)
50 picked tool 'true' for a (binary False symlink False changedelete False)
51 merging a
51 merging a
52 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
52 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
53 a: versions differ -> m (merge)
53 a: versions differ -> m (merge)
54 picked tool 'true' for a (binary False symlink False changedelete False)
54 picked tool 'true' for a (binary False symlink False changedelete False)
55 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
55 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
56 launching merge tool: true *$TESTTMP/r2/a* * * (glob)
56 launching merge tool: true *$TESTTMP/r2/a* * * (glob)
57 merge tool returned: 0
57 merge tool returned: 0
58 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
58 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
59 $ hg parents
59 $ hg parents
60 changeset: 1:1e71731e6fbb
60 changeset: 1:1e71731e6fbb
61 tag: tip
61 tag: tip
62 user: test
62 user: test
63 date: Thu Jan 01 00:00:00 1970 +0000
63 date: Thu Jan 01 00:00:00 1970 +0000
64 summary: 2
64 summary: 2
65
65
66 $ hg --debug up 0
66 $ hg --debug up 0
67 starting 4 threads for background file closing (?)
67 starting 4 threads for background file closing (?)
68 resolving manifests
68 resolving manifests
69 branchmerge: False, force: False, partial: False
69 branchmerge: False, force: False, partial: False
70 ancestor: 1e71731e6fbb, local: 1e71731e6fbb+, remote: c19d34741b0a
70 ancestor: 1e71731e6fbb, local: 1e71731e6fbb+, remote: c19d34741b0a
71 b: other deleted -> r
71 b: other deleted -> r
72 removing b
72 removing b
73 starting 4 threads for background file closing (?)
73 preserving a for resolve of a
74 preserving a for resolve of a
74 starting 4 threads for background file closing (?)
75 a: versions differ -> m (premerge)
75 a: versions differ -> m (premerge)
76 picked tool 'true' for a (binary False symlink False changedelete False)
76 picked tool 'true' for a (binary False symlink False changedelete False)
77 merging a
77 merging a
78 my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
78 my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
79 a: versions differ -> m (merge)
79 a: versions differ -> m (merge)
80 picked tool 'true' for a (binary False symlink False changedelete False)
80 picked tool 'true' for a (binary False symlink False changedelete False)
81 my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
81 my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
82 launching merge tool: true *$TESTTMP/r2/a* * * (glob)
82 launching merge tool: true *$TESTTMP/r2/a* * * (glob)
83 merge tool returned: 0
83 merge tool returned: 0
84 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
84 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
85 $ hg parents
85 $ hg parents
86 changeset: 0:c19d34741b0a
86 changeset: 0:c19d34741b0a
87 user: test
87 user: test
88 date: Thu Jan 01 00:00:00 1970 +0000
88 date: Thu Jan 01 00:00:00 1970 +0000
89 summary: 1
89 summary: 1
90
90
91 $ hg --debug up
91 $ hg --debug up
92 resolving manifests
92 resolving manifests
93 branchmerge: False, force: False, partial: False
93 branchmerge: False, force: False, partial: False
94 ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
94 ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
95 b: remote created -> g
95 b: remote created -> g
96 getting b
96 getting b
97 preserving a for resolve of a
97 preserving a for resolve of a
98 a: versions differ -> m (premerge)
98 a: versions differ -> m (premerge)
99 picked tool 'true' for a (binary False symlink False changedelete False)
99 picked tool 'true' for a (binary False symlink False changedelete False)
100 merging a
100 merging a
101 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
101 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
102 a: versions differ -> m (merge)
102 a: versions differ -> m (merge)
103 picked tool 'true' for a (binary False symlink False changedelete False)
103 picked tool 'true' for a (binary False symlink False changedelete False)
104 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
104 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
105 launching merge tool: true *$TESTTMP/r2/a* * * (glob)
105 launching merge tool: true *$TESTTMP/r2/a* * * (glob)
106 merge tool returned: 0
106 merge tool returned: 0
107 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
107 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
108 $ hg parents
108 $ hg parents
109 changeset: 1:1e71731e6fbb
109 changeset: 1:1e71731e6fbb
110 tag: tip
110 tag: tip
111 user: test
111 user: test
112 date: Thu Jan 01 00:00:00 1970 +0000
112 date: Thu Jan 01 00:00:00 1970 +0000
113 summary: 2
113 summary: 2
114
114
115 $ hg -v history
115 $ hg -v history
116 changeset: 1:1e71731e6fbb
116 changeset: 1:1e71731e6fbb
117 tag: tip
117 tag: tip
118 user: test
118 user: test
119 date: Thu Jan 01 00:00:00 1970 +0000
119 date: Thu Jan 01 00:00:00 1970 +0000
120 files: a b
120 files: a b
121 description:
121 description:
122 2
122 2
123
123
124
124
125 changeset: 0:c19d34741b0a
125 changeset: 0:c19d34741b0a
126 user: test
126 user: test
127 date: Thu Jan 01 00:00:00 1970 +0000
127 date: Thu Jan 01 00:00:00 1970 +0000
128 files: a
128 files: a
129 description:
129 description:
130 1
130 1
131
131
132
132
133 $ hg diff --nodates
133 $ hg diff --nodates
134 diff -r 1e71731e6fbb a
134 diff -r 1e71731e6fbb a
135 --- a/a
135 --- a/a
136 +++ b/a
136 +++ b/a
137 @@ -1,1 +1,1 @@
137 @@ -1,1 +1,1 @@
138 -a2
138 -a2
139 +abc
139 +abc
140
140
141
141
142 create a second head
142 create a second head
143
143
144 $ cd ../r1
144 $ cd ../r1
145 $ hg up 0
145 $ hg up 0
146 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
146 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
147 $ echo b2 > b
147 $ echo b2 > b
148 $ echo a3 > a
148 $ echo a3 > a
149 $ hg addremove
149 $ hg addremove
150 adding b
150 adding b
151 $ hg commit -m "3"
151 $ hg commit -m "3"
152 created new head
152 created new head
153
153
154 $ cd ../r2
154 $ cd ../r2
155 $ hg -q pull ../r1
155 $ hg -q pull ../r1
156 $ hg status
156 $ hg status
157 M a
157 M a
158 $ hg parents
158 $ hg parents
159 changeset: 1:1e71731e6fbb
159 changeset: 1:1e71731e6fbb
160 user: test
160 user: test
161 date: Thu Jan 01 00:00:00 1970 +0000
161 date: Thu Jan 01 00:00:00 1970 +0000
162 summary: 2
162 summary: 2
163
163
164 $ hg --debug up
164 $ hg --debug up
165 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
165 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
166 updated to "1e71731e6fbb: 2"
166 updated to "1e71731e6fbb: 2"
167 1 other heads for branch "default"
167 1 other heads for branch "default"
168
168
169 test conflicting untracked files
169 test conflicting untracked files
170
170
171 $ hg up -qC 0
171 $ hg up -qC 0
172 $ echo untracked > b
172 $ echo untracked > b
173 $ hg st
173 $ hg st
174 ? b
174 ? b
175 $ hg up 1
175 $ hg up 1
176 b: untracked file differs
176 b: untracked file differs
177 abort: untracked files in working directory differ from files in requested revision
177 abort: untracked files in working directory differ from files in requested revision
178 [255]
178 [255]
179 $ rm b
179 $ rm b
180
180
181 test conflicting untracked ignored file
181 test conflicting untracked ignored file
182
182
183 $ hg up -qC 0
183 $ hg up -qC 0
184 $ echo ignored > .hgignore
184 $ echo ignored > .hgignore
185 $ hg add .hgignore
185 $ hg add .hgignore
186 $ hg ci -m 'add .hgignore'
186 $ hg ci -m 'add .hgignore'
187 created new head
187 created new head
188 $ echo ignored > ignored
188 $ echo ignored > ignored
189 $ hg add ignored
189 $ hg add ignored
190 $ hg ci -m 'add ignored file'
190 $ hg ci -m 'add ignored file'
191
191
192 $ hg up -q 'desc("add .hgignore")'
192 $ hg up -q 'desc("add .hgignore")'
193 $ echo untracked > ignored
193 $ echo untracked > ignored
194 $ hg st
194 $ hg st
195 $ hg up 'desc("add ignored file")'
195 $ hg up 'desc("add ignored file")'
196 ignored: untracked file differs
196 ignored: untracked file differs
197 abort: untracked files in working directory differ from files in requested revision
197 abort: untracked files in working directory differ from files in requested revision
198 [255]
198 [255]
199
199
200 test a local add
200 test a local add
201
201
202 $ cd ..
202 $ cd ..
203 $ hg init a
203 $ hg init a
204 $ hg init b
204 $ hg init b
205 $ echo a > a/a
205 $ echo a > a/a
206 $ echo a > b/a
206 $ echo a > b/a
207 $ hg --cwd a commit -A -m a
207 $ hg --cwd a commit -A -m a
208 adding a
208 adding a
209 $ cd b
209 $ cd b
210 $ hg add a
210 $ hg add a
211 $ hg pull -u ../a
211 $ hg pull -u ../a
212 pulling from ../a
212 pulling from ../a
213 requesting all changes
213 requesting all changes
214 adding changesets
214 adding changesets
215 adding manifests
215 adding manifests
216 adding file changes
216 adding file changes
217 added 1 changesets with 1 changes to 1 files
217 added 1 changesets with 1 changes to 1 files
218 new changesets cb9a9f314b8b
218 new changesets cb9a9f314b8b
219 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
219 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
220 $ hg st
220 $ hg st
221
221
222 test updating backwards through a rename
222 test updating backwards through a rename
223
223
224 $ hg mv a b
224 $ hg mv a b
225 $ hg ci -m b
225 $ hg ci -m b
226 $ echo b > b
226 $ echo b > b
227 $ hg up -q 0
227 $ hg up -q 0
228 $ hg st
228 $ hg st
229 M a
229 M a
230 $ hg diff --nodates
230 $ hg diff --nodates
231 diff -r cb9a9f314b8b a
231 diff -r cb9a9f314b8b a
232 --- a/a
232 --- a/a
233 +++ b/a
233 +++ b/a
234 @@ -1,1 +1,1 @@
234 @@ -1,1 +1,1 @@
235 -a
235 -a
236 +b
236 +b
237
237
238 test for superfluous filemerge of clean files renamed in the past
238 test for superfluous filemerge of clean files renamed in the past
239
239
240 $ hg up -qC tip
240 $ hg up -qC tip
241 $ echo c > c
241 $ echo c > c
242 $ hg add c
242 $ hg add c
243 $ hg up -qt:fail 0
243 $ hg up -qt:fail 0
244
244
245 $ cd ..
245 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now