##// END OF EJS Templates
tests: cleanup exit code handling in unified tests
Matt Mackall -
r12365:22f3353b default
parent child Browse files
Show More
@@ -1,99 +1,99 b''
1 $ hg init a
1 $ hg init a
2 $ cd a
2 $ cd a
3 $ echo a > a
3 $ echo a > a
4 $ hg add -n
4 $ hg add -n
5 adding a
5 adding a
6 $ hg st
6 $ hg st
7 ? a
7 ? a
8 $ hg add
8 $ hg add
9 adding a
9 adding a
10 $ hg st
10 $ hg st
11 A a
11 A a
12 $ hg forget a
12 $ hg forget a
13 $ hg add
13 $ hg add
14 adding a
14 adding a
15 $ hg st
15 $ hg st
16 A a
16 A a
17
17
18 $ echo b > b
18 $ echo b > b
19 $ hg add -n b
19 $ hg add -n b
20 $ hg st
20 $ hg st
21 A a
21 A a
22 ? b
22 ? b
23 $ hg add b || echo "failed to add b"
23 $ hg add b
24 $ hg st
24 $ hg st
25 A a
25 A a
26 A b
26 A b
27
27
28 should fail
28 should fail
29
29
30 $ hg add b
30 $ hg add b
31 b already tracked!
31 b already tracked!
32 $ hg st
32 $ hg st
33 A a
33 A a
34 A b
34 A b
35
35
36 $ hg ci -m 0 --traceback
36 $ hg ci -m 0 --traceback
37
37
38 should fail
38 should fail
39
39
40 $ hg add a
40 $ hg add a
41 a already tracked!
41 a already tracked!
42
42
43 $ echo aa > a
43 $ echo aa > a
44 $ hg ci -m 1
44 $ hg ci -m 1
45 $ hg up 0
45 $ hg up 0
46 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
47 $ echo aaa > a
47 $ echo aaa > a
48 $ hg ci -m 2
48 $ hg ci -m 2
49 created new head
49 created new head
50
50
51 $ hg merge
51 $ hg merge
52 merging a
52 merging a
53 warning: conflicts during merge.
53 warning: conflicts during merge.
54 merging a failed!
54 merging a failed!
55 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
55 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
56 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
56 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
57 [1]
57 [1]
58 $ hg st
58 $ hg st
59 M a
59 M a
60 ? a.orig
60 ? a.orig
61
61
62 should fail
62 should fail
63
63
64 $ hg add a
64 $ hg add a
65 a already tracked!
65 a already tracked!
66 $ hg st
66 $ hg st
67 M a
67 M a
68 ? a.orig
68 ? a.orig
69 $ hg resolve -m a
69 $ hg resolve -m a
70 $ hg ci -m merge
70 $ hg ci -m merge
71
71
72 issue683
72 issue683
73
73
74 $ hg forget a
74 $ hg forget a
75 $ hg add a
75 $ hg add a
76 $ hg st
76 $ hg st
77 ? a.orig
77 ? a.orig
78 $ hg rm a
78 $ hg rm a
79 $ hg st
79 $ hg st
80 R a
80 R a
81 ? a.orig
81 ? a.orig
82 $ echo a > a
82 $ echo a > a
83 $ hg add a
83 $ hg add a
84 $ hg st
84 $ hg st
85 M a
85 M a
86 ? a.orig
86 ? a.orig
87
87
88 $ hg add c && echo "unexpected addition of missing file"
88 $ hg add c && echo "unexpected addition of missing file"
89 c: No such file or directory
89 c: No such file or directory
90 [1]
90 [1]
91 $ echo c > c
91 $ echo c > c
92 $ hg add d c && echo "unexpected addition of missing file"
92 $ hg add d c && echo "unexpected addition of missing file"
93 d: No such file or directory
93 d: No such file or directory
94 [1]
94 [1]
95 $ hg st
95 $ hg st
96 M a
96 M a
97 A c
97 A c
98 ? a.orig
98 ? a.orig
99
99
@@ -1,36 +1,30 b''
1 $ hg clone http://localhost:$HGPORT/ copy
1 $ hg clone http://localhost:$HGPORT/ copy
2 abort: error: Connection refused
2 abort: error: Connection refused
3 [255]
3 [255]
4
4
5 $ echo $?
6 0
7
8 $ test -d copy || echo copy: No such file or directory
5 $ test -d copy || echo copy: No such file or directory
9 copy: No such file or directory
6 copy: No such file or directory
10
7
11 $ cat > dumb.py <<EOF
8 $ cat > dumb.py <<EOF
12 > import BaseHTTPServer, SimpleHTTPServer, os, signal
9 > import BaseHTTPServer, SimpleHTTPServer, os, signal
13 > def run(server_class=BaseHTTPServer.HTTPServer,
10 > def run(server_class=BaseHTTPServer.HTTPServer,
14 > handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler):
11 > handler_class=SimpleHTTPServer.SimpleHTTPRequestHandler):
15 > server_address = ('localhost', int(os.environ['HGPORT']))
12 > server_address = ('localhost', int(os.environ['HGPORT']))
16 > httpd = server_class(server_address, handler_class)
13 > httpd = server_class(server_address, handler_class)
17 > httpd.serve_forever()
14 > httpd.serve_forever()
18 > signal.signal(signal.SIGTERM, lambda x: sys.exit(0))
15 > signal.signal(signal.SIGTERM, lambda x: sys.exit(0))
19 > run()
16 > run()
20 > EOF
17 > EOF
21
18
22 $ python dumb.py 2>/dev/null &
19 $ python dumb.py 2>/dev/null &
23 $ echo $! >> $DAEMON_PIDS
20 $ echo $! >> $DAEMON_PIDS
24
21
25 give the server some time to start running
22 give the server some time to start running
26
23
27 $ sleep 1
24 $ sleep 1
28
25
29 $ hg clone http://localhost:$HGPORT/foo copy2 2>&1
26 $ hg clone http://localhost:$HGPORT/foo copy2 2>&1
30 abort: HTTP Error 404: .*
27 abort: HTTP Error 404: .*
31 [255]
28 [255]
32
29
33 $ echo $?
34 0
35
36 $ kill $!
30 $ kill $!
@@ -1,379 +1,367 b''
1 $ heads()
1 $ heads()
2 > {
2 > {
3 > hg heads --template '{rev}: {desc|firstline|strip} ({branches})\n' "$@"
3 > hg heads --template '{rev}: {desc|firstline|strip} ({branches})\n' "$@"
4 > }
4 > }
5
5
6 $ hg init a
6 $ hg init a
7 $ cd a
7 $ cd a
8 $ echo 'root' >root
8 $ echo 'root' >root
9 $ hg add root
9 $ hg add root
10 $ hg commit -m "Adding root node"
10 $ hg commit -m "Adding root node"
11 $ heads
11 $ heads
12 0: Adding root node ()
12 0: Adding root node ()
13 -------
13 -------
14 $ heads .
14 $ heads .
15 0: Adding root node ()
15 0: Adding root node ()
16
16
17 =======
17 =======
18
18
19 $ echo 'a' >a
19 $ echo 'a' >a
20 $ hg add a
20 $ hg add a
21 $ hg branch a
21 $ hg branch a
22 marked working directory as branch a
22 marked working directory as branch a
23 $ hg commit -m "Adding a branch"
23 $ hg commit -m "Adding a branch"
24 $ heads
24 $ heads
25 1: Adding a branch (a)
25 1: Adding a branch (a)
26 0: Adding root node ()
26 0: Adding root node ()
27 -------
27 -------
28 $ heads .
28 $ heads .
29 1: Adding a branch (a)
29 1: Adding a branch (a)
30
30
31 =======
31 =======
32
32
33 $ hg update -C 0
33 $ hg update -C 0
34 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
34 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
35 $ echo 'b' >b
35 $ echo 'b' >b
36 $ hg add b
36 $ hg add b
37 $ hg branch b
37 $ hg branch b
38 marked working directory as branch b
38 marked working directory as branch b
39 $ hg commit -m "Adding b branch"
39 $ hg commit -m "Adding b branch"
40 $ heads
40 $ heads
41 2: Adding b branch (b)
41 2: Adding b branch (b)
42 1: Adding a branch (a)
42 1: Adding a branch (a)
43 0: Adding root node ()
43 0: Adding root node ()
44 -------
44 -------
45 $ heads .
45 $ heads .
46 2: Adding b branch (b)
46 2: Adding b branch (b)
47
47
48 =======
48 =======
49
49
50 $ echo 'bh1' >bh1
50 $ echo 'bh1' >bh1
51 $ hg add bh1
51 $ hg add bh1
52 $ hg commit -m "Adding b branch head 1"
52 $ hg commit -m "Adding b branch head 1"
53 $ heads
53 $ heads
54 3: Adding b branch head 1 (b)
54 3: Adding b branch head 1 (b)
55 1: Adding a branch (a)
55 1: Adding a branch (a)
56 0: Adding root node ()
56 0: Adding root node ()
57 -------
57 -------
58 $ heads .
58 $ heads .
59 3: Adding b branch head 1 (b)
59 3: Adding b branch head 1 (b)
60
60
61 =======
61 =======
62
62
63 $ hg update -C 2
63 $ hg update -C 2
64 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
64 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
65 $ echo 'bh2' >bh2
65 $ echo 'bh2' >bh2
66 $ hg add bh2
66 $ hg add bh2
67 $ hg commit -m "Adding b branch head 2"
67 $ hg commit -m "Adding b branch head 2"
68 created new head
68 created new head
69 $ heads
69 $ heads
70 4: Adding b branch head 2 (b)
70 4: Adding b branch head 2 (b)
71 3: Adding b branch head 1 (b)
71 3: Adding b branch head 1 (b)
72 1: Adding a branch (a)
72 1: Adding a branch (a)
73 0: Adding root node ()
73 0: Adding root node ()
74 $ heads .
74 $ heads .
75 4: Adding b branch head 2 (b)
75 4: Adding b branch head 2 (b)
76 3: Adding b branch head 1 (b)
76 3: Adding b branch head 1 (b)
77
77
78 =======
78 =======
79
79
80 $ hg update -C 2
80 $ hg update -C 2
81 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
81 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
82 $ echo 'bh3' >bh3
82 $ echo 'bh3' >bh3
83 $ hg add bh3
83 $ hg add bh3
84 $ hg commit -m "Adding b branch head 3"
84 $ hg commit -m "Adding b branch head 3"
85 created new head
85 created new head
86 $ heads
86 $ heads
87 5: Adding b branch head 3 (b)
87 5: Adding b branch head 3 (b)
88 4: Adding b branch head 2 (b)
88 4: Adding b branch head 2 (b)
89 3: Adding b branch head 1 (b)
89 3: Adding b branch head 1 (b)
90 1: Adding a branch (a)
90 1: Adding a branch (a)
91 0: Adding root node ()
91 0: Adding root node ()
92 -------
92 -------
93 $ heads .
93 $ heads .
94 5: Adding b branch head 3 (b)
94 5: Adding b branch head 3 (b)
95 4: Adding b branch head 2 (b)
95 4: Adding b branch head 2 (b)
96 3: Adding b branch head 1 (b)
96 3: Adding b branch head 1 (b)
97
97
98 =======
98 =======
99
99
100 $ hg merge 4
100 $ hg merge 4
101 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
101 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
102 (branch merge, don't forget to commit)
102 (branch merge, don't forget to commit)
103 $ hg commit -m "Merging b branch head 2 and b branch head 3"
103 $ hg commit -m "Merging b branch head 2 and b branch head 3"
104 $ heads
104 $ heads
105 6: Merging b branch head 2 and b branch head 3 (b)
105 6: Merging b branch head 2 and b branch head 3 (b)
106 3: Adding b branch head 1 (b)
106 3: Adding b branch head 1 (b)
107 1: Adding a branch (a)
107 1: Adding a branch (a)
108 0: Adding root node ()
108 0: Adding root node ()
109 -------
109 -------
110 $ heads .
110 $ heads .
111 6: Merging b branch head 2 and b branch head 3 (b)
111 6: Merging b branch head 2 and b branch head 3 (b)
112 3: Adding b branch head 1 (b)
112 3: Adding b branch head 1 (b)
113
113
114 =======
114 =======
115
115
116 $ echo 'c' >c
116 $ echo 'c' >c
117 $ hg add c
117 $ hg add c
118 $ hg branch c
118 $ hg branch c
119 marked working directory as branch c
119 marked working directory as branch c
120 $ hg commit -m "Adding c branch"
120 $ hg commit -m "Adding c branch"
121 $ heads
121 $ heads
122 7: Adding c branch (c)
122 7: Adding c branch (c)
123 6: Merging b branch head 2 and b branch head 3 (b)
123 6: Merging b branch head 2 and b branch head 3 (b)
124 3: Adding b branch head 1 (b)
124 3: Adding b branch head 1 (b)
125 1: Adding a branch (a)
125 1: Adding a branch (a)
126 0: Adding root node ()
126 0: Adding root node ()
127 -------
127 -------
128 $ heads .
128 $ heads .
129 7: Adding c branch (c)
129 7: Adding c branch (c)
130
130
131 =======
131 =======
132
132
133 $ heads -r 3 .
133 $ heads -r 3 .
134 no open branch heads found on branches c (started at 3)
134 no open branch heads found on branches c (started at 3)
135 [1]
135 [1]
136 $ echo $?
137 0
138 $ heads -r 2 .
136 $ heads -r 2 .
139 7: Adding c branch (c)
137 7: Adding c branch (c)
140 $ echo $?
141 0
142 -------
138 -------
143 $ hg update -C 4
139 $ hg update -C 4
144 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
140 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
145 $ echo $?
146 0
147 -------
141 -------
148 $ heads -r 3 .
142 $ heads -r 3 .
149 3: Adding b branch head 1 (b)
143 3: Adding b branch head 1 (b)
150 $ echo $?
151 0
152 -------
144 -------
153 $ heads -r 2 .
145 $ heads -r 2 .
154 6: Merging b branch head 2 and b branch head 3 (b)
146 6: Merging b branch head 2 and b branch head 3 (b)
155 3: Adding b branch head 1 (b)
147 3: Adding b branch head 1 (b)
156 $ echo $?
157 0
158 -------
148 -------
159 $ heads -r 7 .
149 $ heads -r 7 .
160 no open branch heads found on branches b (started at 7)
150 no open branch heads found on branches b (started at 7)
161 [1]
151 [1]
162 $ echo $?
163 0
164
152
165 =======
153 =======
166
154
167 $ for i in 0 1 2 3 4 5 6 7; do
155 $ for i in 0 1 2 3 4 5 6 7; do
168 > hg update -C "$i"
156 > hg update -C "$i"
169 > heads
157 > heads
170 > echo '-------'
158 > echo '-------'
171 > heads .
159 > heads .
172 > echo '-------'
160 > echo '-------'
173 > done
161 > done
174 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
162 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
175 7: Adding c branch (c)
163 7: Adding c branch (c)
176 6: Merging b branch head 2 and b branch head 3 (b)
164 6: Merging b branch head 2 and b branch head 3 (b)
177 3: Adding b branch head 1 (b)
165 3: Adding b branch head 1 (b)
178 1: Adding a branch (a)
166 1: Adding a branch (a)
179 0: Adding root node ()
167 0: Adding root node ()
180 -------
168 -------
181 0: Adding root node ()
169 0: Adding root node ()
182 -------
170 -------
183 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
171 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
184 7: Adding c branch (c)
172 7: Adding c branch (c)
185 6: Merging b branch head 2 and b branch head 3 (b)
173 6: Merging b branch head 2 and b branch head 3 (b)
186 3: Adding b branch head 1 (b)
174 3: Adding b branch head 1 (b)
187 1: Adding a branch (a)
175 1: Adding a branch (a)
188 0: Adding root node ()
176 0: Adding root node ()
189 -------
177 -------
190 1: Adding a branch (a)
178 1: Adding a branch (a)
191 -------
179 -------
192 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
180 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
193 7: Adding c branch (c)
181 7: Adding c branch (c)
194 6: Merging b branch head 2 and b branch head 3 (b)
182 6: Merging b branch head 2 and b branch head 3 (b)
195 3: Adding b branch head 1 (b)
183 3: Adding b branch head 1 (b)
196 1: Adding a branch (a)
184 1: Adding a branch (a)
197 0: Adding root node ()
185 0: Adding root node ()
198 -------
186 -------
199 6: Merging b branch head 2 and b branch head 3 (b)
187 6: Merging b branch head 2 and b branch head 3 (b)
200 3: Adding b branch head 1 (b)
188 3: Adding b branch head 1 (b)
201 -------
189 -------
202 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
190 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
203 7: Adding c branch (c)
191 7: Adding c branch (c)
204 6: Merging b branch head 2 and b branch head 3 (b)
192 6: Merging b branch head 2 and b branch head 3 (b)
205 3: Adding b branch head 1 (b)
193 3: Adding b branch head 1 (b)
206 1: Adding a branch (a)
194 1: Adding a branch (a)
207 0: Adding root node ()
195 0: Adding root node ()
208 -------
196 -------
209 6: Merging b branch head 2 and b branch head 3 (b)
197 6: Merging b branch head 2 and b branch head 3 (b)
210 3: Adding b branch head 1 (b)
198 3: Adding b branch head 1 (b)
211 -------
199 -------
212 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
200 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
213 7: Adding c branch (c)
201 7: Adding c branch (c)
214 6: Merging b branch head 2 and b branch head 3 (b)
202 6: Merging b branch head 2 and b branch head 3 (b)
215 3: Adding b branch head 1 (b)
203 3: Adding b branch head 1 (b)
216 1: Adding a branch (a)
204 1: Adding a branch (a)
217 0: Adding root node ()
205 0: Adding root node ()
218 -------
206 -------
219 6: Merging b branch head 2 and b branch head 3 (b)
207 6: Merging b branch head 2 and b branch head 3 (b)
220 3: Adding b branch head 1 (b)
208 3: Adding b branch head 1 (b)
221 -------
209 -------
222 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
210 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
223 7: Adding c branch (c)
211 7: Adding c branch (c)
224 6: Merging b branch head 2 and b branch head 3 (b)
212 6: Merging b branch head 2 and b branch head 3 (b)
225 3: Adding b branch head 1 (b)
213 3: Adding b branch head 1 (b)
226 1: Adding a branch (a)
214 1: Adding a branch (a)
227 0: Adding root node ()
215 0: Adding root node ()
228 -------
216 -------
229 6: Merging b branch head 2 and b branch head 3 (b)
217 6: Merging b branch head 2 and b branch head 3 (b)
230 3: Adding b branch head 1 (b)
218 3: Adding b branch head 1 (b)
231 -------
219 -------
232 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
220 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
233 7: Adding c branch (c)
221 7: Adding c branch (c)
234 6: Merging b branch head 2 and b branch head 3 (b)
222 6: Merging b branch head 2 and b branch head 3 (b)
235 3: Adding b branch head 1 (b)
223 3: Adding b branch head 1 (b)
236 1: Adding a branch (a)
224 1: Adding a branch (a)
237 0: Adding root node ()
225 0: Adding root node ()
238 -------
226 -------
239 6: Merging b branch head 2 and b branch head 3 (b)
227 6: Merging b branch head 2 and b branch head 3 (b)
240 3: Adding b branch head 1 (b)
228 3: Adding b branch head 1 (b)
241 -------
229 -------
242 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
230 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
243 7: Adding c branch (c)
231 7: Adding c branch (c)
244 6: Merging b branch head 2 and b branch head 3 (b)
232 6: Merging b branch head 2 and b branch head 3 (b)
245 3: Adding b branch head 1 (b)
233 3: Adding b branch head 1 (b)
246 1: Adding a branch (a)
234 1: Adding a branch (a)
247 0: Adding root node ()
235 0: Adding root node ()
248 -------
236 -------
249 7: Adding c branch (c)
237 7: Adding c branch (c)
250 -------
238 -------
251
239
252 =======
240 =======
253
241
254 $ for i in a b c z; do
242 $ for i in a b c z; do
255 > heads "$i"
243 > heads "$i"
256 > echo '-------'
244 > echo '-------'
257 > done
245 > done
258 1: Adding a branch (a)
246 1: Adding a branch (a)
259 -------
247 -------
260 6: Merging b branch head 2 and b branch head 3 (b)
248 6: Merging b branch head 2 and b branch head 3 (b)
261 3: Adding b branch head 1 (b)
249 3: Adding b branch head 1 (b)
262 -------
250 -------
263 7: Adding c branch (c)
251 7: Adding c branch (c)
264 -------
252 -------
265 abort: unknown revision 'z'!
253 abort: unknown revision 'z'!
266 -------
254 -------
267
255
268 =======
256 =======
269
257
270 $ heads 0 1 2 3 4 5 6 7
258 $ heads 0 1 2 3 4 5 6 7
271 7: Adding c branch (c)
259 7: Adding c branch (c)
272 6: Merging b branch head 2 and b branch head 3 (b)
260 6: Merging b branch head 2 and b branch head 3 (b)
273 3: Adding b branch head 1 (b)
261 3: Adding b branch head 1 (b)
274 1: Adding a branch (a)
262 1: Adding a branch (a)
275 0: Adding root node ()
263 0: Adding root node ()
276
264
277 Topological heads:
265 Topological heads:
278
266
279 $ heads -t
267 $ heads -t
280 7: Adding c branch (c)
268 7: Adding c branch (c)
281 3: Adding b branch head 1 (b)
269 3: Adding b branch head 1 (b)
282 1: Adding a branch (a)
270 1: Adding a branch (a)
283
271
284 $ cd ..
272 $ cd ..
285 ______________
273 ______________
286
274
287 "created new head" message tests
275 "created new head" message tests
288
276
289 $ hg init newheadmsg
277 $ hg init newheadmsg
290 $ cd newheadmsg
278 $ cd newheadmsg
291
279
292 Init: no msg
280 Init: no msg
293
281
294 $ echo 1 > a
282 $ echo 1 > a
295 $ hg ci -Am "a0: Initial root"
283 $ hg ci -Am "a0: Initial root"
296 adding a
284 adding a
297 $ echo 2 >> a
285 $ echo 2 >> a
298 $ hg ci -m "a1 (HN)"
286 $ hg ci -m "a1 (HN)"
299
287
300 $ hg branch b
288 $ hg branch b
301 marked working directory as branch b
289 marked working directory as branch b
302 $ echo 1 > b
290 $ echo 1 > b
303 $ hg ci -Am "b2: Initial root for branch b"
291 $ hg ci -Am "b2: Initial root for branch b"
304 adding b
292 adding b
305 $ echo 2 >> b
293 $ echo 2 >> b
306 $ hg ci -m "b3 (HN)"
294 $ hg ci -m "b3 (HN)"
307
295
308 Case NN: msg
296 Case NN: msg
309
297
310 $ hg up -q null
298 $ hg up -q null
311 $ hg branch -f b
299 $ hg branch -f b
312 marked working directory as branch b
300 marked working directory as branch b
313 $ echo 1 > bb
301 $ echo 1 > bb
314 $ hg ci -Am "b4 (NN): new topo root for branch b"
302 $ hg ci -Am "b4 (NN): new topo root for branch b"
315 adding bb
303 adding bb
316 created new head
304 created new head
317
305
318 Case HN: no msg
306 Case HN: no msg
319
307
320 $ echo 2 >> bb
308 $ echo 2 >> bb
321 $ hg ci -m "b5 (HN)"
309 $ hg ci -m "b5 (HN)"
322
310
323 Case BN: msg
311 Case BN: msg
324
312
325 $ hg branch -f default
313 $ hg branch -f default
326 marked working directory as branch default
314 marked working directory as branch default
327 $ echo 1 > aa
315 $ echo 1 > aa
328 $ hg ci -Am "a6 (BN): new branch root"
316 $ hg ci -Am "a6 (BN): new branch root"
329 adding aa
317 adding aa
330 created new head
318 created new head
331
319
332 Case CN: msg
320 Case CN: msg
333
321
334 $ hg up -q 4
322 $ hg up -q 4
335 $ echo 3 >> bbb
323 $ echo 3 >> bbb
336 $ hg ci -Am "b7 (CN): regular new head"
324 $ hg ci -Am "b7 (CN): regular new head"
337 adding bbb
325 adding bbb
338 created new head
326 created new head
339
327
340 Case BB: msg
328 Case BB: msg
341
329
342 $ hg up -q 4
330 $ hg up -q 4
343 $ hg merge -q 3
331 $ hg merge -q 3
344 $ hg branch -f default
332 $ hg branch -f default
345 marked working directory as branch default
333 marked working directory as branch default
346 $ hg ci -m "a8 (BB): weird new branch root"
334 $ hg ci -m "a8 (BB): weird new branch root"
347 created new head
335 created new head
348
336
349 Case CB: msg
337 Case CB: msg
350
338
351 $ hg up -q 4
339 $ hg up -q 4
352 $ hg merge -q 1
340 $ hg merge -q 1
353 $ hg ci -m "b9 (CB): new head from branch merge"
341 $ hg ci -m "b9 (CB): new head from branch merge"
354 created new head
342 created new head
355
343
356 Case HB: no msg
344 Case HB: no msg
357
345
358 $ hg up -q 7
346 $ hg up -q 7
359 $ hg merge -q 6
347 $ hg merge -q 6
360 $ hg ci -m "b10 (HB): continuing head from branch merge"
348 $ hg ci -m "b10 (HB): continuing head from branch merge"
361
349
362 Case CC: msg
350 Case CC: msg
363
351
364 $ hg up -q 4
352 $ hg up -q 4
365 $ hg merge -q 2
353 $ hg merge -q 2
366 $ hg ci -m "b11 (CC): new head from merge"
354 $ hg ci -m "b11 (CC): new head from merge"
367 created new head
355 created new head
368
356
369 Case CH: no msg
357 Case CH: no msg
370
358
371 $ hg up -q 2
359 $ hg up -q 2
372 $ hg merge -q 10
360 $ hg merge -q 10
373 $ hg ci -m "b12 (CH): continuing head from merge"
361 $ hg ci -m "b12 (CH): continuing head from merge"
374
362
375 Case HH: no msg
363 Case HH: no msg
376
364
377 $ hg merge -q 3
365 $ hg merge -q 3
378 $ hg ci -m "b12 (HH): merging two heads"
366 $ hg ci -m "b12 (HH): merging two heads"
379
367
@@ -1,419 +1,419 b''
1 $ set -e
2 $ hg init
1 $ hg init
3
2
4
3
5 committing changes
4 committing changes
6
5
7 $ count=0
6 $ count=0
8 $ echo > a
7 $ echo > a
9 $ while test $count -lt 32 ; do
8 $ while test $count -lt 32 ; do
10 > echo 'a' >> a
9 > echo 'a' >> a
11 > test $count -eq 0 && hg add
10 > test $count -eq 0 && hg add
12 > hg ci -m "msg $count" -d "$count 0"
11 > hg ci -m "msg $count" -d "$count 0"
13 > count=`expr $count + 1`
12 > count=`expr $count + 1`
14 > done
13 > done
15 adding a
14 adding a
16
15
17
16
18 $ hg log
17 $ hg log
19 changeset: 31:58c80a7c8a40
18 changeset: 31:58c80a7c8a40
20 tag: tip
19 tag: tip
21 user: test
20 user: test
22 date: Thu Jan 01 00:00:31 1970 +0000
21 date: Thu Jan 01 00:00:31 1970 +0000
23 summary: msg 31
22 summary: msg 31
24
23
25 changeset: 30:ed2d2f24b11c
24 changeset: 30:ed2d2f24b11c
26 user: test
25 user: test
27 date: Thu Jan 01 00:00:30 1970 +0000
26 date: Thu Jan 01 00:00:30 1970 +0000
28 summary: msg 30
27 summary: msg 30
29
28
30 changeset: 29:b5bd63375ab9
29 changeset: 29:b5bd63375ab9
31 user: test
30 user: test
32 date: Thu Jan 01 00:00:29 1970 +0000
31 date: Thu Jan 01 00:00:29 1970 +0000
33 summary: msg 29
32 summary: msg 29
34
33
35 changeset: 28:8e0c2264c8af
34 changeset: 28:8e0c2264c8af
36 user: test
35 user: test
37 date: Thu Jan 01 00:00:28 1970 +0000
36 date: Thu Jan 01 00:00:28 1970 +0000
38 summary: msg 28
37 summary: msg 28
39
38
40 changeset: 27:288867a866e9
39 changeset: 27:288867a866e9
41 user: test
40 user: test
42 date: Thu Jan 01 00:00:27 1970 +0000
41 date: Thu Jan 01 00:00:27 1970 +0000
43 summary: msg 27
42 summary: msg 27
44
43
45 changeset: 26:3efc6fd51aeb
44 changeset: 26:3efc6fd51aeb
46 user: test
45 user: test
47 date: Thu Jan 01 00:00:26 1970 +0000
46 date: Thu Jan 01 00:00:26 1970 +0000
48 summary: msg 26
47 summary: msg 26
49
48
50 changeset: 25:02a84173a97a
49 changeset: 25:02a84173a97a
51 user: test
50 user: test
52 date: Thu Jan 01 00:00:25 1970 +0000
51 date: Thu Jan 01 00:00:25 1970 +0000
53 summary: msg 25
52 summary: msg 25
54
53
55 changeset: 24:10e0acd3809e
54 changeset: 24:10e0acd3809e
56 user: test
55 user: test
57 date: Thu Jan 01 00:00:24 1970 +0000
56 date: Thu Jan 01 00:00:24 1970 +0000
58 summary: msg 24
57 summary: msg 24
59
58
60 changeset: 23:5ec79163bff4
59 changeset: 23:5ec79163bff4
61 user: test
60 user: test
62 date: Thu Jan 01 00:00:23 1970 +0000
61 date: Thu Jan 01 00:00:23 1970 +0000
63 summary: msg 23
62 summary: msg 23
64
63
65 changeset: 22:06c7993750ce
64 changeset: 22:06c7993750ce
66 user: test
65 user: test
67 date: Thu Jan 01 00:00:22 1970 +0000
66 date: Thu Jan 01 00:00:22 1970 +0000
68 summary: msg 22
67 summary: msg 22
69
68
70 changeset: 21:e5db6aa3fe2a
69 changeset: 21:e5db6aa3fe2a
71 user: test
70 user: test
72 date: Thu Jan 01 00:00:21 1970 +0000
71 date: Thu Jan 01 00:00:21 1970 +0000
73 summary: msg 21
72 summary: msg 21
74
73
75 changeset: 20:7128fb4fdbc9
74 changeset: 20:7128fb4fdbc9
76 user: test
75 user: test
77 date: Thu Jan 01 00:00:20 1970 +0000
76 date: Thu Jan 01 00:00:20 1970 +0000
78 summary: msg 20
77 summary: msg 20
79
78
80 changeset: 19:52798545b482
79 changeset: 19:52798545b482
81 user: test
80 user: test
82 date: Thu Jan 01 00:00:19 1970 +0000
81 date: Thu Jan 01 00:00:19 1970 +0000
83 summary: msg 19
82 summary: msg 19
84
83
85 changeset: 18:86977a90077e
84 changeset: 18:86977a90077e
86 user: test
85 user: test
87 date: Thu Jan 01 00:00:18 1970 +0000
86 date: Thu Jan 01 00:00:18 1970 +0000
88 summary: msg 18
87 summary: msg 18
89
88
90 changeset: 17:03515f4a9080
89 changeset: 17:03515f4a9080
91 user: test
90 user: test
92 date: Thu Jan 01 00:00:17 1970 +0000
91 date: Thu Jan 01 00:00:17 1970 +0000
93 summary: msg 17
92 summary: msg 17
94
93
95 changeset: 16:a2e6ea4973e9
94 changeset: 16:a2e6ea4973e9
96 user: test
95 user: test
97 date: Thu Jan 01 00:00:16 1970 +0000
96 date: Thu Jan 01 00:00:16 1970 +0000
98 summary: msg 16
97 summary: msg 16
99
98
100 changeset: 15:e7fa0811edb0
99 changeset: 15:e7fa0811edb0
101 user: test
100 user: test
102 date: Thu Jan 01 00:00:15 1970 +0000
101 date: Thu Jan 01 00:00:15 1970 +0000
103 summary: msg 15
102 summary: msg 15
104
103
105 changeset: 14:ce8f0998e922
104 changeset: 14:ce8f0998e922
106 user: test
105 user: test
107 date: Thu Jan 01 00:00:14 1970 +0000
106 date: Thu Jan 01 00:00:14 1970 +0000
108 summary: msg 14
107 summary: msg 14
109
108
110 changeset: 13:9d7d07bc967c
109 changeset: 13:9d7d07bc967c
111 user: test
110 user: test
112 date: Thu Jan 01 00:00:13 1970 +0000
111 date: Thu Jan 01 00:00:13 1970 +0000
113 summary: msg 13
112 summary: msg 13
114
113
115 changeset: 12:1941b52820a5
114 changeset: 12:1941b52820a5
116 user: test
115 user: test
117 date: Thu Jan 01 00:00:12 1970 +0000
116 date: Thu Jan 01 00:00:12 1970 +0000
118 summary: msg 12
117 summary: msg 12
119
118
120 changeset: 11:7b4cd9578619
119 changeset: 11:7b4cd9578619
121 user: test
120 user: test
122 date: Thu Jan 01 00:00:11 1970 +0000
121 date: Thu Jan 01 00:00:11 1970 +0000
123 summary: msg 11
122 summary: msg 11
124
123
125 changeset: 10:7c5eff49a6b6
124 changeset: 10:7c5eff49a6b6
126 user: test
125 user: test
127 date: Thu Jan 01 00:00:10 1970 +0000
126 date: Thu Jan 01 00:00:10 1970 +0000
128 summary: msg 10
127 summary: msg 10
129
128
130 changeset: 9:eb44510ef29a
129 changeset: 9:eb44510ef29a
131 user: test
130 user: test
132 date: Thu Jan 01 00:00:09 1970 +0000
131 date: Thu Jan 01 00:00:09 1970 +0000
133 summary: msg 9
132 summary: msg 9
134
133
135 changeset: 8:453eb4dba229
134 changeset: 8:453eb4dba229
136 user: test
135 user: test
137 date: Thu Jan 01 00:00:08 1970 +0000
136 date: Thu Jan 01 00:00:08 1970 +0000
138 summary: msg 8
137 summary: msg 8
139
138
140 changeset: 7:03750880c6b5
139 changeset: 7:03750880c6b5
141 user: test
140 user: test
142 date: Thu Jan 01 00:00:07 1970 +0000
141 date: Thu Jan 01 00:00:07 1970 +0000
143 summary: msg 7
142 summary: msg 7
144
143
145 changeset: 6:a3d5c6fdf0d3
144 changeset: 6:a3d5c6fdf0d3
146 user: test
145 user: test
147 date: Thu Jan 01 00:00:06 1970 +0000
146 date: Thu Jan 01 00:00:06 1970 +0000
148 summary: msg 6
147 summary: msg 6
149
148
150 changeset: 5:7874a09ea728
149 changeset: 5:7874a09ea728
151 user: test
150 user: test
152 date: Thu Jan 01 00:00:05 1970 +0000
151 date: Thu Jan 01 00:00:05 1970 +0000
153 summary: msg 5
152 summary: msg 5
154
153
155 changeset: 4:9b2ba8336a65
154 changeset: 4:9b2ba8336a65
156 user: test
155 user: test
157 date: Thu Jan 01 00:00:04 1970 +0000
156 date: Thu Jan 01 00:00:04 1970 +0000
158 summary: msg 4
157 summary: msg 4
159
158
160 changeset: 3:b53bea5e2fcb
159 changeset: 3:b53bea5e2fcb
161 user: test
160 user: test
162 date: Thu Jan 01 00:00:03 1970 +0000
161 date: Thu Jan 01 00:00:03 1970 +0000
163 summary: msg 3
162 summary: msg 3
164
163
165 changeset: 2:db07c04beaca
164 changeset: 2:db07c04beaca
166 user: test
165 user: test
167 date: Thu Jan 01 00:00:02 1970 +0000
166 date: Thu Jan 01 00:00:02 1970 +0000
168 summary: msg 2
167 summary: msg 2
169
168
170 changeset: 1:5cd978ea5149
169 changeset: 1:5cd978ea5149
171 user: test
170 user: test
172 date: Thu Jan 01 00:00:01 1970 +0000
171 date: Thu Jan 01 00:00:01 1970 +0000
173 summary: msg 1
172 summary: msg 1
174
173
175 changeset: 0:b99c7b9c8e11
174 changeset: 0:b99c7b9c8e11
176 user: test
175 user: test
177 date: Thu Jan 01 00:00:00 1970 +0000
176 date: Thu Jan 01 00:00:00 1970 +0000
178 summary: msg 0
177 summary: msg 0
179
178
180
179
181 $ hg up -C
180 $ hg up -C
182 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
181 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
183
182
184 bisect test
183 bisect test
185
184
186 $ hg bisect -r
185 $ hg bisect -r
187 $ hg bisect -b
186 $ hg bisect -b
188 $ hg bisect -g 1
187 $ hg bisect -g 1
189 Testing changeset 16:a2e6ea4973e9 (30 changesets remaining, ~4 tests)
188 Testing changeset 16:a2e6ea4973e9 (30 changesets remaining, ~4 tests)
190 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
189 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
191 $ hg bisect -g
190 $ hg bisect -g
192 Testing changeset 23:5ec79163bff4 (15 changesets remaining, ~3 tests)
191 Testing changeset 23:5ec79163bff4 (15 changesets remaining, ~3 tests)
193 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
192 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
194
193
195 skip
194 skip
196
195
197 $ hg bisect -s
196 $ hg bisect -s
198 Testing changeset 24:10e0acd3809e (15 changesets remaining, ~3 tests)
197 Testing changeset 24:10e0acd3809e (15 changesets remaining, ~3 tests)
199 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
198 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
200 $ hg bisect -g
199 $ hg bisect -g
201 Testing changeset 27:288867a866e9 (7 changesets remaining, ~2 tests)
200 Testing changeset 27:288867a866e9 (7 changesets remaining, ~2 tests)
202 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
201 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
203 $ hg bisect -g
202 $ hg bisect -g
204 Testing changeset 29:b5bd63375ab9 (4 changesets remaining, ~2 tests)
203 Testing changeset 29:b5bd63375ab9 (4 changesets remaining, ~2 tests)
205 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
204 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
206 $ hg bisect -b
205 $ hg bisect -b
207 Testing changeset 28:8e0c2264c8af (2 changesets remaining, ~1 tests)
206 Testing changeset 28:8e0c2264c8af (2 changesets remaining, ~1 tests)
208 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
207 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
209 $ hg bisect -g
208 $ hg bisect -g
210 The first bad revision is:
209 The first bad revision is:
211 changeset: 29:b5bd63375ab9
210 changeset: 29:b5bd63375ab9
212 user: test
211 user: test
213 date: Thu Jan 01 00:00:29 1970 +0000
212 date: Thu Jan 01 00:00:29 1970 +0000
214 summary: msg 29
213 summary: msg 29
215
214
216
215
217 mark revsets instead of single revs
216 mark revsets instead of single revs
218
217
219 $ hg bisect -r
218 $ hg bisect -r
220 $ hg bisect -b "0::3"
219 $ hg bisect -b "0::3"
221 $ hg bisect -s "13::16"
220 $ hg bisect -s "13::16"
222 $ hg bisect -g "26::tip"
221 $ hg bisect -g "26::tip"
223 Testing changeset 12:1941b52820a5 (23 changesets remaining, ~4 tests)
222 Testing changeset 12:1941b52820a5 (23 changesets remaining, ~4 tests)
224 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
223 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
225 $ cat .hg/bisect.state
224 $ cat .hg/bisect.state
226 skip 9d7d07bc967ca98ad0600c24953fd289ad5fa991
225 skip 9d7d07bc967ca98ad0600c24953fd289ad5fa991
227 skip ce8f0998e922c179e80819d5066fbe46e2998784
226 skip ce8f0998e922c179e80819d5066fbe46e2998784
228 skip e7fa0811edb063f6319531f0d0a865882138e180
227 skip e7fa0811edb063f6319531f0d0a865882138e180
229 skip a2e6ea4973e9196ddd3386493b0c214b41fd97d3
228 skip a2e6ea4973e9196ddd3386493b0c214b41fd97d3
230 bad b99c7b9c8e11558adef3fad9af211c58d46f325b
229 bad b99c7b9c8e11558adef3fad9af211c58d46f325b
231 bad 5cd978ea51499179507ee7b6f340d2dbaa401185
230 bad 5cd978ea51499179507ee7b6f340d2dbaa401185
232 bad db07c04beaca44cf24832541e7f4a2346a95275b
231 bad db07c04beaca44cf24832541e7f4a2346a95275b
233 bad b53bea5e2fcb30d3e00bd3409507a5659ce0fd8b
232 bad b53bea5e2fcb30d3e00bd3409507a5659ce0fd8b
234 good 3efc6fd51aeb8594398044c6c846ca59ae021203
233 good 3efc6fd51aeb8594398044c6c846ca59ae021203
235 good 288867a866e9adb7a29880b66936c874b80f4651
234 good 288867a866e9adb7a29880b66936c874b80f4651
236 good 8e0c2264c8af790daf3585ada0669d93dee09c83
235 good 8e0c2264c8af790daf3585ada0669d93dee09c83
237 good b5bd63375ab9a290419f2024b7f4ee9ea7ce90a8
236 good b5bd63375ab9a290419f2024b7f4ee9ea7ce90a8
238 good ed2d2f24b11c368fa8aa0da9f4e1db580abade59
237 good ed2d2f24b11c368fa8aa0da9f4e1db580abade59
239 good 58c80a7c8a4025a94cedaf7b4a4e3124e8909a96
238 good 58c80a7c8a4025a94cedaf7b4a4e3124e8909a96
240
239
241 bisect reverse test
240 bisect reverse test
242
241
243 $ hg bisect -r
242 $ hg bisect -r
244 $ hg bisect -b null
243 $ hg bisect -b null
245 $ hg bisect -g tip
244 $ hg bisect -g tip
246 Testing changeset 15:e7fa0811edb0 (32 changesets remaining, ~5 tests)
245 Testing changeset 15:e7fa0811edb0 (32 changesets remaining, ~5 tests)
247 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
246 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
248 $ hg bisect -g
247 $ hg bisect -g
249 Testing changeset 7:03750880c6b5 (16 changesets remaining, ~4 tests)
248 Testing changeset 7:03750880c6b5 (16 changesets remaining, ~4 tests)
250 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
249 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
251
250
252 skip
251 skip
253
252
254 $ hg bisect -s
253 $ hg bisect -s
255 Testing changeset 6:a3d5c6fdf0d3 (16 changesets remaining, ~4 tests)
254 Testing changeset 6:a3d5c6fdf0d3 (16 changesets remaining, ~4 tests)
256 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
255 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
257 $ hg bisect -g
256 $ hg bisect -g
258 Testing changeset 2:db07c04beaca (7 changesets remaining, ~2 tests)
257 Testing changeset 2:db07c04beaca (7 changesets remaining, ~2 tests)
259 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
258 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
260 $ hg bisect -g
259 $ hg bisect -g
261 Testing changeset 0:b99c7b9c8e11 (3 changesets remaining, ~1 tests)
260 Testing changeset 0:b99c7b9c8e11 (3 changesets remaining, ~1 tests)
262 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
261 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
263 $ hg bisect -b
262 $ hg bisect -b
264 Testing changeset 1:5cd978ea5149 (2 changesets remaining, ~1 tests)
263 Testing changeset 1:5cd978ea5149 (2 changesets remaining, ~1 tests)
265 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
264 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
266 $ hg bisect -g
265 $ hg bisect -g
267 The first good revision is:
266 The first good revision is:
268 changeset: 1:5cd978ea5149
267 changeset: 1:5cd978ea5149
269 user: test
268 user: test
270 date: Thu Jan 01 00:00:01 1970 +0000
269 date: Thu Jan 01 00:00:01 1970 +0000
271 summary: msg 1
270 summary: msg 1
272
271
272 $ false
273 [1]
274
273
275
274 $ hg bisect -r
276 $ hg bisect -r
275 $ hg bisect -g tip
277 $ hg bisect -g tip
276 $ hg bisect -b tip || echo error
278 $ hg bisect -b tip
277 abort: starting revisions are not directly related
279 abort: starting revisions are not directly related
278 error
279
280
280 $ hg bisect -r
281 $ hg bisect -r
281 $ hg bisect -g null
282 $ hg bisect -g null
282 $ hg bisect -bU tip
283 $ hg bisect -bU tip
283 Testing changeset 15:e7fa0811edb0 (32 changesets remaining, ~5 tests)
284 Testing changeset 15:e7fa0811edb0 (32 changesets remaining, ~5 tests)
284 $ hg id
285 $ hg id
285 5cd978ea5149
286 5cd978ea5149
286
287
287
288
288 reproduce AssertionError, issue1228 and issue1182
289 reproduce AssertionError, issue1228 and issue1182
289
290
290 $ hg bisect -r
291 $ hg bisect -r
291 $ hg bisect -b 4
292 $ hg bisect -b 4
292 $ hg bisect -g 0
293 $ hg bisect -g 0
293 Testing changeset 2:db07c04beaca (4 changesets remaining, ~2 tests)
294 Testing changeset 2:db07c04beaca (4 changesets remaining, ~2 tests)
294 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
295 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
295 $ hg bisect -s
296 $ hg bisect -s
296 Testing changeset 1:5cd978ea5149 (4 changesets remaining, ~2 tests)
297 Testing changeset 1:5cd978ea5149 (4 changesets remaining, ~2 tests)
297 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
298 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
298 $ hg bisect -s
299 $ hg bisect -s
299 Testing changeset 3:b53bea5e2fcb (4 changesets remaining, ~2 tests)
300 Testing changeset 3:b53bea5e2fcb (4 changesets remaining, ~2 tests)
300 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
301 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
301 $ hg bisect -s
302 $ hg bisect -s
302 Due to skipped revisions, the first bad revision could be any of:
303 Due to skipped revisions, the first bad revision could be any of:
303 changeset: 1:5cd978ea5149
304 changeset: 1:5cd978ea5149
304 user: test
305 user: test
305 date: Thu Jan 01 00:00:01 1970 +0000
306 date: Thu Jan 01 00:00:01 1970 +0000
306 summary: msg 1
307 summary: msg 1
307
308
308 changeset: 2:db07c04beaca
309 changeset: 2:db07c04beaca
309 user: test
310 user: test
310 date: Thu Jan 01 00:00:02 1970 +0000
311 date: Thu Jan 01 00:00:02 1970 +0000
311 summary: msg 2
312 summary: msg 2
312
313
313 changeset: 3:b53bea5e2fcb
314 changeset: 3:b53bea5e2fcb
314 user: test
315 user: test
315 date: Thu Jan 01 00:00:03 1970 +0000
316 date: Thu Jan 01 00:00:03 1970 +0000
316 summary: msg 3
317 summary: msg 3
317
318
318 changeset: 4:9b2ba8336a65
319 changeset: 4:9b2ba8336a65
319 user: test
320 user: test
320 date: Thu Jan 01 00:00:04 1970 +0000
321 date: Thu Jan 01 00:00:04 1970 +0000
321 summary: msg 4
322 summary: msg 4
322
323
323
324
324
325
325 reproduce non converging bisect, issue1182
326 reproduce non converging bisect, issue1182
326
327
327 $ hg bisect -r
328 $ hg bisect -r
328 $ hg bisect -g 0
329 $ hg bisect -g 0
329 $ hg bisect -b 2
330 $ hg bisect -b 2
330 Testing changeset 1:5cd978ea5149 (2 changesets remaining, ~1 tests)
331 Testing changeset 1:5cd978ea5149 (2 changesets remaining, ~1 tests)
331 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
332 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
332 $ hg bisect -s
333 $ hg bisect -s
333 Due to skipped revisions, the first bad revision could be any of:
334 Due to skipped revisions, the first bad revision could be any of:
334 changeset: 1:5cd978ea5149
335 changeset: 1:5cd978ea5149
335 user: test
336 user: test
336 date: Thu Jan 01 00:00:01 1970 +0000
337 date: Thu Jan 01 00:00:01 1970 +0000
337 summary: msg 1
338 summary: msg 1
338
339
339 changeset: 2:db07c04beaca
340 changeset: 2:db07c04beaca
340 user: test
341 user: test
341 date: Thu Jan 01 00:00:02 1970 +0000
342 date: Thu Jan 01 00:00:02 1970 +0000
342 summary: msg 2
343 summary: msg 2
343
344
344
345
345
346
346 test no action
347 test no action
347
348
348 $ hg bisect -r
349 $ hg bisect -r
349 $ hg bisect || echo failure
350 $ hg bisect
350 abort: cannot bisect (no known good revisions)
351 abort: cannot bisect (no known good revisions)
351 failure
352
352
353
353
354 reproduce AssertionError, issue1445
354 reproduce AssertionError, issue1445
355
355
356 $ hg bisect -r
356 $ hg bisect -r
357 $ hg bisect -b 6
357 $ hg bisect -b 6
358 $ hg bisect -g 0
358 $ hg bisect -g 0
359 Testing changeset 3:b53bea5e2fcb (6 changesets remaining, ~2 tests)
359 Testing changeset 3:b53bea5e2fcb (6 changesets remaining, ~2 tests)
360 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
360 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
361 $ hg bisect -s
361 $ hg bisect -s
362 Testing changeset 2:db07c04beaca (6 changesets remaining, ~2 tests)
362 Testing changeset 2:db07c04beaca (6 changesets remaining, ~2 tests)
363 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
363 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
364 $ hg bisect -s
364 $ hg bisect -s
365 Testing changeset 4:9b2ba8336a65 (6 changesets remaining, ~2 tests)
365 Testing changeset 4:9b2ba8336a65 (6 changesets remaining, ~2 tests)
366 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
366 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
367 $ hg bisect -s
367 $ hg bisect -s
368 Testing changeset 1:5cd978ea5149 (6 changesets remaining, ~2 tests)
368 Testing changeset 1:5cd978ea5149 (6 changesets remaining, ~2 tests)
369 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
369 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
370 $ hg bisect -s
370 $ hg bisect -s
371 Testing changeset 5:7874a09ea728 (6 changesets remaining, ~2 tests)
371 Testing changeset 5:7874a09ea728 (6 changesets remaining, ~2 tests)
372 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
372 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
373 $ hg bisect -g
373 $ hg bisect -g
374 The first bad revision is:
374 The first bad revision is:
375 changeset: 6:a3d5c6fdf0d3
375 changeset: 6:a3d5c6fdf0d3
376 user: test
376 user: test
377 date: Thu Jan 01 00:00:06 1970 +0000
377 date: Thu Jan 01 00:00:06 1970 +0000
378 summary: msg 6
378 summary: msg 6
379
379
380
380
381 $ set +e
381 $ set +e
382
382
383 test invalid command
383 test invalid command
384 assuming that the shell returns 127 if command not found ...
384 assuming that the shell returns 127 if command not found ...
385
385
386 $ hg bisect -r
386 $ hg bisect -r
387 $ hg bisect --command 'exit 127'
387 $ hg bisect --command 'exit 127'
388 abort: failed to execute exit 127
388 abort: failed to execute exit 127
389 [255]
389 [255]
390
390
391
391
392 test bisecting command
392 test bisecting command
393
393
394 $ cat > script.py <<EOF
394 $ cat > script.py <<EOF
395 > #!/usr/bin/env python
395 > #!/usr/bin/env python
396 > import sys
396 > import sys
397 > from mercurial import ui, hg
397 > from mercurial import ui, hg
398 > repo = hg.repository(ui.ui(), '.')
398 > repo = hg.repository(ui.ui(), '.')
399 > if repo['.'].rev() < 6:
399 > if repo['.'].rev() < 6:
400 > sys.exit(1)
400 > sys.exit(1)
401 > EOF
401 > EOF
402 $ chmod +x script.py
402 $ chmod +x script.py
403 $ hg bisect -r
403 $ hg bisect -r
404 $ hg bisect --good tip
404 $ hg bisect --good tip
405 $ hg bisect --bad 0
405 $ hg bisect --bad 0
406 Testing changeset 15:e7fa0811edb0 (31 changesets remaining, ~4 tests)
406 Testing changeset 15:e7fa0811edb0 (31 changesets remaining, ~4 tests)
407 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
407 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
408 $ hg bisect --command "'`pwd`/script.py' and some parameters"
408 $ hg bisect --command "'`pwd`/script.py' and some parameters"
409 Changeset 15:e7fa0811edb0: good
409 Changeset 15:e7fa0811edb0: good
410 Changeset 7:03750880c6b5: good
410 Changeset 7:03750880c6b5: good
411 Changeset 3:b53bea5e2fcb: bad
411 Changeset 3:b53bea5e2fcb: bad
412 Changeset 5:7874a09ea728: bad
412 Changeset 5:7874a09ea728: bad
413 Changeset 6:a3d5c6fdf0d3: good
413 Changeset 6:a3d5c6fdf0d3: good
414 The first good revision is:
414 The first good revision is:
415 changeset: 6:a3d5c6fdf0d3
415 changeset: 6:a3d5c6fdf0d3
416 user: test
416 user: test
417 date: Thu Jan 01 00:00:06 1970 +0000
417 date: Thu Jan 01 00:00:06 1970 +0000
418 summary: msg 6
418 summary: msg 6
419
419
@@ -1,147 +1,145 b''
1 this structure seems to tickle a bug in bundle's search for
1 this structure seems to tickle a bug in bundle's search for
2 changesets, so first we have to recreate it
2 changesets, so first we have to recreate it
3
3
4 o 8
4 o 8
5 |
5 |
6 | o 7
6 | o 7
7 | |
7 | |
8 | o 6
8 | o 6
9 |/|
9 |/|
10 o | 5
10 o | 5
11 | |
11 | |
12 o | 4
12 o | 4
13 | |
13 | |
14 | o 3
14 | o 3
15 | |
15 | |
16 | o 2
16 | o 2
17 |/
17 |/
18 o 1
18 o 1
19 |
19 |
20 o 0
20 o 0
21
21
22 $ mkrev()
22 $ mkrev()
23 > {
23 > {
24 > revno=$1
24 > revno=$1
25 > echo "rev $revno"
25 > echo "rev $revno"
26 > echo "rev $revno" > foo.txt
26 > echo "rev $revno" > foo.txt
27 > hg -q ci -m"rev $revno"
27 > hg -q ci -m"rev $revno"
28 > }
28 > }
29
29
30 $ set -e
31
32 setup test repo1
30 setup test repo1
33
31
34 $ hg init repo1
32 $ hg init repo1
35 $ cd repo1
33 $ cd repo1
36 $ echo "rev 0" > foo.txt
34 $ echo "rev 0" > foo.txt
37 $ hg ci -Am"rev 0"
35 $ hg ci -Am"rev 0"
38 adding foo.txt
36 adding foo.txt
39 $ mkrev 1
37 $ mkrev 1
40 rev 1
38 rev 1
41
39
42 first branch
40 first branch
43
41
44 $ mkrev 2
42 $ mkrev 2
45 rev 2
43 rev 2
46 $ mkrev 3
44 $ mkrev 3
47 rev 3
45 rev 3
48
46
49 back to rev 1 to create second branch
47 back to rev 1 to create second branch
50
48
51 $ hg up -r1
49 $ hg up -r1
52 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
50 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
53 $ mkrev 4
51 $ mkrev 4
54 rev 4
52 rev 4
55 $ mkrev 5
53 $ mkrev 5
56 rev 5
54 rev 5
57
55
58 merge first branch to second branch
56 merge first branch to second branch
59
57
60 $ hg up -C -r5
58 $ hg up -C -r5
61 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
59 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
62 $ HGMERGE=internal:local hg merge
60 $ HGMERGE=internal:local hg merge
63 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
61 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
64 (branch merge, don't forget to commit)
62 (branch merge, don't forget to commit)
65 $ echo "merge rev 5, rev 3" > foo.txt
63 $ echo "merge rev 5, rev 3" > foo.txt
66 $ hg ci -m"merge first branch to second branch"
64 $ hg ci -m"merge first branch to second branch"
67
65
68 one more commit following the merge
66 one more commit following the merge
69
67
70 $ mkrev 7
68 $ mkrev 7
71 rev 7
69 rev 7
72
70
73 back to "second branch" to make another head
71 back to "second branch" to make another head
74
72
75 $ hg up -r5
73 $ hg up -r5
76 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
74 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
77 $ mkrev 8
75 $ mkrev 8
78 rev 8
76 rev 8
79
77
80 $ echo "[extensions]" >> $HGRCPATH
78 $ echo "[extensions]" >> $HGRCPATH
81 $ echo "graphlog=" >> $HGRCPATH
79 $ echo "graphlog=" >> $HGRCPATH
82
80
83 the story so far
81 the story so far
84
82
85 $ hg glog --template "{rev}\n"
83 $ hg glog --template "{rev}\n"
86 @ 8
84 @ 8
87 |
85 |
88 | o 7
86 | o 7
89 | |
87 | |
90 | o 6
88 | o 6
91 |/|
89 |/|
92 o | 5
90 o | 5
93 | |
91 | |
94 o | 4
92 o | 4
95 | |
93 | |
96 | o 3
94 | o 3
97 | |
95 | |
98 | o 2
96 | o 2
99 |/
97 |/
100 o 1
98 o 1
101 |
99 |
102 o 0
100 o 0
103
101
104
102
105 check that "hg outgoing" really does the right thing
103 check that "hg outgoing" really does the right thing
106
104
107 sanity check of outgoing: expect revs 4 5 6 7 8
105 sanity check of outgoing: expect revs 4 5 6 7 8
108
106
109 $ hg clone -r3 . ../repo2
107 $ hg clone -r3 . ../repo2
110 requesting all changes
108 requesting all changes
111 adding changesets
109 adding changesets
112 adding manifests
110 adding manifests
113 adding file changes
111 adding file changes
114 added 4 changesets with 4 changes to 1 files
112 added 4 changesets with 4 changes to 1 files
115 updating to branch default
113 updating to branch default
116 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
114 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
117
115
118 this should (and does) report 5 outgoing revisions: 4 5 6 7 8
116 this should (and does) report 5 outgoing revisions: 4 5 6 7 8
119
117
120 $ hg outgoing --template "{rev}\n" ../repo2
118 $ hg outgoing --template "{rev}\n" ../repo2
121 comparing with ../repo2
119 comparing with ../repo2
122 searching for changes
120 searching for changes
123 4
121 4
124 5
122 5
125 6
123 6
126 7
124 7
127 8
125 8
128
126
129 test bundle (destination repo): expect 5 revisions
127 test bundle (destination repo): expect 5 revisions
130
128
131 this should bundle the same 5 revisions that outgoing reported, but it
129 this should bundle the same 5 revisions that outgoing reported, but it
132
130
133 actually bundles 7
131 actually bundles 7
134
132
135 $ hg bundle foo.bundle ../repo2
133 $ hg bundle foo.bundle ../repo2
136 searching for changes
134 searching for changes
137 5 changesets found
135 5 changesets found
138
136
139 test bundle (base revision): expect 5 revisions
137 test bundle (base revision): expect 5 revisions
140
138
141 this should (and does) give exactly the same result as bundle
139 this should (and does) give exactly the same result as bundle
142
140
143 with a destination repo... i.e. it's wrong too
141 with a destination repo... i.e. it's wrong too
144
142
145 $ hg bundle --base 3 foo.bundle
143 $ hg bundle --base 3 foo.bundle
146 5 changesets found
144 5 changesets found
147
145
@@ -1,336 +1,337 b''
1
1
2 $ hg init
2 $ hg init
3
3
4 New file:
4 New file:
5
5
6 $ hg import -d "1000000 0" -mnew - <<EOF
6 $ hg import -d "1000000 0" -mnew - <<EOF
7 > diff --git a/new b/new
7 > diff --git a/new b/new
8 > new file mode 100644
8 > new file mode 100644
9 > index 0000000..7898192
9 > index 0000000..7898192
10 > --- /dev/null
10 > --- /dev/null
11 > +++ b/new
11 > +++ b/new
12 > @@ -0,0 +1 @@
12 > @@ -0,0 +1 @@
13 > +a
13 > +a
14 > EOF
14 > EOF
15 applying patch from stdin
15 applying patch from stdin
16
16
17 $ hg tip -q
17 $ hg tip -q
18 0:ae3ee40d2079
18 0:ae3ee40d2079
19
19
20 New empty file:
20 New empty file:
21
21
22 $ hg import -d "1000000 0" -mempty - <<EOF
22 $ hg import -d "1000000 0" -mempty - <<EOF
23 > diff --git a/empty b/empty
23 > diff --git a/empty b/empty
24 > new file mode 100644
24 > new file mode 100644
25 > EOF
25 > EOF
26 applying patch from stdin
26 applying patch from stdin
27
27
28 $ hg tip -q
28 $ hg tip -q
29 1:ab199dc869b5
29 1:ab199dc869b5
30
30
31 $ hg locate empty
31 $ hg locate empty
32 empty
32 empty
33
33
34 chmod +x:
34 chmod +x:
35
35
36 $ hg import -d "1000000 0" -msetx - <<EOF
36 $ hg import -d "1000000 0" -msetx - <<EOF
37 > diff --git a/new b/new
37 > diff --git a/new b/new
38 > old mode 100644
38 > old mode 100644
39 > new mode 100755
39 > new mode 100755
40 > EOF
40 > EOF
41 applying patch from stdin
41 applying patch from stdin
42
42
43 $ hg tip -q
43 $ hg tip -q
44 2:3a34410f282e
44 2:3a34410f282e
45
45
46 $ test -x new || echo failed
46 $ test -x new
47
47
48 Copy:
48 Copy:
49
49
50 $ hg import -d "1000000 0" -mcopy - <<EOF
50 $ hg import -d "1000000 0" -mcopy - <<EOF
51 > diff --git a/new b/copy
51 > diff --git a/new b/copy
52 > old mode 100755
52 > old mode 100755
53 > new mode 100644
53 > new mode 100644
54 > similarity index 100%
54 > similarity index 100%
55 > copy from new
55 > copy from new
56 > copy to copy
56 > copy to copy
57 > diff --git a/new b/copyx
57 > diff --git a/new b/copyx
58 > similarity index 100%
58 > similarity index 100%
59 > copy from new
59 > copy from new
60 > copy to copyx
60 > copy to copyx
61 > EOF
61 > EOF
62 applying patch from stdin
62 applying patch from stdin
63
63
64 $ hg tip -q
64 $ hg tip -q
65 3:37bacb7ca14d
65 3:37bacb7ca14d
66
66
67 $ if "$TESTDIR/hghave" -q execbit; then
67 $ if "$TESTDIR/hghave" -q execbit; then
68 > test -f copy -a ! -x copy || echo failed
68 > test -f copy -a ! -x copy || echo bad
69 > test -x copyx || echo failed
69 > test -x copyx || echo bad
70 > else
70 > else
71 > test -f copy || echo failed
71 > test -f copy || echo bad
72 > fi
72 > fi
73
73
74 $ cat copy
74 $ cat copy
75 a
75 a
76
76
77 $ hg cat copy
77 $ hg cat copy
78 a
78 a
79
79
80 Rename:
80 Rename:
81
81
82 $ hg import -d "1000000 0" -mrename - <<EOF
82 $ hg import -d "1000000 0" -mrename - <<EOF
83 > diff --git a/copy b/rename
83 > diff --git a/copy b/rename
84 > similarity index 100%
84 > similarity index 100%
85 > rename from copy
85 > rename from copy
86 > rename to rename
86 > rename to rename
87 > EOF
87 > EOF
88 applying patch from stdin
88 applying patch from stdin
89
89
90 $ hg tip -q
90 $ hg tip -q
91 4:47b81a94361d
91 4:47b81a94361d
92
92
93 $ hg locate
93 $ hg locate
94 copyx
94 copyx
95 empty
95 empty
96 new
96 new
97 rename
97 rename
98
98
99 Delete:
99 Delete:
100
100
101 $ hg import -d "1000000 0" -mdelete - <<EOF
101 $ hg import -d "1000000 0" -mdelete - <<EOF
102 > diff --git a/copyx b/copyx
102 > diff --git a/copyx b/copyx
103 > deleted file mode 100755
103 > deleted file mode 100755
104 > index 7898192..0000000
104 > index 7898192..0000000
105 > --- a/copyx
105 > --- a/copyx
106 > +++ /dev/null
106 > +++ /dev/null
107 > @@ -1 +0,0 @@
107 > @@ -1 +0,0 @@
108 > -a
108 > -a
109 > EOF
109 > EOF
110 applying patch from stdin
110 applying patch from stdin
111
111
112 $ hg tip -q
112 $ hg tip -q
113 5:d9b001d98336
113 5:d9b001d98336
114
114
115 $ hg locate
115 $ hg locate
116 empty
116 empty
117 new
117 new
118 rename
118 rename
119
119
120 $ test -f copyx && echo failed || true
120 $ test -f copyx
121 [1]
121
122
122 Regular diff:
123 Regular diff:
123
124
124 $ hg import -d "1000000 0" -mregular - <<EOF
125 $ hg import -d "1000000 0" -mregular - <<EOF
125 > diff --git a/rename b/rename
126 > diff --git a/rename b/rename
126 > index 7898192..72e1fe3 100644
127 > index 7898192..72e1fe3 100644
127 > --- a/rename
128 > --- a/rename
128 > +++ b/rename
129 > +++ b/rename
129 > @@ -1 +1,5 @@
130 > @@ -1 +1,5 @@
130 > a
131 > a
131 > +a
132 > +a
132 > +a
133 > +a
133 > +a
134 > +a
134 > +a
135 > +a
135 > EOF
136 > EOF
136 applying patch from stdin
137 applying patch from stdin
137
138
138 $ hg tip -q
139 $ hg tip -q
139 6:ebe901e7576b
140 6:ebe901e7576b
140
141
141 Copy and modify:
142 Copy and modify:
142
143
143 $ hg import -d "1000000 0" -mcopymod - <<EOF
144 $ hg import -d "1000000 0" -mcopymod - <<EOF
144 > diff --git a/rename b/copy2
145 > diff --git a/rename b/copy2
145 > similarity index 80%
146 > similarity index 80%
146 > copy from rename
147 > copy from rename
147 > copy to copy2
148 > copy to copy2
148 > index 72e1fe3..b53c148 100644
149 > index 72e1fe3..b53c148 100644
149 > --- a/rename
150 > --- a/rename
150 > +++ b/copy2
151 > +++ b/copy2
151 > @@ -1,5 +1,5 @@
152 > @@ -1,5 +1,5 @@
152 > a
153 > a
153 > a
154 > a
154 > -a
155 > -a
155 > +b
156 > +b
156 > a
157 > a
157 > a
158 > a
158 > EOF
159 > EOF
159 applying patch from stdin
160 applying patch from stdin
160
161
161 $ hg tip -q
162 $ hg tip -q
162 7:18f368958ecd
163 7:18f368958ecd
163
164
164 $ hg cat copy2
165 $ hg cat copy2
165 a
166 a
166 a
167 a
167 b
168 b
168 a
169 a
169 a
170 a
170
171
171 Rename and modify:
172 Rename and modify:
172
173
173 $ hg import -d "1000000 0" -mrenamemod - <<EOF
174 $ hg import -d "1000000 0" -mrenamemod - <<EOF
174 > diff --git a/copy2 b/rename2
175 > diff --git a/copy2 b/rename2
175 > similarity index 80%
176 > similarity index 80%
176 > rename from copy2
177 > rename from copy2
177 > rename to rename2
178 > rename to rename2
178 > index b53c148..8f81e29 100644
179 > index b53c148..8f81e29 100644
179 > --- a/copy2
180 > --- a/copy2
180 > +++ b/rename2
181 > +++ b/rename2
181 > @@ -1,5 +1,5 @@
182 > @@ -1,5 +1,5 @@
182 > a
183 > a
183 > a
184 > a
184 > b
185 > b
185 > -a
186 > -a
186 > +c
187 > +c
187 > a
188 > a
188 > EOF
189 > EOF
189 applying patch from stdin
190 applying patch from stdin
190
191
191 $ hg tip -q
192 $ hg tip -q
192 8:c32b0d7e6f44
193 8:c32b0d7e6f44
193
194
194 $ hg locate copy2
195 $ hg locate copy2
195 [1]
196 [1]
196 $ hg cat rename2
197 $ hg cat rename2
197 a
198 a
198 a
199 a
199 b
200 b
200 c
201 c
201 a
202 a
202
203
203 One file renamed multiple times:
204 One file renamed multiple times:
204
205
205 $ hg import -d "1000000 0" -mmultirenames - <<EOF
206 $ hg import -d "1000000 0" -mmultirenames - <<EOF
206 > diff --git a/rename2 b/rename3
207 > diff --git a/rename2 b/rename3
207 > rename from rename2
208 > rename from rename2
208 > rename to rename3
209 > rename to rename3
209 > diff --git a/rename2 b/rename3-2
210 > diff --git a/rename2 b/rename3-2
210 > rename from rename2
211 > rename from rename2
211 > rename to rename3-2
212 > rename to rename3-2
212 > EOF
213 > EOF
213 applying patch from stdin
214 applying patch from stdin
214
215
215 $ hg tip -q
216 $ hg tip -q
216 9:034a6bf95330
217 9:034a6bf95330
217
218
218 $ hg log -vr. --template '{rev} {files} / {file_copies}\n'
219 $ hg log -vr. --template '{rev} {files} / {file_copies}\n'
219 9 rename2 rename3 rename3-2 / rename3 (rename2)rename3-2 (rename2)
220 9 rename2 rename3 rename3-2 / rename3 (rename2)rename3-2 (rename2)
220
221
221 $ hg locate rename2 rename3 rename3-2
222 $ hg locate rename2 rename3 rename3-2
222 rename3
223 rename3
223 rename3-2
224 rename3-2
224
225
225 $ hg cat rename3
226 $ hg cat rename3
226 a
227 a
227 a
228 a
228 b
229 b
229 c
230 c
230 a
231 a
231
232
232 $ hg cat rename3-2
233 $ hg cat rename3-2
233 a
234 a
234 a
235 a
235 b
236 b
236 c
237 c
237 a
238 a
238
239
239 $ echo foo > foo
240 $ echo foo > foo
240 $ hg add foo
241 $ hg add foo
241 $ hg ci -m 'add foo'
242 $ hg ci -m 'add foo'
242
243
243 Binary files and regular patch hunks:
244 Binary files and regular patch hunks:
244
245
245 $ hg import -d "1000000 0" -m binaryregular - <<EOF
246 $ hg import -d "1000000 0" -m binaryregular - <<EOF
246 > diff --git a/binary b/binary
247 > diff --git a/binary b/binary
247 > new file mode 100644
248 > new file mode 100644
248 > index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
249 > index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
249 > GIT binary patch
250 > GIT binary patch
250 > literal 4
251 > literal 4
251 > Lc\${NkU|;|M00aO5
252 > Lc\${NkU|;|M00aO5
252 >
253 >
253 > diff --git a/foo b/foo2
254 > diff --git a/foo b/foo2
254 > rename from foo
255 > rename from foo
255 > rename to foo2
256 > rename to foo2
256 > EOF
257 > EOF
257 applying patch from stdin
258 applying patch from stdin
258
259
259 $ hg tip -q
260 $ hg tip -q
260 11:c39bce63e786
261 11:c39bce63e786
261
262
262 $ cat foo2
263 $ cat foo2
263 foo
264 foo
264
265
265 $ hg manifest --debug | grep binary
266 $ hg manifest --debug | grep binary
266 045c85ba38952325e126c70962cc0f9d9077bc67 644 binary
267 045c85ba38952325e126c70962cc0f9d9077bc67 644 binary
267
268
268 Multiple binary files:
269 Multiple binary files:
269
270
270 $ hg import -d "1000000 0" -m multibinary - <<EOF
271 $ hg import -d "1000000 0" -m multibinary - <<EOF
271 > diff --git a/mbinary1 b/mbinary1
272 > diff --git a/mbinary1 b/mbinary1
272 > new file mode 100644
273 > new file mode 100644
273 > index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
274 > index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4
274 > GIT binary patch
275 > GIT binary patch
275 > literal 4
276 > literal 4
276 > Lc\${NkU|;|M00aO5
277 > Lc\${NkU|;|M00aO5
277 >
278 >
278 > diff --git a/mbinary2 b/mbinary2
279 > diff --git a/mbinary2 b/mbinary2
279 > new file mode 100644
280 > new file mode 100644
280 > index 0000000000000000000000000000000000000000..112363ac1917b417ffbd7f376ca786a1e5fa7490
281 > index 0000000000000000000000000000000000000000..112363ac1917b417ffbd7f376ca786a1e5fa7490
281 > GIT binary patch
282 > GIT binary patch
282 > literal 5
283 > literal 5
283 > Mc\${NkU|\`?^000jF3jhEB
284 > Mc\${NkU|\`?^000jF3jhEB
284 >
285 >
285 > EOF
286 > EOF
286 applying patch from stdin
287 applying patch from stdin
287
288
288 $ hg tip -q
289 $ hg tip -q
289 12:30b530085242
290 12:30b530085242
290
291
291 $ hg manifest --debug | grep mbinary
292 $ hg manifest --debug | grep mbinary
292 045c85ba38952325e126c70962cc0f9d9077bc67 644 mbinary1
293 045c85ba38952325e126c70962cc0f9d9077bc67 644 mbinary1
293 a874b471193996e7cb034bb301cac7bdaf3e3f46 644 mbinary2
294 a874b471193996e7cb034bb301cac7bdaf3e3f46 644 mbinary2
294
295
295 Filenames with spaces:
296 Filenames with spaces:
296
297
297 $ hg import -d "1000000 0" -m spaces - <<EOF
298 $ hg import -d "1000000 0" -m spaces - <<EOF
298 > diff --git a/foo bar b/foo bar
299 > diff --git a/foo bar b/foo bar
299 > new file mode 100644
300 > new file mode 100644
300 > index 0000000..257cc56
301 > index 0000000..257cc56
301 > --- /dev/null
302 > --- /dev/null
302 > +++ b/foo bar
303 > +++ b/foo bar
303 > @@ -0,0 +1 @@
304 > @@ -0,0 +1 @@
304 > +foo
305 > +foo
305 > EOF
306 > EOF
306 applying patch from stdin
307 applying patch from stdin
307
308
308 $ hg tip -q
309 $ hg tip -q
309 13:04750ef42fb3
310 13:04750ef42fb3
310
311
311 $ cat "foo bar"
312 $ cat "foo bar"
312 foo
313 foo
313
314
314 Copy then modify the original file:
315 Copy then modify the original file:
315
316
316 $ hg import -d "1000000 0" -m copy-mod-orig - <<EOF
317 $ hg import -d "1000000 0" -m copy-mod-orig - <<EOF
317 > diff --git a/foo2 b/foo2
318 > diff --git a/foo2 b/foo2
318 > index 257cc56..fe08ec6 100644
319 > index 257cc56..fe08ec6 100644
319 > --- a/foo2
320 > --- a/foo2
320 > +++ b/foo2
321 > +++ b/foo2
321 > @@ -1 +1,2 @@
322 > @@ -1 +1,2 @@
322 > foo
323 > foo
323 > +new line
324 > +new line
324 > diff --git a/foo2 b/foo3
325 > diff --git a/foo2 b/foo3
325 > similarity index 100%
326 > similarity index 100%
326 > copy from foo2
327 > copy from foo2
327 > copy to foo3
328 > copy to foo3
328 > EOF
329 > EOF
329 applying patch from stdin
330 applying patch from stdin
330
331
331 $ hg tip -q
332 $ hg tip -q
332 14:c4cd9cdeaa74
333 14:c4cd9cdeaa74
333
334
334 $ cat foo3
335 $ cat foo3
335 foo
336 foo
336
337
@@ -1,881 +1,879 b''
1 @ (34) head
1 @ (34) head
2 |
2 |
3 | o (33) head
3 | o (33) head
4 | |
4 | |
5 o | (32) expand
5 o | (32) expand
6 |\ \
6 |\ \
7 | o \ (31) expand
7 | o \ (31) expand
8 | |\ \
8 | |\ \
9 | | o \ (30) expand
9 | | o \ (30) expand
10 | | |\ \
10 | | |\ \
11 | | | o | (29) regular commit
11 | | | o | (29) regular commit
12 | | | | |
12 | | | | |
13 | | o | | (28) merge zero known
13 | | o | | (28) merge zero known
14 | | |\ \ \
14 | | |\ \ \
15 o | | | | | (27) collapse
15 o | | | | | (27) collapse
16 |/ / / / /
16 |/ / / / /
17 | | o---+ (26) merge one known; far right
17 | | o---+ (26) merge one known; far right
18 | | | | |
18 | | | | |
19 +---o | | (25) merge one known; far left
19 +---o | | (25) merge one known; far left
20 | | | | |
20 | | | | |
21 | | o | | (24) merge one known; immediate right
21 | | o | | (24) merge one known; immediate right
22 | | |\| |
22 | | |\| |
23 | | o | | (23) merge one known; immediate left
23 | | o | | (23) merge one known; immediate left
24 | |/| | |
24 | |/| | |
25 +---o---+ (22) merge two known; one far left, one far right
25 +---o---+ (22) merge two known; one far left, one far right
26 | | / /
26 | | / /
27 o | | | (21) expand
27 o | | | (21) expand
28 |\ \ \ \
28 |\ \ \ \
29 | o---+-+ (20) merge two known; two far right
29 | o---+-+ (20) merge two known; two far right
30 | / / /
30 | / / /
31 o | | | (19) expand
31 o | | | (19) expand
32 |\ \ \ \
32 |\ \ \ \
33 +---+---o (18) merge two known; two far left
33 +---+---o (18) merge two known; two far left
34 | | | |
34 | | | |
35 | o | | (17) expand
35 | o | | (17) expand
36 | |\ \ \
36 | |\ \ \
37 | | o---+ (16) merge two known; one immediate right, one near right
37 | | o---+ (16) merge two known; one immediate right, one near right
38 | | |/ /
38 | | |/ /
39 o | | | (15) expand
39 o | | | (15) expand
40 |\ \ \ \
40 |\ \ \ \
41 | o-----+ (14) merge two known; one immediate right, one far right
41 | o-----+ (14) merge two known; one immediate right, one far right
42 | |/ / /
42 | |/ / /
43 o | | | (13) expand
43 o | | | (13) expand
44 |\ \ \ \
44 |\ \ \ \
45 +---o | | (12) merge two known; one immediate right, one far left
45 +---o | | (12) merge two known; one immediate right, one far left
46 | | |/ /
46 | | |/ /
47 | o | | (11) expand
47 | o | | (11) expand
48 | |\ \ \
48 | |\ \ \
49 | | o---+ (10) merge two known; one immediate left, one near right
49 | | o---+ (10) merge two known; one immediate left, one near right
50 | |/ / /
50 | |/ / /
51 o | | | (9) expand
51 o | | | (9) expand
52 |\ \ \ \
52 |\ \ \ \
53 | o-----+ (8) merge two known; one immediate left, one far right
53 | o-----+ (8) merge two known; one immediate left, one far right
54 |/ / / /
54 |/ / / /
55 o | | | (7) expand
55 o | | | (7) expand
56 |\ \ \ \
56 |\ \ \ \
57 +---o | | (6) merge two known; one immediate left, one far left
57 +---o | | (6) merge two known; one immediate left, one far left
58 | |/ / /
58 | |/ / /
59 | o | | (5) expand
59 | o | | (5) expand
60 | |\ \ \
60 | |\ \ \
61 | | o | | (4) merge two known; one immediate left, one immediate right
61 | | o | | (4) merge two known; one immediate left, one immediate right
62 | |/|/ /
62 | |/|/ /
63 | o / / (3) collapse
63 | o / / (3) collapse
64 |/ / /
64 |/ / /
65 o / / (2) collapse
65 o / / (2) collapse
66 |/ /
66 |/ /
67 o / (1) collapse
67 o / (1) collapse
68 |/
68 |/
69 o (0) root
69 o (0) root
70
70
71
71
72 $ "$TESTDIR/hghave" no-outer-repo || exit 80
72 $ "$TESTDIR/hghave" no-outer-repo || exit 80
73
73
74 $ set -e
75
76 $ commit()
74 $ commit()
77 > {
75 > {
78 > rev=$1
76 > rev=$1
79 > msg=$2
77 > msg=$2
80 > shift 2
78 > shift 2
81 > if [ "$#" -gt 0 ]; then
79 > if [ "$#" -gt 0 ]; then
82 > hg debugsetparents "$@"
80 > hg debugsetparents "$@"
83 > fi
81 > fi
84 > echo $rev > a
82 > echo $rev > a
85 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
83 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
86 > }
84 > }
87
85
88 $ echo "[extensions]" >> $HGRCPATH
86 $ echo "[extensions]" >> $HGRCPATH
89 $ echo "graphlog=" >> $HGRCPATH
87 $ echo "graphlog=" >> $HGRCPATH
90
88
91 $ hg init repo
89 $ hg init repo
92 $ cd repo
90 $ cd repo
93
91
94 Empty repo:
92 Empty repo:
95
93
96 $ hg glog
94 $ hg glog
97
95
98
96
99 Building DAG:
97 Building DAG:
100
98
101 $ commit 0 "root"
99 $ commit 0 "root"
102 $ commit 1 "collapse" 0
100 $ commit 1 "collapse" 0
103 $ commit 2 "collapse" 1
101 $ commit 2 "collapse" 1
104 $ commit 3 "collapse" 2
102 $ commit 3 "collapse" 2
105 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
103 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
106 $ commit 5 "expand" 3 4
104 $ commit 5 "expand" 3 4
107 $ commit 6 "merge two known; one immediate left, one far left" 2 5
105 $ commit 6 "merge two known; one immediate left, one far left" 2 5
108 $ commit 7 "expand" 2 5
106 $ commit 7 "expand" 2 5
109 $ commit 8 "merge two known; one immediate left, one far right" 0 7
107 $ commit 8 "merge two known; one immediate left, one far right" 0 7
110 $ commit 9 "expand" 7 8
108 $ commit 9 "expand" 7 8
111 $ commit 10 "merge two known; one immediate left, one near right" 0 6
109 $ commit 10 "merge two known; one immediate left, one near right" 0 6
112 $ commit 11 "expand" 6 10
110 $ commit 11 "expand" 6 10
113 $ commit 12 "merge two known; one immediate right, one far left" 1 9
111 $ commit 12 "merge two known; one immediate right, one far left" 1 9
114 $ commit 13 "expand" 9 11
112 $ commit 13 "expand" 9 11
115 $ commit 14 "merge two known; one immediate right, one far right" 0 12
113 $ commit 14 "merge two known; one immediate right, one far right" 0 12
116 $ commit 15 "expand" 13 14
114 $ commit 15 "expand" 13 14
117 $ commit 16 "merge two known; one immediate right, one near right" 0 1
115 $ commit 16 "merge two known; one immediate right, one near right" 0 1
118 $ commit 17 "expand" 12 16
116 $ commit 17 "expand" 12 16
119 $ commit 18 "merge two known; two far left" 1 15
117 $ commit 18 "merge two known; two far left" 1 15
120 $ commit 19 "expand" 15 17
118 $ commit 19 "expand" 15 17
121 $ commit 20 "merge two known; two far right" 0 18
119 $ commit 20 "merge two known; two far right" 0 18
122 $ commit 21 "expand" 19 20
120 $ commit 21 "expand" 19 20
123 $ commit 22 "merge two known; one far left, one far right" 18 21
121 $ commit 22 "merge two known; one far left, one far right" 18 21
124 $ commit 23 "merge one known; immediate left" 1 22
122 $ commit 23 "merge one known; immediate left" 1 22
125 $ commit 24 "merge one known; immediate right" 0 23
123 $ commit 24 "merge one known; immediate right" 0 23
126 $ commit 25 "merge one known; far left" 21 24
124 $ commit 25 "merge one known; far left" 21 24
127 $ commit 26 "merge one known; far right" 18 25
125 $ commit 26 "merge one known; far right" 18 25
128 $ commit 27 "collapse" 21
126 $ commit 27 "collapse" 21
129 $ commit 28 "merge zero known" 1 26
127 $ commit 28 "merge zero known" 1 26
130 $ commit 29 "regular commit" 0
128 $ commit 29 "regular commit" 0
131 $ commit 30 "expand" 28 29
129 $ commit 30 "expand" 28 29
132 $ commit 31 "expand" 21 30
130 $ commit 31 "expand" 21 30
133 $ commit 32 "expand" 27 31
131 $ commit 32 "expand" 27 31
134 $ commit 33 "head" 18
132 $ commit 33 "head" 18
135 $ commit 34 "head" 32
133 $ commit 34 "head" 32
136
134
137
135
138 $ hg glog -q
136 $ hg glog -q
139 @ 34:fea3ac5810e0
137 @ 34:fea3ac5810e0
140 |
138 |
141 | o 33:68608f5145f9
139 | o 33:68608f5145f9
142 | |
140 | |
143 o | 32:d06dffa21a31
141 o | 32:d06dffa21a31
144 |\ \
142 |\ \
145 | o \ 31:621d83e11f67
143 | o \ 31:621d83e11f67
146 | |\ \
144 | |\ \
147 | | o \ 30:6e11cd4b648f
145 | | o \ 30:6e11cd4b648f
148 | | |\ \
146 | | |\ \
149 | | | o | 29:cd9bb2be7593
147 | | | o | 29:cd9bb2be7593
150 | | | | |
148 | | | | |
151 | | o | | 28:44ecd0b9ae99
149 | | o | | 28:44ecd0b9ae99
152 | | |\ \ \
150 | | |\ \ \
153 o | | | | | 27:886ed638191b
151 o | | | | | 27:886ed638191b
154 |/ / / / /
152 |/ / / / /
155 | | o---+ 26:7f25b6c2f0b9
153 | | o---+ 26:7f25b6c2f0b9
156 | | | | |
154 | | | | |
157 +---o | | 25:91da8ed57247
155 +---o | | 25:91da8ed57247
158 | | | | |
156 | | | | |
159 | | o | | 24:a9c19a3d96b7
157 | | o | | 24:a9c19a3d96b7
160 | | |\| |
158 | | |\| |
161 | | o | | 23:a01cddf0766d
159 | | o | | 23:a01cddf0766d
162 | |/| | |
160 | |/| | |
163 +---o---+ 22:e0d9cccacb5d
161 +---o---+ 22:e0d9cccacb5d
164 | | / /
162 | | / /
165 o | | | 21:d42a756af44d
163 o | | | 21:d42a756af44d
166 |\ \ \ \
164 |\ \ \ \
167 | o---+-+ 20:d30ed6450e32
165 | o---+-+ 20:d30ed6450e32
168 | / / /
166 | / / /
169 o | | | 19:31ddc2c1573b
167 o | | | 19:31ddc2c1573b
170 |\ \ \ \
168 |\ \ \ \
171 +---+---o 18:1aa84d96232a
169 +---+---o 18:1aa84d96232a
172 | | | |
170 | | | |
173 | o | | 17:44765d7c06e0
171 | o | | 17:44765d7c06e0
174 | |\ \ \
172 | |\ \ \
175 | | o---+ 16:3677d192927d
173 | | o---+ 16:3677d192927d
176 | | |/ /
174 | | |/ /
177 o | | | 15:1dda3f72782d
175 o | | | 15:1dda3f72782d
178 |\ \ \ \
176 |\ \ \ \
179 | o-----+ 14:8eac370358ef
177 | o-----+ 14:8eac370358ef
180 | |/ / /
178 | |/ / /
181 o | | | 13:22d8966a97e3
179 o | | | 13:22d8966a97e3
182 |\ \ \ \
180 |\ \ \ \
183 +---o | | 12:86b91144a6e9
181 +---o | | 12:86b91144a6e9
184 | | |/ /
182 | | |/ /
185 | o | | 11:832d76e6bdf2
183 | o | | 11:832d76e6bdf2
186 | |\ \ \
184 | |\ \ \
187 | | o---+ 10:74c64d036d72
185 | | o---+ 10:74c64d036d72
188 | |/ / /
186 | |/ / /
189 o | | | 9:7010c0af0a35
187 o | | | 9:7010c0af0a35
190 |\ \ \ \
188 |\ \ \ \
191 | o-----+ 8:7a0b11f71937
189 | o-----+ 8:7a0b11f71937
192 |/ / / /
190 |/ / / /
193 o | | | 7:b632bb1b1224
191 o | | | 7:b632bb1b1224
194 |\ \ \ \
192 |\ \ \ \
195 +---o | | 6:b105a072e251
193 +---o | | 6:b105a072e251
196 | |/ / /
194 | |/ / /
197 | o | | 5:4409d547b708
195 | o | | 5:4409d547b708
198 | |\ \ \
196 | |\ \ \
199 | | o | | 4:26a8bac39d9f
197 | | o | | 4:26a8bac39d9f
200 | |/|/ /
198 | |/|/ /
201 | o / / 3:27eef8ed80b4
199 | o / / 3:27eef8ed80b4
202 |/ / /
200 |/ / /
203 o / / 2:3d9a33b8d1e1
201 o / / 2:3d9a33b8d1e1
204 |/ /
202 |/ /
205 o / 1:6db2ef61d156
203 o / 1:6db2ef61d156
206 |/
204 |/
207 o 0:e6eb3150255d
205 o 0:e6eb3150255d
208
206
209
207
210 $ hg glog
208 $ hg glog
211 @ changeset: 34:fea3ac5810e0
209 @ changeset: 34:fea3ac5810e0
212 | tag: tip
210 | tag: tip
213 | parent: 32:d06dffa21a31
211 | parent: 32:d06dffa21a31
214 | user: test
212 | user: test
215 | date: Thu Jan 01 00:00:34 1970 +0000
213 | date: Thu Jan 01 00:00:34 1970 +0000
216 | summary: (34) head
214 | summary: (34) head
217 |
215 |
218 | o changeset: 33:68608f5145f9
216 | o changeset: 33:68608f5145f9
219 | | parent: 18:1aa84d96232a
217 | | parent: 18:1aa84d96232a
220 | | user: test
218 | | user: test
221 | | date: Thu Jan 01 00:00:33 1970 +0000
219 | | date: Thu Jan 01 00:00:33 1970 +0000
222 | | summary: (33) head
220 | | summary: (33) head
223 | |
221 | |
224 o | changeset: 32:d06dffa21a31
222 o | changeset: 32:d06dffa21a31
225 |\ \ parent: 27:886ed638191b
223 |\ \ parent: 27:886ed638191b
226 | | | parent: 31:621d83e11f67
224 | | | parent: 31:621d83e11f67
227 | | | user: test
225 | | | user: test
228 | | | date: Thu Jan 01 00:00:32 1970 +0000
226 | | | date: Thu Jan 01 00:00:32 1970 +0000
229 | | | summary: (32) expand
227 | | | summary: (32) expand
230 | | |
228 | | |
231 | o | changeset: 31:621d83e11f67
229 | o | changeset: 31:621d83e11f67
232 | |\ \ parent: 21:d42a756af44d
230 | |\ \ parent: 21:d42a756af44d
233 | | | | parent: 30:6e11cd4b648f
231 | | | | parent: 30:6e11cd4b648f
234 | | | | user: test
232 | | | | user: test
235 | | | | date: Thu Jan 01 00:00:31 1970 +0000
233 | | | | date: Thu Jan 01 00:00:31 1970 +0000
236 | | | | summary: (31) expand
234 | | | | summary: (31) expand
237 | | | |
235 | | | |
238 | | o | changeset: 30:6e11cd4b648f
236 | | o | changeset: 30:6e11cd4b648f
239 | | |\ \ parent: 28:44ecd0b9ae99
237 | | |\ \ parent: 28:44ecd0b9ae99
240 | | | | | parent: 29:cd9bb2be7593
238 | | | | | parent: 29:cd9bb2be7593
241 | | | | | user: test
239 | | | | | user: test
242 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
240 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
243 | | | | | summary: (30) expand
241 | | | | | summary: (30) expand
244 | | | | |
242 | | | | |
245 | | | o | changeset: 29:cd9bb2be7593
243 | | | o | changeset: 29:cd9bb2be7593
246 | | | | | parent: 0:e6eb3150255d
244 | | | | | parent: 0:e6eb3150255d
247 | | | | | user: test
245 | | | | | user: test
248 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
246 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
249 | | | | | summary: (29) regular commit
247 | | | | | summary: (29) regular commit
250 | | | | |
248 | | | | |
251 | | o | | changeset: 28:44ecd0b9ae99
249 | | o | | changeset: 28:44ecd0b9ae99
252 | | |\ \ \ parent: 1:6db2ef61d156
250 | | |\ \ \ parent: 1:6db2ef61d156
253 | | | | | | parent: 26:7f25b6c2f0b9
251 | | | | | | parent: 26:7f25b6c2f0b9
254 | | | | | | user: test
252 | | | | | | user: test
255 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
253 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
256 | | | | | | summary: (28) merge zero known
254 | | | | | | summary: (28) merge zero known
257 | | | | | |
255 | | | | | |
258 o | | | | | changeset: 27:886ed638191b
256 o | | | | | changeset: 27:886ed638191b
259 |/ / / / / parent: 21:d42a756af44d
257 |/ / / / / parent: 21:d42a756af44d
260 | | | | | user: test
258 | | | | | user: test
261 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
259 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
262 | | | | | summary: (27) collapse
260 | | | | | summary: (27) collapse
263 | | | | |
261 | | | | |
264 | | o---+ changeset: 26:7f25b6c2f0b9
262 | | o---+ changeset: 26:7f25b6c2f0b9
265 | | | | | parent: 18:1aa84d96232a
263 | | | | | parent: 18:1aa84d96232a
266 | | | | | parent: 25:91da8ed57247
264 | | | | | parent: 25:91da8ed57247
267 | | | | | user: test
265 | | | | | user: test
268 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
266 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
269 | | | | | summary: (26) merge one known; far right
267 | | | | | summary: (26) merge one known; far right
270 | | | | |
268 | | | | |
271 +---o | | changeset: 25:91da8ed57247
269 +---o | | changeset: 25:91da8ed57247
272 | | | | | parent: 21:d42a756af44d
270 | | | | | parent: 21:d42a756af44d
273 | | | | | parent: 24:a9c19a3d96b7
271 | | | | | parent: 24:a9c19a3d96b7
274 | | | | | user: test
272 | | | | | user: test
275 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
273 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
276 | | | | | summary: (25) merge one known; far left
274 | | | | | summary: (25) merge one known; far left
277 | | | | |
275 | | | | |
278 | | o | | changeset: 24:a9c19a3d96b7
276 | | o | | changeset: 24:a9c19a3d96b7
279 | | |\| | parent: 0:e6eb3150255d
277 | | |\| | parent: 0:e6eb3150255d
280 | | | | | parent: 23:a01cddf0766d
278 | | | | | parent: 23:a01cddf0766d
281 | | | | | user: test
279 | | | | | user: test
282 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
280 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
283 | | | | | summary: (24) merge one known; immediate right
281 | | | | | summary: (24) merge one known; immediate right
284 | | | | |
282 | | | | |
285 | | o | | changeset: 23:a01cddf0766d
283 | | o | | changeset: 23:a01cddf0766d
286 | |/| | | parent: 1:6db2ef61d156
284 | |/| | | parent: 1:6db2ef61d156
287 | | | | | parent: 22:e0d9cccacb5d
285 | | | | | parent: 22:e0d9cccacb5d
288 | | | | | user: test
286 | | | | | user: test
289 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
287 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
290 | | | | | summary: (23) merge one known; immediate left
288 | | | | | summary: (23) merge one known; immediate left
291 | | | | |
289 | | | | |
292 +---o---+ changeset: 22:e0d9cccacb5d
290 +---o---+ changeset: 22:e0d9cccacb5d
293 | | | | parent: 18:1aa84d96232a
291 | | | | parent: 18:1aa84d96232a
294 | | / / parent: 21:d42a756af44d
292 | | / / parent: 21:d42a756af44d
295 | | | | user: test
293 | | | | user: test
296 | | | | date: Thu Jan 01 00:00:22 1970 +0000
294 | | | | date: Thu Jan 01 00:00:22 1970 +0000
297 | | | | summary: (22) merge two known; one far left, one far right
295 | | | | summary: (22) merge two known; one far left, one far right
298 | | | |
296 | | | |
299 o | | | changeset: 21:d42a756af44d
297 o | | | changeset: 21:d42a756af44d
300 |\ \ \ \ parent: 19:31ddc2c1573b
298 |\ \ \ \ parent: 19:31ddc2c1573b
301 | | | | | parent: 20:d30ed6450e32
299 | | | | | parent: 20:d30ed6450e32
302 | | | | | user: test
300 | | | | | user: test
303 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
301 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
304 | | | | | summary: (21) expand
302 | | | | | summary: (21) expand
305 | | | | |
303 | | | | |
306 | o---+-+ changeset: 20:d30ed6450e32
304 | o---+-+ changeset: 20:d30ed6450e32
307 | | | | parent: 0:e6eb3150255d
305 | | | | parent: 0:e6eb3150255d
308 | / / / parent: 18:1aa84d96232a
306 | / / / parent: 18:1aa84d96232a
309 | | | | user: test
307 | | | | user: test
310 | | | | date: Thu Jan 01 00:00:20 1970 +0000
308 | | | | date: Thu Jan 01 00:00:20 1970 +0000
311 | | | | summary: (20) merge two known; two far right
309 | | | | summary: (20) merge two known; two far right
312 | | | |
310 | | | |
313 o | | | changeset: 19:31ddc2c1573b
311 o | | | changeset: 19:31ddc2c1573b
314 |\ \ \ \ parent: 15:1dda3f72782d
312 |\ \ \ \ parent: 15:1dda3f72782d
315 | | | | | parent: 17:44765d7c06e0
313 | | | | | parent: 17:44765d7c06e0
316 | | | | | user: test
314 | | | | | user: test
317 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
315 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
318 | | | | | summary: (19) expand
316 | | | | | summary: (19) expand
319 | | | | |
317 | | | | |
320 +---+---o changeset: 18:1aa84d96232a
318 +---+---o changeset: 18:1aa84d96232a
321 | | | | parent: 1:6db2ef61d156
319 | | | | parent: 1:6db2ef61d156
322 | | | | parent: 15:1dda3f72782d
320 | | | | parent: 15:1dda3f72782d
323 | | | | user: test
321 | | | | user: test
324 | | | | date: Thu Jan 01 00:00:18 1970 +0000
322 | | | | date: Thu Jan 01 00:00:18 1970 +0000
325 | | | | summary: (18) merge two known; two far left
323 | | | | summary: (18) merge two known; two far left
326 | | | |
324 | | | |
327 | o | | changeset: 17:44765d7c06e0
325 | o | | changeset: 17:44765d7c06e0
328 | |\ \ \ parent: 12:86b91144a6e9
326 | |\ \ \ parent: 12:86b91144a6e9
329 | | | | | parent: 16:3677d192927d
327 | | | | | parent: 16:3677d192927d
330 | | | | | user: test
328 | | | | | user: test
331 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
329 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
332 | | | | | summary: (17) expand
330 | | | | | summary: (17) expand
333 | | | | |
331 | | | | |
334 | | o---+ changeset: 16:3677d192927d
332 | | o---+ changeset: 16:3677d192927d
335 | | | | | parent: 0:e6eb3150255d
333 | | | | | parent: 0:e6eb3150255d
336 | | |/ / parent: 1:6db2ef61d156
334 | | |/ / parent: 1:6db2ef61d156
337 | | | | user: test
335 | | | | user: test
338 | | | | date: Thu Jan 01 00:00:16 1970 +0000
336 | | | | date: Thu Jan 01 00:00:16 1970 +0000
339 | | | | summary: (16) merge two known; one immediate right, one near right
337 | | | | summary: (16) merge two known; one immediate right, one near right
340 | | | |
338 | | | |
341 o | | | changeset: 15:1dda3f72782d
339 o | | | changeset: 15:1dda3f72782d
342 |\ \ \ \ parent: 13:22d8966a97e3
340 |\ \ \ \ parent: 13:22d8966a97e3
343 | | | | | parent: 14:8eac370358ef
341 | | | | | parent: 14:8eac370358ef
344 | | | | | user: test
342 | | | | | user: test
345 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
343 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
346 | | | | | summary: (15) expand
344 | | | | | summary: (15) expand
347 | | | | |
345 | | | | |
348 | o-----+ changeset: 14:8eac370358ef
346 | o-----+ changeset: 14:8eac370358ef
349 | | | | | parent: 0:e6eb3150255d
347 | | | | | parent: 0:e6eb3150255d
350 | |/ / / parent: 12:86b91144a6e9
348 | |/ / / parent: 12:86b91144a6e9
351 | | | | user: test
349 | | | | user: test
352 | | | | date: Thu Jan 01 00:00:14 1970 +0000
350 | | | | date: Thu Jan 01 00:00:14 1970 +0000
353 | | | | summary: (14) merge two known; one immediate right, one far right
351 | | | | summary: (14) merge two known; one immediate right, one far right
354 | | | |
352 | | | |
355 o | | | changeset: 13:22d8966a97e3
353 o | | | changeset: 13:22d8966a97e3
356 |\ \ \ \ parent: 9:7010c0af0a35
354 |\ \ \ \ parent: 9:7010c0af0a35
357 | | | | | parent: 11:832d76e6bdf2
355 | | | | | parent: 11:832d76e6bdf2
358 | | | | | user: test
356 | | | | | user: test
359 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
357 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
360 | | | | | summary: (13) expand
358 | | | | | summary: (13) expand
361 | | | | |
359 | | | | |
362 +---o | | changeset: 12:86b91144a6e9
360 +---o | | changeset: 12:86b91144a6e9
363 | | |/ / parent: 1:6db2ef61d156
361 | | |/ / parent: 1:6db2ef61d156
364 | | | | parent: 9:7010c0af0a35
362 | | | | parent: 9:7010c0af0a35
365 | | | | user: test
363 | | | | user: test
366 | | | | date: Thu Jan 01 00:00:12 1970 +0000
364 | | | | date: Thu Jan 01 00:00:12 1970 +0000
367 | | | | summary: (12) merge two known; one immediate right, one far left
365 | | | | summary: (12) merge two known; one immediate right, one far left
368 | | | |
366 | | | |
369 | o | | changeset: 11:832d76e6bdf2
367 | o | | changeset: 11:832d76e6bdf2
370 | |\ \ \ parent: 6:b105a072e251
368 | |\ \ \ parent: 6:b105a072e251
371 | | | | | parent: 10:74c64d036d72
369 | | | | | parent: 10:74c64d036d72
372 | | | | | user: test
370 | | | | | user: test
373 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
371 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
374 | | | | | summary: (11) expand
372 | | | | | summary: (11) expand
375 | | | | |
373 | | | | |
376 | | o---+ changeset: 10:74c64d036d72
374 | | o---+ changeset: 10:74c64d036d72
377 | | | | | parent: 0:e6eb3150255d
375 | | | | | parent: 0:e6eb3150255d
378 | |/ / / parent: 6:b105a072e251
376 | |/ / / parent: 6:b105a072e251
379 | | | | user: test
377 | | | | user: test
380 | | | | date: Thu Jan 01 00:00:10 1970 +0000
378 | | | | date: Thu Jan 01 00:00:10 1970 +0000
381 | | | | summary: (10) merge two known; one immediate left, one near right
379 | | | | summary: (10) merge two known; one immediate left, one near right
382 | | | |
380 | | | |
383 o | | | changeset: 9:7010c0af0a35
381 o | | | changeset: 9:7010c0af0a35
384 |\ \ \ \ parent: 7:b632bb1b1224
382 |\ \ \ \ parent: 7:b632bb1b1224
385 | | | | | parent: 8:7a0b11f71937
383 | | | | | parent: 8:7a0b11f71937
386 | | | | | user: test
384 | | | | | user: test
387 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
385 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
388 | | | | | summary: (9) expand
386 | | | | | summary: (9) expand
389 | | | | |
387 | | | | |
390 | o-----+ changeset: 8:7a0b11f71937
388 | o-----+ changeset: 8:7a0b11f71937
391 | | | | | parent: 0:e6eb3150255d
389 | | | | | parent: 0:e6eb3150255d
392 |/ / / / parent: 7:b632bb1b1224
390 |/ / / / parent: 7:b632bb1b1224
393 | | | | user: test
391 | | | | user: test
394 | | | | date: Thu Jan 01 00:00:08 1970 +0000
392 | | | | date: Thu Jan 01 00:00:08 1970 +0000
395 | | | | summary: (8) merge two known; one immediate left, one far right
393 | | | | summary: (8) merge two known; one immediate left, one far right
396 | | | |
394 | | | |
397 o | | | changeset: 7:b632bb1b1224
395 o | | | changeset: 7:b632bb1b1224
398 |\ \ \ \ parent: 2:3d9a33b8d1e1
396 |\ \ \ \ parent: 2:3d9a33b8d1e1
399 | | | | | parent: 5:4409d547b708
397 | | | | | parent: 5:4409d547b708
400 | | | | | user: test
398 | | | | | user: test
401 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
399 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
402 | | | | | summary: (7) expand
400 | | | | | summary: (7) expand
403 | | | | |
401 | | | | |
404 +---o | | changeset: 6:b105a072e251
402 +---o | | changeset: 6:b105a072e251
405 | |/ / / parent: 2:3d9a33b8d1e1
403 | |/ / / parent: 2:3d9a33b8d1e1
406 | | | | parent: 5:4409d547b708
404 | | | | parent: 5:4409d547b708
407 | | | | user: test
405 | | | | user: test
408 | | | | date: Thu Jan 01 00:00:06 1970 +0000
406 | | | | date: Thu Jan 01 00:00:06 1970 +0000
409 | | | | summary: (6) merge two known; one immediate left, one far left
407 | | | | summary: (6) merge two known; one immediate left, one far left
410 | | | |
408 | | | |
411 | o | | changeset: 5:4409d547b708
409 | o | | changeset: 5:4409d547b708
412 | |\ \ \ parent: 3:27eef8ed80b4
410 | |\ \ \ parent: 3:27eef8ed80b4
413 | | | | | parent: 4:26a8bac39d9f
411 | | | | | parent: 4:26a8bac39d9f
414 | | | | | user: test
412 | | | | | user: test
415 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
413 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
416 | | | | | summary: (5) expand
414 | | | | | summary: (5) expand
417 | | | | |
415 | | | | |
418 | | o | | changeset: 4:26a8bac39d9f
416 | | o | | changeset: 4:26a8bac39d9f
419 | |/|/ / parent: 1:6db2ef61d156
417 | |/|/ / parent: 1:6db2ef61d156
420 | | | | parent: 3:27eef8ed80b4
418 | | | | parent: 3:27eef8ed80b4
421 | | | | user: test
419 | | | | user: test
422 | | | | date: Thu Jan 01 00:00:04 1970 +0000
420 | | | | date: Thu Jan 01 00:00:04 1970 +0000
423 | | | | summary: (4) merge two known; one immediate left, one immediate right
421 | | | | summary: (4) merge two known; one immediate left, one immediate right
424 | | | |
422 | | | |
425 | o | | changeset: 3:27eef8ed80b4
423 | o | | changeset: 3:27eef8ed80b4
426 |/ / / user: test
424 |/ / / user: test
427 | | | date: Thu Jan 01 00:00:03 1970 +0000
425 | | | date: Thu Jan 01 00:00:03 1970 +0000
428 | | | summary: (3) collapse
426 | | | summary: (3) collapse
429 | | |
427 | | |
430 o | | changeset: 2:3d9a33b8d1e1
428 o | | changeset: 2:3d9a33b8d1e1
431 |/ / user: test
429 |/ / user: test
432 | | date: Thu Jan 01 00:00:02 1970 +0000
430 | | date: Thu Jan 01 00:00:02 1970 +0000
433 | | summary: (2) collapse
431 | | summary: (2) collapse
434 | |
432 | |
435 o | changeset: 1:6db2ef61d156
433 o | changeset: 1:6db2ef61d156
436 |/ user: test
434 |/ user: test
437 | date: Thu Jan 01 00:00:01 1970 +0000
435 | date: Thu Jan 01 00:00:01 1970 +0000
438 | summary: (1) collapse
436 | summary: (1) collapse
439 |
437 |
440 o changeset: 0:e6eb3150255d
438 o changeset: 0:e6eb3150255d
441 user: test
439 user: test
442 date: Thu Jan 01 00:00:00 1970 +0000
440 date: Thu Jan 01 00:00:00 1970 +0000
443 summary: (0) root
441 summary: (0) root
444
442
445
443
446 File glog:
444 File glog:
447 $ hg glog a
445 $ hg glog a
448 @ changeset: 34:fea3ac5810e0
446 @ changeset: 34:fea3ac5810e0
449 | tag: tip
447 | tag: tip
450 | parent: 32:d06dffa21a31
448 | parent: 32:d06dffa21a31
451 | user: test
449 | user: test
452 | date: Thu Jan 01 00:00:34 1970 +0000
450 | date: Thu Jan 01 00:00:34 1970 +0000
453 | summary: (34) head
451 | summary: (34) head
454 |
452 |
455 | o changeset: 33:68608f5145f9
453 | o changeset: 33:68608f5145f9
456 | | parent: 18:1aa84d96232a
454 | | parent: 18:1aa84d96232a
457 | | user: test
455 | | user: test
458 | | date: Thu Jan 01 00:00:33 1970 +0000
456 | | date: Thu Jan 01 00:00:33 1970 +0000
459 | | summary: (33) head
457 | | summary: (33) head
460 | |
458 | |
461 o | changeset: 32:d06dffa21a31
459 o | changeset: 32:d06dffa21a31
462 |\ \ parent: 27:886ed638191b
460 |\ \ parent: 27:886ed638191b
463 | | | parent: 31:621d83e11f67
461 | | | parent: 31:621d83e11f67
464 | | | user: test
462 | | | user: test
465 | | | date: Thu Jan 01 00:00:32 1970 +0000
463 | | | date: Thu Jan 01 00:00:32 1970 +0000
466 | | | summary: (32) expand
464 | | | summary: (32) expand
467 | | |
465 | | |
468 | o | changeset: 31:621d83e11f67
466 | o | changeset: 31:621d83e11f67
469 | | | parent: 21:d42a756af44d
467 | | | parent: 21:d42a756af44d
470 | | | parent: 30:6e11cd4b648f
468 | | | parent: 30:6e11cd4b648f
471 | | | user: test
469 | | | user: test
472 | | | date: Thu Jan 01 00:00:31 1970 +0000
470 | | | date: Thu Jan 01 00:00:31 1970 +0000
473 | | | summary: (31) expand
471 | | | summary: (31) expand
474 | | |
472 | | |
475 | o | changeset: 30:6e11cd4b648f
473 | o | changeset: 30:6e11cd4b648f
476 | |\ \ parent: 28:44ecd0b9ae99
474 | |\ \ parent: 28:44ecd0b9ae99
477 | | | | parent: 29:cd9bb2be7593
475 | | | | parent: 29:cd9bb2be7593
478 | | | | user: test
476 | | | | user: test
479 | | | | date: Thu Jan 01 00:00:30 1970 +0000
477 | | | | date: Thu Jan 01 00:00:30 1970 +0000
480 | | | | summary: (30) expand
478 | | | | summary: (30) expand
481 | | | |
479 | | | |
482 | | o | changeset: 29:cd9bb2be7593
480 | | o | changeset: 29:cd9bb2be7593
483 | | | | parent: 0:e6eb3150255d
481 | | | | parent: 0:e6eb3150255d
484 | | | | user: test
482 | | | | user: test
485 | | | | date: Thu Jan 01 00:00:29 1970 +0000
483 | | | | date: Thu Jan 01 00:00:29 1970 +0000
486 | | | | summary: (29) regular commit
484 | | | | summary: (29) regular commit
487 | | | |
485 | | | |
488 | o | | changeset: 28:44ecd0b9ae99
486 | o | | changeset: 28:44ecd0b9ae99
489 | | | | parent: 1:6db2ef61d156
487 | | | | parent: 1:6db2ef61d156
490 | | | | parent: 26:7f25b6c2f0b9
488 | | | | parent: 26:7f25b6c2f0b9
491 | | | | user: test
489 | | | | user: test
492 | | | | date: Thu Jan 01 00:00:28 1970 +0000
490 | | | | date: Thu Jan 01 00:00:28 1970 +0000
493 | | | | summary: (28) merge zero known
491 | | | | summary: (28) merge zero known
494 | | | |
492 | | | |
495 o | | | changeset: 27:886ed638191b
493 o | | | changeset: 27:886ed638191b
496 | | | | parent: 21:d42a756af44d
494 | | | | parent: 21:d42a756af44d
497 | | | | user: test
495 | | | | user: test
498 | | | | date: Thu Jan 01 00:00:27 1970 +0000
496 | | | | date: Thu Jan 01 00:00:27 1970 +0000
499 | | | | summary: (27) collapse
497 | | | | summary: (27) collapse
500 | | | |
498 | | | |
501 | o | | changeset: 26:7f25b6c2f0b9
499 | o | | changeset: 26:7f25b6c2f0b9
502 | | | | parent: 18:1aa84d96232a
500 | | | | parent: 18:1aa84d96232a
503 | | | | parent: 25:91da8ed57247
501 | | | | parent: 25:91da8ed57247
504 | | | | user: test
502 | | | | user: test
505 | | | | date: Thu Jan 01 00:00:26 1970 +0000
503 | | | | date: Thu Jan 01 00:00:26 1970 +0000
506 | | | | summary: (26) merge one known; far right
504 | | | | summary: (26) merge one known; far right
507 | | | |
505 | | | |
508 | o | | changeset: 25:91da8ed57247
506 | o | | changeset: 25:91da8ed57247
509 | | | | parent: 21:d42a756af44d
507 | | | | parent: 21:d42a756af44d
510 | | | | parent: 24:a9c19a3d96b7
508 | | | | parent: 24:a9c19a3d96b7
511 | | | | user: test
509 | | | | user: test
512 | | | | date: Thu Jan 01 00:00:25 1970 +0000
510 | | | | date: Thu Jan 01 00:00:25 1970 +0000
513 | | | | summary: (25) merge one known; far left
511 | | | | summary: (25) merge one known; far left
514 | | | |
512 | | | |
515 | o | | changeset: 24:a9c19a3d96b7
513 | o | | changeset: 24:a9c19a3d96b7
516 | | | | parent: 0:e6eb3150255d
514 | | | | parent: 0:e6eb3150255d
517 | | | | parent: 23:a01cddf0766d
515 | | | | parent: 23:a01cddf0766d
518 | | | | user: test
516 | | | | user: test
519 | | | | date: Thu Jan 01 00:00:24 1970 +0000
517 | | | | date: Thu Jan 01 00:00:24 1970 +0000
520 | | | | summary: (24) merge one known; immediate right
518 | | | | summary: (24) merge one known; immediate right
521 | | | |
519 | | | |
522 | o | | changeset: 23:a01cddf0766d
520 | o | | changeset: 23:a01cddf0766d
523 | | | | parent: 1:6db2ef61d156
521 | | | | parent: 1:6db2ef61d156
524 | | | | parent: 22:e0d9cccacb5d
522 | | | | parent: 22:e0d9cccacb5d
525 | | | | user: test
523 | | | | user: test
526 | | | | date: Thu Jan 01 00:00:23 1970 +0000
524 | | | | date: Thu Jan 01 00:00:23 1970 +0000
527 | | | | summary: (23) merge one known; immediate left
525 | | | | summary: (23) merge one known; immediate left
528 | | | |
526 | | | |
529 | o | | changeset: 22:e0d9cccacb5d
527 | o | | changeset: 22:e0d9cccacb5d
530 |/ / / parent: 18:1aa84d96232a
528 |/ / / parent: 18:1aa84d96232a
531 | | | parent: 21:d42a756af44d
529 | | | parent: 21:d42a756af44d
532 | | | user: test
530 | | | user: test
533 | | | date: Thu Jan 01 00:00:22 1970 +0000
531 | | | date: Thu Jan 01 00:00:22 1970 +0000
534 | | | summary: (22) merge two known; one far left, one far right
532 | | | summary: (22) merge two known; one far left, one far right
535 | | |
533 | | |
536 o | | changeset: 21:d42a756af44d
534 o | | changeset: 21:d42a756af44d
537 |\ \ \ parent: 19:31ddc2c1573b
535 |\ \ \ parent: 19:31ddc2c1573b
538 | | | | parent: 20:d30ed6450e32
536 | | | | parent: 20:d30ed6450e32
539 | | | | user: test
537 | | | | user: test
540 | | | | date: Thu Jan 01 00:00:21 1970 +0000
538 | | | | date: Thu Jan 01 00:00:21 1970 +0000
541 | | | | summary: (21) expand
539 | | | | summary: (21) expand
542 | | | |
540 | | | |
543 | o---+ changeset: 20:d30ed6450e32
541 | o---+ changeset: 20:d30ed6450e32
544 | | | parent: 0:e6eb3150255d
542 | | | parent: 0:e6eb3150255d
545 | / / parent: 18:1aa84d96232a
543 | / / parent: 18:1aa84d96232a
546 | | | user: test
544 | | | user: test
547 | | | date: Thu Jan 01 00:00:20 1970 +0000
545 | | | date: Thu Jan 01 00:00:20 1970 +0000
548 | | | summary: (20) merge two known; two far right
546 | | | summary: (20) merge two known; two far right
549 | | |
547 | | |
550 o | | changeset: 19:31ddc2c1573b
548 o | | changeset: 19:31ddc2c1573b
551 |\ \ \ parent: 15:1dda3f72782d
549 |\ \ \ parent: 15:1dda3f72782d
552 | | | | parent: 17:44765d7c06e0
550 | | | | parent: 17:44765d7c06e0
553 | | | | user: test
551 | | | | user: test
554 | | | | date: Thu Jan 01 00:00:19 1970 +0000
552 | | | | date: Thu Jan 01 00:00:19 1970 +0000
555 | | | | summary: (19) expand
553 | | | | summary: (19) expand
556 | | | |
554 | | | |
557 +-----o changeset: 18:1aa84d96232a
555 +-----o changeset: 18:1aa84d96232a
558 | | | parent: 1:6db2ef61d156
556 | | | parent: 1:6db2ef61d156
559 | | | parent: 15:1dda3f72782d
557 | | | parent: 15:1dda3f72782d
560 | | | user: test
558 | | | user: test
561 | | | date: Thu Jan 01 00:00:18 1970 +0000
559 | | | date: Thu Jan 01 00:00:18 1970 +0000
562 | | | summary: (18) merge two known; two far left
560 | | | summary: (18) merge two known; two far left
563 | | |
561 | | |
564 | o | changeset: 17:44765d7c06e0
562 | o | changeset: 17:44765d7c06e0
565 | |\ \ parent: 12:86b91144a6e9
563 | |\ \ parent: 12:86b91144a6e9
566 | | | | parent: 16:3677d192927d
564 | | | | parent: 16:3677d192927d
567 | | | | user: test
565 | | | | user: test
568 | | | | date: Thu Jan 01 00:00:17 1970 +0000
566 | | | | date: Thu Jan 01 00:00:17 1970 +0000
569 | | | | summary: (17) expand
567 | | | | summary: (17) expand
570 | | | |
568 | | | |
571 | | o | changeset: 16:3677d192927d
569 | | o | changeset: 16:3677d192927d
572 | | | | parent: 0:e6eb3150255d
570 | | | | parent: 0:e6eb3150255d
573 | | | | parent: 1:6db2ef61d156
571 | | | | parent: 1:6db2ef61d156
574 | | | | user: test
572 | | | | user: test
575 | | | | date: Thu Jan 01 00:00:16 1970 +0000
573 | | | | date: Thu Jan 01 00:00:16 1970 +0000
576 | | | | summary: (16) merge two known; one immediate right, one near right
574 | | | | summary: (16) merge two known; one immediate right, one near right
577 | | | |
575 | | | |
578 o | | | changeset: 15:1dda3f72782d
576 o | | | changeset: 15:1dda3f72782d
579 |\ \ \ \ parent: 13:22d8966a97e3
577 |\ \ \ \ parent: 13:22d8966a97e3
580 | | | | | parent: 14:8eac370358ef
578 | | | | | parent: 14:8eac370358ef
581 | | | | | user: test
579 | | | | | user: test
582 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
580 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
583 | | | | | summary: (15) expand
581 | | | | | summary: (15) expand
584 | | | | |
582 | | | | |
585 | o | | | changeset: 14:8eac370358ef
583 | o | | | changeset: 14:8eac370358ef
586 | |/ / / parent: 0:e6eb3150255d
584 | |/ / / parent: 0:e6eb3150255d
587 | | | | parent: 12:86b91144a6e9
585 | | | | parent: 12:86b91144a6e9
588 | | | | user: test
586 | | | | user: test
589 | | | | date: Thu Jan 01 00:00:14 1970 +0000
587 | | | | date: Thu Jan 01 00:00:14 1970 +0000
590 | | | | summary: (14) merge two known; one immediate right, one far right
588 | | | | summary: (14) merge two known; one immediate right, one far right
591 | | | |
589 | | | |
592 o | | | changeset: 13:22d8966a97e3
590 o | | | changeset: 13:22d8966a97e3
593 |\ \ \ \ parent: 9:7010c0af0a35
591 |\ \ \ \ parent: 9:7010c0af0a35
594 | | | | | parent: 11:832d76e6bdf2
592 | | | | | parent: 11:832d76e6bdf2
595 | | | | | user: test
593 | | | | | user: test
596 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
594 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
597 | | | | | summary: (13) expand
595 | | | | | summary: (13) expand
598 | | | | |
596 | | | | |
599 +---o | | changeset: 12:86b91144a6e9
597 +---o | | changeset: 12:86b91144a6e9
600 | | / / parent: 1:6db2ef61d156
598 | | / / parent: 1:6db2ef61d156
601 | | | | parent: 9:7010c0af0a35
599 | | | | parent: 9:7010c0af0a35
602 | | | | user: test
600 | | | | user: test
603 | | | | date: Thu Jan 01 00:00:12 1970 +0000
601 | | | | date: Thu Jan 01 00:00:12 1970 +0000
604 | | | | summary: (12) merge two known; one immediate right, one far left
602 | | | | summary: (12) merge two known; one immediate right, one far left
605 | | | |
603 | | | |
606 | o | | changeset: 11:832d76e6bdf2
604 | o | | changeset: 11:832d76e6bdf2
607 | | | | parent: 6:b105a072e251
605 | | | | parent: 6:b105a072e251
608 | | | | parent: 10:74c64d036d72
606 | | | | parent: 10:74c64d036d72
609 | | | | user: test
607 | | | | user: test
610 | | | | date: Thu Jan 01 00:00:11 1970 +0000
608 | | | | date: Thu Jan 01 00:00:11 1970 +0000
611 | | | | summary: (11) expand
609 | | | | summary: (11) expand
612 | | | |
610 | | | |
613 | o | | changeset: 10:74c64d036d72
611 | o | | changeset: 10:74c64d036d72
614 | | | | parent: 0:e6eb3150255d
612 | | | | parent: 0:e6eb3150255d
615 | | | | parent: 6:b105a072e251
613 | | | | parent: 6:b105a072e251
616 | | | | user: test
614 | | | | user: test
617 | | | | date: Thu Jan 01 00:00:10 1970 +0000
615 | | | | date: Thu Jan 01 00:00:10 1970 +0000
618 | | | | summary: (10) merge two known; one immediate left, one near right
616 | | | | summary: (10) merge two known; one immediate left, one near right
619 | | | |
617 | | | |
620 o | | | changeset: 9:7010c0af0a35
618 o | | | changeset: 9:7010c0af0a35
621 | | | | parent: 7:b632bb1b1224
619 | | | | parent: 7:b632bb1b1224
622 | | | | parent: 8:7a0b11f71937
620 | | | | parent: 8:7a0b11f71937
623 | | | | user: test
621 | | | | user: test
624 | | | | date: Thu Jan 01 00:00:09 1970 +0000
622 | | | | date: Thu Jan 01 00:00:09 1970 +0000
625 | | | | summary: (9) expand
623 | | | | summary: (9) expand
626 | | | |
624 | | | |
627 o | | | changeset: 8:7a0b11f71937
625 o | | | changeset: 8:7a0b11f71937
628 | | | | parent: 0:e6eb3150255d
626 | | | | parent: 0:e6eb3150255d
629 | | | | parent: 7:b632bb1b1224
627 | | | | parent: 7:b632bb1b1224
630 | | | | user: test
628 | | | | user: test
631 | | | | date: Thu Jan 01 00:00:08 1970 +0000
629 | | | | date: Thu Jan 01 00:00:08 1970 +0000
632 | | | | summary: (8) merge two known; one immediate left, one far right
630 | | | | summary: (8) merge two known; one immediate left, one far right
633 | | | |
631 | | | |
634 o | | | changeset: 7:b632bb1b1224
632 o | | | changeset: 7:b632bb1b1224
635 | | | | parent: 2:3d9a33b8d1e1
633 | | | | parent: 2:3d9a33b8d1e1
636 | | | | parent: 5:4409d547b708
634 | | | | parent: 5:4409d547b708
637 | | | | user: test
635 | | | | user: test
638 | | | | date: Thu Jan 01 00:00:07 1970 +0000
636 | | | | date: Thu Jan 01 00:00:07 1970 +0000
639 | | | | summary: (7) expand
637 | | | | summary: (7) expand
640 | | | |
638 | | | |
641 | o | | changeset: 6:b105a072e251
639 | o | | changeset: 6:b105a072e251
642 |/ / / parent: 2:3d9a33b8d1e1
640 |/ / / parent: 2:3d9a33b8d1e1
643 | | | parent: 5:4409d547b708
641 | | | parent: 5:4409d547b708
644 | | | user: test
642 | | | user: test
645 | | | date: Thu Jan 01 00:00:06 1970 +0000
643 | | | date: Thu Jan 01 00:00:06 1970 +0000
646 | | | summary: (6) merge two known; one immediate left, one far left
644 | | | summary: (6) merge two known; one immediate left, one far left
647 | | |
645 | | |
648 o | | changeset: 5:4409d547b708
646 o | | changeset: 5:4409d547b708
649 | | | parent: 3:27eef8ed80b4
647 | | | parent: 3:27eef8ed80b4
650 | | | parent: 4:26a8bac39d9f
648 | | | parent: 4:26a8bac39d9f
651 | | | user: test
649 | | | user: test
652 | | | date: Thu Jan 01 00:00:05 1970 +0000
650 | | | date: Thu Jan 01 00:00:05 1970 +0000
653 | | | summary: (5) expand
651 | | | summary: (5) expand
654 | | |
652 | | |
655 o | | changeset: 4:26a8bac39d9f
653 o | | changeset: 4:26a8bac39d9f
656 | | | parent: 1:6db2ef61d156
654 | | | parent: 1:6db2ef61d156
657 | | | parent: 3:27eef8ed80b4
655 | | | parent: 3:27eef8ed80b4
658 | | | user: test
656 | | | user: test
659 | | | date: Thu Jan 01 00:00:04 1970 +0000
657 | | | date: Thu Jan 01 00:00:04 1970 +0000
660 | | | summary: (4) merge two known; one immediate left, one immediate right
658 | | | summary: (4) merge two known; one immediate left, one immediate right
661 | | |
659 | | |
662 o | | changeset: 3:27eef8ed80b4
660 o | | changeset: 3:27eef8ed80b4
663 | | | user: test
661 | | | user: test
664 | | | date: Thu Jan 01 00:00:03 1970 +0000
662 | | | date: Thu Jan 01 00:00:03 1970 +0000
665 | | | summary: (3) collapse
663 | | | summary: (3) collapse
666 | | |
664 | | |
667 o | | changeset: 2:3d9a33b8d1e1
665 o | | changeset: 2:3d9a33b8d1e1
668 |/ / user: test
666 |/ / user: test
669 | | date: Thu Jan 01 00:00:02 1970 +0000
667 | | date: Thu Jan 01 00:00:02 1970 +0000
670 | | summary: (2) collapse
668 | | summary: (2) collapse
671 | |
669 | |
672 o | changeset: 1:6db2ef61d156
670 o | changeset: 1:6db2ef61d156
673 |/ user: test
671 |/ user: test
674 | date: Thu Jan 01 00:00:01 1970 +0000
672 | date: Thu Jan 01 00:00:01 1970 +0000
675 | summary: (1) collapse
673 | summary: (1) collapse
676 |
674 |
677 o changeset: 0:e6eb3150255d
675 o changeset: 0:e6eb3150255d
678 user: test
676 user: test
679 date: Thu Jan 01 00:00:00 1970 +0000
677 date: Thu Jan 01 00:00:00 1970 +0000
680 summary: (0) root
678 summary: (0) root
681
679
682
680
683 Unused arguments:
681 Unused arguments:
684 $ hg glog -q foo bar || echo failed
682 $ hg glog -q foo bar
685 hg glog: invalid arguments
683 hg glog: invalid arguments
686 hg glog [OPTION]... [FILE]
684 hg glog [OPTION]... [FILE]
687
685
688 show revision history alongside an ASCII revision graph
686 show revision history alongside an ASCII revision graph
689 failed
687 [255]
690
688
691 Empty revision range - display nothing:
689 Empty revision range - display nothing:
692 $ hg glog -r 1..0
690 $ hg glog -r 1..0
693
691
694 From outer space:
692 From outer space:
695 $ cd ..
693 $ cd ..
696 $ hg glog -l1 repo
694 $ hg glog -l1 repo
697 @ changeset: 34:fea3ac5810e0
695 @ changeset: 34:fea3ac5810e0
698 | tag: tip
696 | tag: tip
699 | parent: 32:d06dffa21a31
697 | parent: 32:d06dffa21a31
700 | user: test
698 | user: test
701 | date: Thu Jan 01 00:00:34 1970 +0000
699 | date: Thu Jan 01 00:00:34 1970 +0000
702 | summary: (34) head
700 | summary: (34) head
703 |
701 |
704 $ hg glog -l1 repo/a
702 $ hg glog -l1 repo/a
705 @ changeset: 34:fea3ac5810e0
703 @ changeset: 34:fea3ac5810e0
706 | tag: tip
704 | tag: tip
707 | parent: 32:d06dffa21a31
705 | parent: 32:d06dffa21a31
708 | user: test
706 | user: test
709 | date: Thu Jan 01 00:00:34 1970 +0000
707 | date: Thu Jan 01 00:00:34 1970 +0000
710 | summary: (34) head
708 | summary: (34) head
711 |
709 |
712 $ hg glog -l1 repo/missing
710 $ hg glog -l1 repo/missing
713
711
714 File log with revs != cset revs:
712 File log with revs != cset revs:
715 $ hg init flog
713 $ hg init flog
716 $ cd flog
714 $ cd flog
717 $ echo one >one
715 $ echo one >one
718 $ hg add one
716 $ hg add one
719 $ hg commit -mone
717 $ hg commit -mone
720 $ echo two >two
718 $ echo two >two
721 $ hg add two
719 $ hg add two
722 $ hg commit -mtwo
720 $ hg commit -mtwo
723 $ echo more >two
721 $ echo more >two
724 $ hg commit -mmore
722 $ hg commit -mmore
725 $ hg glog two
723 $ hg glog two
726 @ changeset: 2:12c28321755b
724 @ changeset: 2:12c28321755b
727 | tag: tip
725 | tag: tip
728 | user: test
726 | user: test
729 | date: Thu Jan 01 00:00:00 1970 +0000
727 | date: Thu Jan 01 00:00:00 1970 +0000
730 | summary: more
728 | summary: more
731 |
729 |
732 o changeset: 1:5ac72c0599bf
730 o changeset: 1:5ac72c0599bf
733 user: test
731 user: test
734 date: Thu Jan 01 00:00:00 1970 +0000
732 date: Thu Jan 01 00:00:00 1970 +0000
735 summary: two
733 summary: two
736
734
737
735
738 File log with explicit style (issue 1896):
736 File log with explicit style (issue 1896):
739 $ hg glog --style=default one
737 $ hg glog --style=default one
740 o changeset: 0:3d578b4a1f53
738 o changeset: 0:3d578b4a1f53
741 user: test
739 user: test
742 date: Thu Jan 01 00:00:00 1970 +0000
740 date: Thu Jan 01 00:00:00 1970 +0000
743 summary: one
741 summary: one
744
742
745 $ cd ..
743 $ cd ..
746
744
747 Incoming and outgoing:
745 Incoming and outgoing:
748
746
749 $ hg clone -U -r31 repo repo2
747 $ hg clone -U -r31 repo repo2
750 requesting all changes
748 requesting all changes
751 adding changesets
749 adding changesets
752 adding manifests
750 adding manifests
753 adding file changes
751 adding file changes
754 added 31 changesets with 31 changes to 1 files
752 added 31 changesets with 31 changes to 1 files
755 $ cd repo2
753 $ cd repo2
756
754
757 $ hg incoming --graph ../repo
755 $ hg incoming --graph ../repo
758 comparing with ../repo
756 comparing with ../repo
759 searching for changes
757 searching for changes
760 o changeset: 34:fea3ac5810e0
758 o changeset: 34:fea3ac5810e0
761 | tag: tip
759 | tag: tip
762 | parent: 32:d06dffa21a31
760 | parent: 32:d06dffa21a31
763 | user: test
761 | user: test
764 | date: Thu Jan 01 00:00:34 1970 +0000
762 | date: Thu Jan 01 00:00:34 1970 +0000
765 | summary: (34) head
763 | summary: (34) head
766 |
764 |
767 | o changeset: 33:68608f5145f9
765 | o changeset: 33:68608f5145f9
768 | parent: 18:1aa84d96232a
766 | parent: 18:1aa84d96232a
769 | user: test
767 | user: test
770 | date: Thu Jan 01 00:00:33 1970 +0000
768 | date: Thu Jan 01 00:00:33 1970 +0000
771 | summary: (33) head
769 | summary: (33) head
772 |
770 |
773 o changeset: 32:d06dffa21a31
771 o changeset: 32:d06dffa21a31
774 | parent: 27:886ed638191b
772 | parent: 27:886ed638191b
775 | parent: 31:621d83e11f67
773 | parent: 31:621d83e11f67
776 | user: test
774 | user: test
777 | date: Thu Jan 01 00:00:32 1970 +0000
775 | date: Thu Jan 01 00:00:32 1970 +0000
778 | summary: (32) expand
776 | summary: (32) expand
779 |
777 |
780 o changeset: 27:886ed638191b
778 o changeset: 27:886ed638191b
781 parent: 21:d42a756af44d
779 parent: 21:d42a756af44d
782 user: test
780 user: test
783 date: Thu Jan 01 00:00:27 1970 +0000
781 date: Thu Jan 01 00:00:27 1970 +0000
784 summary: (27) collapse
782 summary: (27) collapse
785
783
786 $ cd ..
784 $ cd ..
787
785
788 $ hg -R repo outgoing --graph repo2
786 $ hg -R repo outgoing --graph repo2
789 comparing with repo2
787 comparing with repo2
790 searching for changes
788 searching for changes
791 @ changeset: 34:fea3ac5810e0
789 @ changeset: 34:fea3ac5810e0
792 | tag: tip
790 | tag: tip
793 | parent: 32:d06dffa21a31
791 | parent: 32:d06dffa21a31
794 | user: test
792 | user: test
795 | date: Thu Jan 01 00:00:34 1970 +0000
793 | date: Thu Jan 01 00:00:34 1970 +0000
796 | summary: (34) head
794 | summary: (34) head
797 |
795 |
798 | o changeset: 33:68608f5145f9
796 | o changeset: 33:68608f5145f9
799 | parent: 18:1aa84d96232a
797 | parent: 18:1aa84d96232a
800 | user: test
798 | user: test
801 | date: Thu Jan 01 00:00:33 1970 +0000
799 | date: Thu Jan 01 00:00:33 1970 +0000
802 | summary: (33) head
800 | summary: (33) head
803 |
801 |
804 o changeset: 32:d06dffa21a31
802 o changeset: 32:d06dffa21a31
805 | parent: 27:886ed638191b
803 | parent: 27:886ed638191b
806 | parent: 31:621d83e11f67
804 | parent: 31:621d83e11f67
807 | user: test
805 | user: test
808 | date: Thu Jan 01 00:00:32 1970 +0000
806 | date: Thu Jan 01 00:00:32 1970 +0000
809 | summary: (32) expand
807 | summary: (32) expand
810 |
808 |
811 o changeset: 27:886ed638191b
809 o changeset: 27:886ed638191b
812 parent: 21:d42a756af44d
810 parent: 21:d42a756af44d
813 user: test
811 user: test
814 date: Thu Jan 01 00:00:27 1970 +0000
812 date: Thu Jan 01 00:00:27 1970 +0000
815 summary: (27) collapse
813 summary: (27) collapse
816
814
817
815
818 File + limit with revs != cset revs:
816 File + limit with revs != cset revs:
819 $ cd repo
817 $ cd repo
820 $ touch b
818 $ touch b
821 $ hg ci -Aqm0
819 $ hg ci -Aqm0
822 $ hg glog -l2 a
820 $ hg glog -l2 a
823 o changeset: 34:fea3ac5810e0
821 o changeset: 34:fea3ac5810e0
824 | parent: 32:d06dffa21a31
822 | parent: 32:d06dffa21a31
825 | user: test
823 | user: test
826 | date: Thu Jan 01 00:00:34 1970 +0000
824 | date: Thu Jan 01 00:00:34 1970 +0000
827 | summary: (34) head
825 | summary: (34) head
828 |
826 |
829 | o changeset: 33:68608f5145f9
827 | o changeset: 33:68608f5145f9
830 | | parent: 18:1aa84d96232a
828 | | parent: 18:1aa84d96232a
831 | | user: test
829 | | user: test
832 | | date: Thu Jan 01 00:00:33 1970 +0000
830 | | date: Thu Jan 01 00:00:33 1970 +0000
833 | | summary: (33) head
831 | | summary: (33) head
834 | |
832 | |
835
833
836 File + limit + -ra:b, (b - a) < limit:
834 File + limit + -ra:b, (b - a) < limit:
837 $ hg glog -l3000 -r32:tip a
835 $ hg glog -l3000 -r32:tip a
838 o changeset: 34:fea3ac5810e0
836 o changeset: 34:fea3ac5810e0
839 | parent: 32:d06dffa21a31
837 | parent: 32:d06dffa21a31
840 | user: test
838 | user: test
841 | date: Thu Jan 01 00:00:34 1970 +0000
839 | date: Thu Jan 01 00:00:34 1970 +0000
842 | summary: (34) head
840 | summary: (34) head
843 |
841 |
844 | o changeset: 33:68608f5145f9
842 | o changeset: 33:68608f5145f9
845 | | parent: 18:1aa84d96232a
843 | | parent: 18:1aa84d96232a
846 | | user: test
844 | | user: test
847 | | date: Thu Jan 01 00:00:33 1970 +0000
845 | | date: Thu Jan 01 00:00:33 1970 +0000
848 | | summary: (33) head
846 | | summary: (33) head
849 | |
847 | |
850 o | changeset: 32:d06dffa21a31
848 o | changeset: 32:d06dffa21a31
851 |\ \ parent: 27:886ed638191b
849 |\ \ parent: 27:886ed638191b
852 | | | parent: 31:621d83e11f67
850 | | | parent: 31:621d83e11f67
853 | | | user: test
851 | | | user: test
854 | | | date: Thu Jan 01 00:00:32 1970 +0000
852 | | | date: Thu Jan 01 00:00:32 1970 +0000
855 | | | summary: (32) expand
853 | | | summary: (32) expand
856 | | |
854 | | |
857
855
858 File + limit + -ra:b, b < tip:
856 File + limit + -ra:b, b < tip:
859 $ hg glog -l1 -r32:34 a
857 $ hg glog -l1 -r32:34 a
860 o changeset: 34:fea3ac5810e0
858 o changeset: 34:fea3ac5810e0
861 | parent: 32:d06dffa21a31
859 | parent: 32:d06dffa21a31
862 | user: test
860 | user: test
863 | date: Thu Jan 01 00:00:34 1970 +0000
861 | date: Thu Jan 01 00:00:34 1970 +0000
864 | summary: (34) head
862 | summary: (34) head
865 |
863 |
866
864
867 File + limit + -ra:b, b < tip, (b - a) < limit:
865 File + limit + -ra:b, b < tip, (b - a) < limit:
868 $ hg glog -l10 -r33:34 a
866 $ hg glog -l10 -r33:34 a
869 o changeset: 34:fea3ac5810e0
867 o changeset: 34:fea3ac5810e0
870 | parent: 32:d06dffa21a31
868 | parent: 32:d06dffa21a31
871 | user: test
869 | user: test
872 | date: Thu Jan 01 00:00:34 1970 +0000
870 | date: Thu Jan 01 00:00:34 1970 +0000
873 | summary: (34) head
871 | summary: (34) head
874 |
872 |
875 | o changeset: 33:68608f5145f9
873 | o changeset: 33:68608f5145f9
876 | | parent: 18:1aa84d96232a
874 | | parent: 18:1aa84d96232a
877 | | user: test
875 | | user: test
878 | | date: Thu Jan 01 00:00:33 1970 +0000
876 | | date: Thu Jan 01 00:00:33 1970 +0000
879 | | summary: (33) head
877 | | summary: (33) head
880 | |
878 | |
881
879
@@ -1,122 +1,121 b''
1 $ mkdir t
1 $ mkdir t
2 $ cd t
2 $ cd t
3 $ hg init
3 $ hg init
4 $ echo 0 > a
4 $ echo 0 > a
5 $ echo 0 > b
5 $ echo 0 > b
6 $ echo 0 > t.h
6 $ echo 0 > t.h
7 $ mkdir t
7 $ mkdir t
8 $ echo 0 > t/x
8 $ echo 0 > t/x
9 $ echo 0 > t/b
9 $ echo 0 > t/b
10 $ echo 0 > t/e.h
10 $ echo 0 > t/e.h
11 $ mkdir dir.h
11 $ mkdir dir.h
12 $ echo 0 > dir.h/foo
12 $ echo 0 > dir.h/foo
13
13
14 $ hg ci -A -m m
14 $ hg ci -A -m m
15 adding a
15 adding a
16 adding b
16 adding b
17 adding dir.h/foo
17 adding dir.h/foo
18 adding t.h
18 adding t.h
19 adding t/b
19 adding t/b
20 adding t/e.h
20 adding t/e.h
21 adding t/x
21 adding t/x
22
22
23 $ touch nottracked
23 $ touch nottracked
24
24
25 $ hg locate a && echo locate succeeded || echo locate failed
25 $ hg locate a
26 a
26 a
27 locate succeeded
28
27
29 $ hg locate NONEXISTENT && echo locate succeeded || echo locate failed
28 $ hg locate NONEXISTENT
30 locate failed
29 [1]
31
30
32 $ hg locate
31 $ hg locate
33 a
32 a
34 b
33 b
35 dir.h/foo
34 dir.h/foo
36 t.h
35 t.h
37 t/b
36 t/b
38 t/e.h
37 t/e.h
39 t/x
38 t/x
40
39
41 $ hg rm a
40 $ hg rm a
42 $ hg ci -m m
41 $ hg ci -m m
43
42
44 $ hg locate a
43 $ hg locate a
45 [1]
44 [1]
46 $ hg locate NONEXISTENT
45 $ hg locate NONEXISTENT
47 [1]
46 [1]
48 $ hg locate relpath:NONEXISTENT
47 $ hg locate relpath:NONEXISTENT
49 [1]
48 [1]
50 $ hg locate
49 $ hg locate
51 b
50 b
52 dir.h/foo
51 dir.h/foo
53 t.h
52 t.h
54 t/b
53 t/b
55 t/e.h
54 t/e.h
56 t/x
55 t/x
57 $ hg locate -r 0 a
56 $ hg locate -r 0 a
58 a
57 a
59 $ hg locate -r 0 NONEXISTENT
58 $ hg locate -r 0 NONEXISTENT
60 [1]
59 [1]
61 $ hg locate -r 0 relpath:NONEXISTENT
60 $ hg locate -r 0 relpath:NONEXISTENT
62 [1]
61 [1]
63 $ hg locate -r 0
62 $ hg locate -r 0
64 a
63 a
65 b
64 b
66 dir.h/foo
65 dir.h/foo
67 t.h
66 t.h
68 t/b
67 t/b
69 t/e.h
68 t/e.h
70 t/x
69 t/x
71
70
72 -I/-X with relative path should work:
71 -I/-X with relative path should work:
73
72
74 $ cd t
73 $ cd t
75 $ hg locate
74 $ hg locate
76 b
75 b
77 dir.h/foo
76 dir.h/foo
78 t.h
77 t.h
79 t/b
78 t/b
80 t/e.h
79 t/e.h
81 t/x
80 t/x
82 $ hg locate -I ../t
81 $ hg locate -I ../t
83 t/b
82 t/b
84 t/e.h
83 t/e.h
85 t/x
84 t/x
86
85
87 Test issue294:
86 Test issue294:
88
87
89 $ cd ..
88 $ cd ..
90 $ rm -r t
89 $ rm -r t
91
90
92 $ hg locate 't/**'
91 $ hg locate 't/**'
93 t/b
92 t/b
94 t/e.h
93 t/e.h
95 t/x
94 t/x
96
95
97 $ mkdir otherdir
96 $ mkdir otherdir
98 $ cd otherdir
97 $ cd otherdir
99
98
100 $ hg locate b
99 $ hg locate b
101 ../b
100 ../b
102 ../t/b
101 ../t/b
103 $ hg locate '*.h'
102 $ hg locate '*.h'
104 ../t.h
103 ../t.h
105 ../t/e.h
104 ../t/e.h
106 $ hg locate path:t/x
105 $ hg locate path:t/x
107 ../t/x
106 ../t/x
108 $ hg locate 're:.*\.h$'
107 $ hg locate 're:.*\.h$'
109 ../t.h
108 ../t.h
110 ../t/e.h
109 ../t/e.h
111 $ hg locate -r 0 b
110 $ hg locate -r 0 b
112 ../b
111 ../b
113 ../t/b
112 ../t/b
114 $ hg locate -r 0 '*.h'
113 $ hg locate -r 0 '*.h'
115 ../t.h
114 ../t.h
116 ../t/e.h
115 ../t/e.h
117 $ hg locate -r 0 path:t/x
116 $ hg locate -r 0 path:t/x
118 ../t/x
117 ../t/x
119 $ hg locate -r 0 're:.*\.h$'
118 $ hg locate -r 0 're:.*\.h$'
120 ../t.h
119 ../t.h
121 ../t/e.h
120 ../t/e.h
122
121
@@ -1,143 +1,142 b''
1 Test for
1 Test for
2 b5605d88dc27: Make ui.prompt repeat on "unrecognized response" again
2 b5605d88dc27: Make ui.prompt repeat on "unrecognized response" again
3 (issue897)
3 (issue897)
4
4
5 840e2b315c1f: Fix misleading error and prompts during update/merge
5 840e2b315c1f: Fix misleading error and prompts during update/merge
6 (issue556)
6 (issue556)
7
7
8 $ status() {
8 $ status() {
9 > [ $? -ne 0 ] && echo "failed."
10 > echo "--- status ---"
9 > echo "--- status ---"
11 > hg st -A file1 file2
10 > hg st -A file1 file2
12 > for file in file1 file2; do
11 > for file in file1 file2; do
13 > if [ -f $file ]; then
12 > if [ -f $file ]; then
14 > echo "--- $file ---"
13 > echo "--- $file ---"
15 > cat $file
14 > cat $file
16 > else
15 > else
17 > echo "*** $file does not exist"
16 > echo "*** $file does not exist"
18 > fi
17 > fi
19 > done
18 > done
20 > }
19 > }
21
20
22 $ hg init
21 $ hg init
23
22
24 $ echo 1 > file1
23 $ echo 1 > file1
25 $ echo 2 > file2
24 $ echo 2 > file2
26 $ hg ci -Am 'added file1 and file2'
25 $ hg ci -Am 'added file1 and file2'
27 adding file1
26 adding file1
28 adding file2
27 adding file2
29
28
30 $ hg rm file1
29 $ hg rm file1
31 $ echo changed >> file2
30 $ echo changed >> file2
32 $ hg ci -m 'removed file1, changed file2'
31 $ hg ci -m 'removed file1, changed file2'
33
32
34 $ hg co 0
33 $ hg co 0
35 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
34 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
36
35
37 $ echo changed >> file1
36 $ echo changed >> file1
38 $ hg rm file2
37 $ hg rm file2
39 $ hg ci -m 'changed file1, removed file2'
38 $ hg ci -m 'changed file1, removed file2'
40 created new head
39 created new head
41
40
42
41
43 Non-interactive merge:
42 Non-interactive merge:
44
43
45 $ hg merge -y || echo "failed"
44 $ hg merge -y
46 local changed file1 which remote deleted
45 local changed file1 which remote deleted
47 use (c)hanged version or (d)elete? c
46 use (c)hanged version or (d)elete? c
48 remote changed file2 which local deleted
47 remote changed file2 which local deleted
49 use (c)hanged version or leave (d)eleted? c
48 use (c)hanged version or leave (d)eleted? c
50 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
49 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
51 (branch merge, don't forget to commit)
50 (branch merge, don't forget to commit)
52
51
53 $ status
52 $ status
54 --- status ---
53 --- status ---
55 M file2
54 M file2
56 C file1
55 C file1
57 --- file1 ---
56 --- file1 ---
58 1
57 1
59 changed
58 changed
60 --- file2 ---
59 --- file2 ---
61 2
60 2
62 changed
61 changed
63
62
64
63
65 Interactive merge:
64 Interactive merge:
66
65
67 $ hg co -C
66 $ hg co -C
68 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
67 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
69
68
70 $ hg merge --config ui.interactive=true <<EOF || echo "failed"
69 $ hg merge --config ui.interactive=true <<EOF
71 > c
70 > c
72 > d
71 > d
73 > EOF
72 > EOF
74 local changed file1 which remote deleted
73 local changed file1 which remote deleted
75 use (c)hanged version or (d)elete? remote changed file2 which local deleted
74 use (c)hanged version or (d)elete? remote changed file2 which local deleted
76 use (c)hanged version or leave (d)eleted? 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 use (c)hanged version or leave (d)eleted? 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
77 (branch merge, don't forget to commit)
76 (branch merge, don't forget to commit)
78
77
79 $ status
78 $ status
80 --- status ---
79 --- status ---
81 file2: No such file or directory
80 file2: No such file or directory
82 C file1
81 C file1
83 --- file1 ---
82 --- file1 ---
84 1
83 1
85 changed
84 changed
86 *** file2 does not exist
85 *** file2 does not exist
87
86
88
87
89 Interactive merge with bad input:
88 Interactive merge with bad input:
90
89
91 $ hg co -C
90 $ hg co -C
92 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
91 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
93
92
94 $ hg merge --config ui.interactive=true <<EOF || echo "failed"
93 $ hg merge --config ui.interactive=true <<EOF
95 > foo
94 > foo
96 > bar
95 > bar
97 > d
96 > d
98 > baz
97 > baz
99 > c
98 > c
100 > EOF
99 > EOF
101 local changed file1 which remote deleted
100 local changed file1 which remote deleted
102 use (c)hanged version or (d)elete? unrecognized response
101 use (c)hanged version or (d)elete? unrecognized response
103 local changed file1 which remote deleted
102 local changed file1 which remote deleted
104 use (c)hanged version or (d)elete? unrecognized response
103 use (c)hanged version or (d)elete? unrecognized response
105 local changed file1 which remote deleted
104 local changed file1 which remote deleted
106 use (c)hanged version or (d)elete? remote changed file2 which local deleted
105 use (c)hanged version or (d)elete? remote changed file2 which local deleted
107 use (c)hanged version or leave (d)eleted? unrecognized response
106 use (c)hanged version or leave (d)eleted? unrecognized response
108 remote changed file2 which local deleted
107 remote changed file2 which local deleted
109 use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
108 use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
110 (branch merge, don't forget to commit)
109 (branch merge, don't forget to commit)
111
110
112 $ status
111 $ status
113 --- status ---
112 --- status ---
114 M file2
113 M file2
115 R file1
114 R file1
116 *** file1 does not exist
115 *** file1 does not exist
117 --- file2 ---
116 --- file2 ---
118 2
117 2
119 changed
118 changed
120
119
121
120
122 Interactive merge with not enough input:
121 Interactive merge with not enough input:
123
122
124 $ hg co -C
123 $ hg co -C
125 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
124 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
126
125
127 $ hg merge --config ui.interactive=true <<EOF || echo "failed"
126 $ hg merge --config ui.interactive=true <<EOF
128 > d
127 > d
129 > EOF
128 > EOF
130 local changed file1 which remote deleted
129 local changed file1 which remote deleted
131 use (c)hanged version or (d)elete? remote changed file2 which local deleted
130 use (c)hanged version or (d)elete? remote changed file2 which local deleted
132 use (c)hanged version or leave (d)eleted? abort: response expected
131 use (c)hanged version or leave (d)eleted? abort: response expected
133 failed
132 [255]
134
133
135 $ status
134 $ status
136 --- status ---
135 --- status ---
137 file2: No such file or directory
136 file2: No such file or directory
138 C file1
137 C file1
139 --- file1 ---
138 --- file1 ---
140 1
139 1
141 changed
140 changed
142 *** file2 does not exist
141 *** file2 does not exist
143
142
@@ -1,1390 +1,1368 b''
1 $ checkundo()
1 $ checkundo()
2 > {
2 > {
3 > if [ -f .hg/store/undo ]; then
3 > if [ -f .hg/store/undo ]; then
4 > echo ".hg/store/undo still exists after $1"
4 > echo ".hg/store/undo still exists after $1"
5 > fi
5 > fi
6 > }
6 > }
7
7
8 $ echo "[extensions]" >> $HGRCPATH
8 $ echo "[extensions]" >> $HGRCPATH
9 $ echo "mq=" >> $HGRCPATH
9 $ echo "mq=" >> $HGRCPATH
10
10
11 $ echo "[mq]" >> $HGRCPATH
11 $ echo "[mq]" >> $HGRCPATH
12 $ echo "plain=true" >> $HGRCPATH
12 $ echo "plain=true" >> $HGRCPATH
13
13
14
14
15 help
15 help
16
16
17 $ hg help mq
17 $ hg help mq
18 mq extension - manage a stack of patches
18 mq extension - manage a stack of patches
19
19
20 This extension lets you work with a stack of patches in a Mercurial
20 This extension lets you work with a stack of patches in a Mercurial
21 repository. It manages two stacks of patches - all known patches, and applied
21 repository. It manages two stacks of patches - all known patches, and applied
22 patches (subset of known patches).
22 patches (subset of known patches).
23
23
24 Known patches are represented as patch files in the .hg/patches directory.
24 Known patches are represented as patch files in the .hg/patches directory.
25 Applied patches are both patch files and changesets.
25 Applied patches are both patch files and changesets.
26
26
27 Common tasks (use "hg help command" for more details):
27 Common tasks (use "hg help command" for more details):
28
28
29 create new patch qnew
29 create new patch qnew
30 import existing patch qimport
30 import existing patch qimport
31
31
32 print patch series qseries
32 print patch series qseries
33 print applied patches qapplied
33 print applied patches qapplied
34
34
35 add known patch to applied stack qpush
35 add known patch to applied stack qpush
36 remove patch from applied stack qpop
36 remove patch from applied stack qpop
37 refresh contents of top applied patch qrefresh
37 refresh contents of top applied patch qrefresh
38
38
39 By default, mq will automatically use git patches when required to avoid
39 By default, mq will automatically use git patches when required to avoid
40 losing file mode changes, copy records, binary files or empty files creations
40 losing file mode changes, copy records, binary files or empty files creations
41 or deletions. This behaviour can be configured with:
41 or deletions. This behaviour can be configured with:
42
42
43 [mq]
43 [mq]
44 git = auto/keep/yes/no
44 git = auto/keep/yes/no
45
45
46 If set to 'keep', mq will obey the [diff] section configuration while
46 If set to 'keep', mq will obey the [diff] section configuration while
47 preserving existing git patches upon qrefresh. If set to 'yes' or 'no', mq
47 preserving existing git patches upon qrefresh. If set to 'yes' or 'no', mq
48 will override the [diff] section and always generate git or regular patches,
48 will override the [diff] section and always generate git or regular patches,
49 possibly losing data in the second case.
49 possibly losing data in the second case.
50
50
51 You will by default be managing a patch queue named "patches". You can create
51 You will by default be managing a patch queue named "patches". You can create
52 other, independent patch queues with the "hg qqueue" command.
52 other, independent patch queues with the "hg qqueue" command.
53
53
54 list of commands:
54 list of commands:
55
55
56 qapplied print the patches already applied
56 qapplied print the patches already applied
57 qclone clone main and patch repository at same time
57 qclone clone main and patch repository at same time
58 qdelete remove patches from queue
58 qdelete remove patches from queue
59 qdiff diff of the current patch and subsequent modifications
59 qdiff diff of the current patch and subsequent modifications
60 qfinish move applied patches into repository history
60 qfinish move applied patches into repository history
61 qfold fold the named patches into the current patch
61 qfold fold the named patches into the current patch
62 qgoto push or pop patches until named patch is at top of stack
62 qgoto push or pop patches until named patch is at top of stack
63 qguard set or print guards for a patch
63 qguard set or print guards for a patch
64 qheader print the header of the topmost or specified patch
64 qheader print the header of the topmost or specified patch
65 qimport import a patch
65 qimport import a patch
66 qnew create a new patch
66 qnew create a new patch
67 qnext print the name of the next patch
67 qnext print the name of the next patch
68 qpop pop the current patch off the stack
68 qpop pop the current patch off the stack
69 qprev print the name of the previous patch
69 qprev print the name of the previous patch
70 qpush push the next patch onto the stack
70 qpush push the next patch onto the stack
71 qqueue manage multiple patch queues
71 qqueue manage multiple patch queues
72 qrefresh update the current patch
72 qrefresh update the current patch
73 qrename rename a patch
73 qrename rename a patch
74 qselect set or print guarded patches to push
74 qselect set or print guarded patches to push
75 qseries print the entire series file
75 qseries print the entire series file
76 qtop print the name of the current patch
76 qtop print the name of the current patch
77 qunapplied print the patches not yet applied
77 qunapplied print the patches not yet applied
78 strip strip changesets and all their descendants from the repository
78 strip strip changesets and all their descendants from the repository
79
79
80 use "hg -v help mq" to show aliases and global options
80 use "hg -v help mq" to show aliases and global options
81
81
82 $ hg init a
82 $ hg init a
83 $ cd a
83 $ cd a
84 $ echo a > a
84 $ echo a > a
85 $ hg ci -Ama
85 $ hg ci -Ama
86 adding a
86 adding a
87
87
88 $ hg clone . ../k
88 $ hg clone . ../k
89 updating to branch default
89 updating to branch default
90 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
90 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
91
91
92 $ mkdir b
92 $ mkdir b
93 $ echo z > b/z
93 $ echo z > b/z
94 $ hg ci -Ama
94 $ hg ci -Ama
95 adding b/z
95 adding b/z
96
96
97
97
98 qinit
98 qinit
99
99
100 $ hg qinit
100 $ hg qinit
101
101
102 $ cd ..
102 $ cd ..
103 $ hg init b
103 $ hg init b
104
104
105
105
106 -R qinit
106 -R qinit
107
107
108 $ hg -R b qinit
108 $ hg -R b qinit
109
109
110 $ hg init c
110 $ hg init c
111
111
112
112
113 qinit -c
113 qinit -c
114
114
115 $ hg --cwd c qinit -c
115 $ hg --cwd c qinit -c
116 $ hg -R c/.hg/patches st
116 $ hg -R c/.hg/patches st
117 A .hgignore
117 A .hgignore
118 A series
118 A series
119
119
120
120
121 qinit; qinit -c
121 qinit; qinit -c
122
122
123 $ hg init d
123 $ hg init d
124 $ cd d
124 $ cd d
125 $ hg qinit
125 $ hg qinit
126 $ hg qinit -c
126 $ hg qinit -c
127
127
128 qinit -c should create both files if they don't exist
128 qinit -c should create both files if they don't exist
129
129
130 $ cat .hg/patches/.hgignore
130 $ cat .hg/patches/.hgignore
131 ^\.hg
131 ^\.hg
132 ^\.mq
132 ^\.mq
133 syntax: glob
133 syntax: glob
134 status
134 status
135 guards
135 guards
136 $ cat .hg/patches/series
136 $ cat .hg/patches/series
137 $ hg qinit -c
137 $ hg qinit -c
138 abort: repository .* already exists!
138 abort: repository .* already exists!
139 [255]
139 [255]
140 $ cd ..
140 $ cd ..
141
141
142 $ echo '% qinit; <stuff>; qinit -c'
142 $ echo '% qinit; <stuff>; qinit -c'
143 % qinit; <stuff>; qinit -c
143 % qinit; <stuff>; qinit -c
144 $ hg init e
144 $ hg init e
145 $ cd e
145 $ cd e
146 $ hg qnew A
146 $ hg qnew A
147 $ checkundo qnew
147 $ checkundo qnew
148 $ echo foo > foo
148 $ echo foo > foo
149 $ hg add foo
149 $ hg add foo
150 $ hg qrefresh
150 $ hg qrefresh
151 $ hg qnew B
151 $ hg qnew B
152 $ echo >> foo
152 $ echo >> foo
153 $ hg qrefresh
153 $ hg qrefresh
154 $ echo status >> .hg/patches/.hgignore
154 $ echo status >> .hg/patches/.hgignore
155 $ echo bleh >> .hg/patches/.hgignore
155 $ echo bleh >> .hg/patches/.hgignore
156 $ hg qinit -c
156 $ hg qinit -c
157 adding .hg/patches/A
157 adding .hg/patches/A
158 adding .hg/patches/B
158 adding .hg/patches/B
159 $ hg -R .hg/patches status
159 $ hg -R .hg/patches status
160 A .hgignore
160 A .hgignore
161 A A
161 A A
162 A B
162 A B
163 A series
163 A series
164
164
165 qinit -c shouldn't touch these files if they already exist
165 qinit -c shouldn't touch these files if they already exist
166
166
167 $ cat .hg/patches/.hgignore
167 $ cat .hg/patches/.hgignore
168 status
168 status
169 bleh
169 bleh
170 $ cat .hg/patches/series
170 $ cat .hg/patches/series
171 A
171 A
172 B
172 B
173
173
174 add an untracked file
174 add an untracked file
175
175
176 $ echo >> .hg/patches/flaf
176 $ echo >> .hg/patches/flaf
177
177
178 status --mq with color (issue2096)
178 status --mq with color (issue2096)
179
179
180 $ hg status --mq --config extensions.color= --color=always
180 $ hg status --mq --config extensions.color= --color=always
181 A .hgignore
181 A .hgignore
182 A A
182 A A
183 A B
183 A B
184 A series
184 A series
185 ? flaf
185 ? flaf
186
186
187 try the --mq option on a command provided by an extension
187 try the --mq option on a command provided by an extension
188
188
189 $ hg purge --mq --verbose --config extensions.purge=
189 $ hg purge --mq --verbose --config extensions.purge=
190 Removing file flaf
190 Removing file flaf
191
191
192 $ cd ..
192 $ cd ..
193
193
194 init --mq without repo
194 init --mq without repo
195
195
196 $ mkdir f
196 $ mkdir f
197 $ cd f
197 $ cd f
198 $ hg init --mq
198 $ hg init --mq
199 abort: there is no Mercurial repository here (.hg not found)
199 abort: there is no Mercurial repository here (.hg not found)
200 [255]
200 [255]
201 $ cd ..
201 $ cd ..
202
202
203 init --mq with repo path
203 init --mq with repo path
204
204
205 $ hg init g
205 $ hg init g
206 $ hg init --mq g
206 $ hg init --mq g
207 $ test -d g/.hg/patches/.hg && echo "ok" || echo "failed"
207 $ test -d g/.hg/patches/.hg
208 ok
209
208
210 init --mq with nonexistent directory
209 init --mq with nonexistent directory
211
210
212 $ hg init --mq nonexistentdir
211 $ hg init --mq nonexistentdir
213 abort: repository nonexistentdir not found!
212 abort: repository nonexistentdir not found!
214 [255]
213 [255]
215
214
216
215
217 init --mq with bundle (non "local")
216 init --mq with bundle (non "local")
218
217
219 $ hg -R a bundle --all a.bundle >/dev/null
218 $ hg -R a bundle --all a.bundle >/dev/null
220 $ hg init --mq a.bundle
219 $ hg init --mq a.bundle
221 abort: only a local queue repository may be initialized
220 abort: only a local queue repository may be initialized
222 [255]
221 [255]
223
222
224 $ cd a
223 $ cd a
225
224
226 $ hg qnew -m 'foo bar' test.patch
225 $ hg qnew -m 'foo bar' test.patch
227
226
228 $ echo '# comment' > .hg/patches/series.tmp
227 $ echo '# comment' > .hg/patches/series.tmp
229 $ echo >> .hg/patches/series.tmp # empty line
228 $ echo >> .hg/patches/series.tmp # empty line
230 $ cat .hg/patches/series >> .hg/patches/series.tmp
229 $ cat .hg/patches/series >> .hg/patches/series.tmp
231 $ mv .hg/patches/series.tmp .hg/patches/series
230 $ mv .hg/patches/series.tmp .hg/patches/series
232
231
233
232
234 qrefresh
233 qrefresh
235
234
236 $ echo a >> a
235 $ echo a >> a
237 $ hg qrefresh
236 $ hg qrefresh
238 $ cat .hg/patches/test.patch
237 $ cat .hg/patches/test.patch
239 foo bar
238 foo bar
240
239
241 diff -r [a-f0-9]* a
240 diff -r [a-f0-9]* a
242 --- a/a\t(?P<date>.*)
241 --- a/a\t(?P<date>.*)
243 \+\+\+ b/a\t(?P<date2>.*)
242 \+\+\+ b/a\t(?P<date2>.*)
244 @@ -1,1 +1,2 @@
243 @@ -1,1 +1,2 @@
245 a
244 a
246 +a
245 +a
247
246
248 empty qrefresh
247 empty qrefresh
249
248
250 $ hg qrefresh -X a
249 $ hg qrefresh -X a
251
250
252 revision:
251 revision:
253
252
254 $ hg diff -r -2 -r -1
253 $ hg diff -r -2 -r -1
255
254
256 patch:
255 patch:
257
256
258 $ cat .hg/patches/test.patch
257 $ cat .hg/patches/test.patch
259 foo bar
258 foo bar
260
259
261
260
262 working dir diff:
261 working dir diff:
263
262
264 $ hg diff --nodates -q
263 $ hg diff --nodates -q
265 --- a/a
264 --- a/a
266 +++ b/a
265 +++ b/a
267 @@ -1,1 +1,2 @@
266 @@ -1,1 +1,2 @@
268 a
267 a
269 +a
268 +a
270
269
271 restore things
270 restore things
272
271
273 $ hg qrefresh
272 $ hg qrefresh
274 $ checkundo qrefresh
273 $ checkundo qrefresh
275
274
276
275
277 qpop
276 qpop
278
277
279 $ hg qpop
278 $ hg qpop
280 popping test.patch
279 popping test.patch
281 patch queue now empty
280 patch queue now empty
282 $ checkundo qpop
281 $ checkundo qpop
283
282
284
283
285 qpush with dump of tag cache
284 qpush with dump of tag cache
286 Dump the tag cache to ensure that it has exactly one head after qpush.
285 Dump the tag cache to ensure that it has exactly one head after qpush.
287
286
288 $ rm -f .hg/tags.cache
287 $ rm -f .hg/tags.cache
289 $ hg tags > /dev/null
288 $ hg tags > /dev/null
290
289
291 .hg/tags.cache (pre qpush):
290 .hg/tags.cache (pre qpush):
292
291
293 $ cat .hg/tags.cache
292 $ cat .hg/tags.cache
294 1 [\da-f]{40}
293 1 [\da-f]{40}
295
294
296 $ hg qpush
295 $ hg qpush
297 applying test.patch
296 applying test.patch
298 now at: test.patch
297 now at: test.patch
299 $ hg tags > /dev/null
298 $ hg tags > /dev/null
300
299
301 .hg/tags.cache (post qpush):
300 .hg/tags.cache (post qpush):
302
301
303 $ cat .hg/tags.cache
302 $ cat .hg/tags.cache
304 2 [\da-f]{40}
303 2 [\da-f]{40}
305
304
306 $ checkundo qpush
305 $ checkundo qpush
307 $ cd ..
306 $ cd ..
308
307
309
308
310 pop/push outside repo
309 pop/push outside repo
311 $ hg -R a qpop
310 $ hg -R a qpop
312 popping test.patch
311 popping test.patch
313 patch queue now empty
312 patch queue now empty
314 $ hg -R a qpush
313 $ hg -R a qpush
315 applying test.patch
314 applying test.patch
316 now at: test.patch
315 now at: test.patch
317
316
318 $ cd a
317 $ cd a
319 $ hg qnew test2.patch
318 $ hg qnew test2.patch
320
319
321 qrefresh in subdir
320 qrefresh in subdir
322
321
323 $ cd b
322 $ cd b
324 $ echo a > a
323 $ echo a > a
325 $ hg add a
324 $ hg add a
326 $ hg qrefresh
325 $ hg qrefresh
327
326
328 pop/push -a in subdir
327 pop/push -a in subdir
329
328
330 $ hg qpop -a
329 $ hg qpop -a
331 popping test2.patch
330 popping test2.patch
332 popping test.patch
331 popping test.patch
333 patch queue now empty
332 patch queue now empty
334 $ hg --traceback qpush -a
333 $ hg --traceback qpush -a
335 applying test.patch
334 applying test.patch
336 applying test2.patch
335 applying test2.patch
337 now at: test2.patch
336 now at: test2.patch
338
337
339
338
340 setting columns & formatted tests truncating (issue1912)
339 setting columns & formatted tests truncating (issue1912)
341
340
342 $ COLUMNS=4 hg qseries --config ui.formatted=true
341 $ COLUMNS=4 hg qseries --config ui.formatted=true
343 test.patch
342 test.patch
344 test2.patch
343 test2.patch
345 $ COLUMNS=20 hg qseries --config ui.formatted=true -vs
344 $ COLUMNS=20 hg qseries --config ui.formatted=true -vs
346 0 A test.patch: f...
345 0 A test.patch: f...
347 1 A test2.patch:
346 1 A test2.patch:
348 $ hg qpop
347 $ hg qpop
349 popping test2.patch
348 popping test2.patch
350 now at: test.patch
349 now at: test.patch
351 $ hg qseries -vs
350 $ hg qseries -vs
352 0 A test.patch: foo bar
351 0 A test.patch: foo bar
353 1 U test2.patch:
352 1 U test2.patch:
354 $ hg sum | grep mq
353 $ hg sum | grep mq
355 mq: 1 applied, 1 unapplied
354 mq: 1 applied, 1 unapplied
356 $ hg qpush
355 $ hg qpush
357 applying test2.patch
356 applying test2.patch
358 now at: test2.patch
357 now at: test2.patch
359 $ hg sum | grep mq
358 $ hg sum | grep mq
360 mq: 2 applied
359 mq: 2 applied
361 $ hg qapplied
360 $ hg qapplied
362 test.patch
361 test.patch
363 test2.patch
362 test2.patch
364 $ hg qtop
363 $ hg qtop
365 test2.patch
364 test2.patch
366
365
367
366
368 prev
367 prev
369
368
370 $ hg qapp -1
369 $ hg qapp -1
371 test.patch
370 test.patch
372
371
373 next
372 next
374
373
375 $ hg qunapp -1
374 $ hg qunapp -1
376 all patches applied
375 all patches applied
377 [1]
376 [1]
378
377
379 $ hg qpop
378 $ hg qpop
380 popping test2.patch
379 popping test2.patch
381 now at: test.patch
380 now at: test.patch
382
381
383 commit should fail
382 commit should fail
384
383
385 $ hg commit
384 $ hg commit
386 abort: cannot commit over an applied mq patch
385 abort: cannot commit over an applied mq patch
387 [255]
386 [255]
388
387
389 push should fail
388 push should fail
390
389
391 $ hg push ../../k
390 $ hg push ../../k
392 pushing to ../../k
391 pushing to ../../k
393 abort: source has mq patches applied
392 abort: source has mq patches applied
394 [255]
393 [255]
395
394
396
395
397 import should fail
396 import should fail
398
397
399 $ hg st .
398 $ hg st .
400 $ echo foo >> ../a
399 $ echo foo >> ../a
401 $ hg diff > ../../import.diff
400 $ hg diff > ../../import.diff
402 $ hg revert --no-backup ../a
401 $ hg revert --no-backup ../a
403 $ hg import ../../import.diff
402 $ hg import ../../import.diff
404 abort: cannot import over an applied patch
403 abort: cannot import over an applied patch
405 [255]
404 [255]
406 $ hg st
405 $ hg st
407
406
408 import --no-commit should succeed
407 import --no-commit should succeed
409
408
410 $ hg import --no-commit ../../import.diff
409 $ hg import --no-commit ../../import.diff
411 applying ../../import.diff
410 applying ../../import.diff
412 $ hg st
411 $ hg st
413 M a
412 M a
414 $ hg revert --no-backup ../a
413 $ hg revert --no-backup ../a
415
414
416
415
417 qunapplied
416 qunapplied
418
417
419 $ hg qunapplied
418 $ hg qunapplied
420 test2.patch
419 test2.patch
421
420
422
421
423 qpush/qpop with index
422 qpush/qpop with index
424
423
425 $ hg qnew test1b.patch
424 $ hg qnew test1b.patch
426 $ echo 1b > 1b
425 $ echo 1b > 1b
427 $ hg add 1b
426 $ hg add 1b
428 $ hg qrefresh
427 $ hg qrefresh
429 $ hg qpush 2
428 $ hg qpush 2
430 applying test2.patch
429 applying test2.patch
431 now at: test2.patch
430 now at: test2.patch
432 $ hg qpop 0
431 $ hg qpop 0
433 popping test2.patch
432 popping test2.patch
434 popping test1b.patch
433 popping test1b.patch
435 now at: test.patch
434 now at: test.patch
436 $ hg qpush test.patch+1
435 $ hg qpush test.patch+1
437 applying test1b.patch
436 applying test1b.patch
438 now at: test1b.patch
437 now at: test1b.patch
439 $ hg qpush test.patch+2
438 $ hg qpush test.patch+2
440 applying test2.patch
439 applying test2.patch
441 now at: test2.patch
440 now at: test2.patch
442 $ hg qpop test2.patch-1
441 $ hg qpop test2.patch-1
443 popping test2.patch
442 popping test2.patch
444 now at: test1b.patch
443 now at: test1b.patch
445 $ hg qpop test2.patch-2
444 $ hg qpop test2.patch-2
446 popping test1b.patch
445 popping test1b.patch
447 now at: test.patch
446 now at: test.patch
448 $ hg qpush test1b.patch+1
447 $ hg qpush test1b.patch+1
449 applying test1b.patch
448 applying test1b.patch
450 applying test2.patch
449 applying test2.patch
451 now at: test2.patch
450 now at: test2.patch
452
451
453
452
454 qpush --move
453 qpush --move
455
454
456 $ hg qpop -a
455 $ hg qpop -a
457 popping test2.patch
456 popping test2.patch
458 popping test1b.patch
457 popping test1b.patch
459 popping test.patch
458 popping test.patch
460 patch queue now empty
459 patch queue now empty
461 $ hg qguard test1b.patch -- -negguard
460 $ hg qguard test1b.patch -- -negguard
462 $ hg qguard test2.patch -- +posguard
461 $ hg qguard test2.patch -- +posguard
463 $ hg qpush --move test2.patch # can't move guarded patch
462 $ hg qpush --move test2.patch # can't move guarded patch
464 cannot push 'test2.patch' - guarded by ['+posguard']
463 cannot push 'test2.patch' - guarded by ['+posguard']
465 [1]
464 [1]
466 $ hg qselect posguard
465 $ hg qselect posguard
467 number of unguarded, unapplied patches has changed from 2 to 3
466 number of unguarded, unapplied patches has changed from 2 to 3
468 $ hg qpush --move test2.patch # move to front
467 $ hg qpush --move test2.patch # move to front
469 applying test2.patch
468 applying test2.patch
470 now at: test2.patch
469 now at: test2.patch
471 $ hg qpush --move test1b.patch # negative guard unselected
470 $ hg qpush --move test1b.patch # negative guard unselected
472 applying test1b.patch
471 applying test1b.patch
473 now at: test1b.patch
472 now at: test1b.patch
474 $ hg qpush --move test.patch # noop move
473 $ hg qpush --move test.patch # noop move
475 applying test.patch
474 applying test.patch
476 now at: test.patch
475 now at: test.patch
477 $ hg qseries -v
476 $ hg qseries -v
478 0 A test2.patch
477 0 A test2.patch
479 1 A test1b.patch
478 1 A test1b.patch
480 2 A test.patch
479 2 A test.patch
481 $ hg qpop -a
480 $ hg qpop -a
482 popping test.patch
481 popping test.patch
483 popping test1b.patch
482 popping test1b.patch
484 popping test2.patch
483 popping test2.patch
485 patch queue now empty
484 patch queue now empty
486
485
487 cleaning up
486 cleaning up
488
487
489 $ hg qselect --none
488 $ hg qselect --none
490 guards deactivated
489 guards deactivated
491 number of unguarded, unapplied patches has changed from 3 to 2
490 number of unguarded, unapplied patches has changed from 3 to 2
492 $ hg qguard --none test1b.patch
491 $ hg qguard --none test1b.patch
493 $ hg qguard --none test2.patch
492 $ hg qguard --none test2.patch
494 $ hg qpush --move test.patch
493 $ hg qpush --move test.patch
495 applying test.patch
494 applying test.patch
496 now at: test.patch
495 now at: test.patch
497 $ hg qpush --move test1b.patch
496 $ hg qpush --move test1b.patch
498 applying test1b.patch
497 applying test1b.patch
499 now at: test1b.patch
498 now at: test1b.patch
500 $ hg qpush --move bogus # nonexistent patch
499 $ hg qpush --move bogus # nonexistent patch
501 abort: patch bogus not in series
500 abort: patch bogus not in series
502 [255]
501 [255]
503 $ hg qpush --move # no patch
502 $ hg qpush --move # no patch
504 abort: please specify the patch to move
503 abort: please specify the patch to move
505 [255]
504 [255]
506 $ hg qpush --move test.patch # already applied
505 $ hg qpush --move test.patch # already applied
507 abort: cannot push to a previous patch: test.patch
506 abort: cannot push to a previous patch: test.patch
508 [255]
507 [255]
509 $ hg qpush
508 $ hg qpush
510 applying test2.patch
509 applying test2.patch
511 now at: test2.patch
510 now at: test2.patch
512
511
513
512
514 series after move
513 series after move
515
514
516 $ cat `hg root`/.hg/patches/series
515 $ cat `hg root`/.hg/patches/series
517 test.patch
516 test.patch
518 test1b.patch
517 test1b.patch
519 test2.patch
518 test2.patch
520 # comment
519 # comment
521
520
522
521
523
522
524 pop, qapplied, qunapplied
523 pop, qapplied, qunapplied
525
524
526 $ hg qseries -v
525 $ hg qseries -v
527 0 A test.patch
526 0 A test.patch
528 1 A test1b.patch
527 1 A test1b.patch
529 2 A test2.patch
528 2 A test2.patch
530
529
531 qapplied -1 test.patch
530 qapplied -1 test.patch
532
531
533 $ hg qapplied -1 test.patch
532 $ hg qapplied -1 test.patch
534 only one patch applied
533 only one patch applied
535 [1]
534 [1]
536
535
537 qapplied -1 test1b.patch
536 qapplied -1 test1b.patch
538
537
539 $ hg qapplied -1 test1b.patch
538 $ hg qapplied -1 test1b.patch
540 test.patch
539 test.patch
541
540
542 qapplied -1 test2.patch
541 qapplied -1 test2.patch
543
542
544 $ hg qapplied -1 test2.patch
543 $ hg qapplied -1 test2.patch
545 test1b.patch
544 test1b.patch
546
545
547 qapplied -1
546 qapplied -1
548
547
549 $ hg qapplied -1
548 $ hg qapplied -1
550 test1b.patch
549 test1b.patch
551
550
552 qapplied
551 qapplied
553
552
554 $ hg qapplied
553 $ hg qapplied
555 test.patch
554 test.patch
556 test1b.patch
555 test1b.patch
557 test2.patch
556 test2.patch
558
557
559 qapplied test1b.patch
558 qapplied test1b.patch
560
559
561 $ hg qapplied test1b.patch
560 $ hg qapplied test1b.patch
562 test.patch
561 test.patch
563 test1b.patch
562 test1b.patch
564
563
565 qunapplied -1
564 qunapplied -1
566
565
567 $ hg qunapplied -1
566 $ hg qunapplied -1
568 all patches applied
567 all patches applied
569 [1]
568 [1]
570
569
571 qunapplied
570 qunapplied
572
571
573 $ hg qunapplied
572 $ hg qunapplied
574
573
575 popping
574 popping
576
575
577 $ hg qpop
576 $ hg qpop
578 popping test2.patch
577 popping test2.patch
579 now at: test1b.patch
578 now at: test1b.patch
580
579
581 qunapplied -1
580 qunapplied -1
582
581
583 $ hg qunapplied -1
582 $ hg qunapplied -1
584 test2.patch
583 test2.patch
585
584
586 qunapplied
585 qunapplied
587
586
588 $ hg qunapplied
587 $ hg qunapplied
589 test2.patch
588 test2.patch
590
589
591 qunapplied test2.patch
590 qunapplied test2.patch
592
591
593 $ hg qunapplied test2.patch
592 $ hg qunapplied test2.patch
594
593
595 qunapplied -1 test2.patch
594 qunapplied -1 test2.patch
596
595
597 $ hg qunapplied -1 test2.patch
596 $ hg qunapplied -1 test2.patch
598 all patches applied
597 all patches applied
599 [1]
598 [1]
600
599
601 popping -a
600 popping -a
602
601
603 $ hg qpop -a
602 $ hg qpop -a
604 popping test1b.patch
603 popping test1b.patch
605 popping test.patch
604 popping test.patch
606 patch queue now empty
605 patch queue now empty
607
606
608 qapplied
607 qapplied
609
608
610 $ hg qapplied
609 $ hg qapplied
611
610
612 qapplied -1
611 qapplied -1
613
612
614 $ hg qapplied -1
613 $ hg qapplied -1
615 no patches applied
614 no patches applied
616 [1]
615 [1]
617 $ hg qpush
616 $ hg qpush
618 applying test.patch
617 applying test.patch
619 now at: test.patch
618 now at: test.patch
620
619
621
620
622 push should succeed
621 push should succeed
623
622
624 $ hg qpop -a
623 $ hg qpop -a
625 popping test.patch
624 popping test.patch
626 patch queue now empty
625 patch queue now empty
627 $ hg push ../../k
626 $ hg push ../../k
628 pushing to ../../k
627 pushing to ../../k
629 searching for changes
628 searching for changes
630 adding changesets
629 adding changesets
631 adding manifests
630 adding manifests
632 adding file changes
631 adding file changes
633 added 1 changesets with 1 changes to 1 files
632 added 1 changesets with 1 changes to 1 files
634
633
635
634
636 qpush/qpop error codes
637
638 $ errorcode()
639 > {
640 > hg "$@" && echo " $@ succeeds" || echo " $@ fails"
641 > }
642
643
644 we want to start with some patches applied
635 we want to start with some patches applied
645
636
646 $ hg qpush -a
637 $ hg qpush -a
647 applying test.patch
638 applying test.patch
648 applying test1b.patch
639 applying test1b.patch
649 applying test2.patch
640 applying test2.patch
650 now at: test2.patch
641 now at: test2.patch
651
642
652 % pops all patches and succeeds
643 % pops all patches and succeeds
653
644
654 $ errorcode qpop -a
645 $ hg qpop -a
655 popping test2.patch
646 popping test2.patch
656 popping test1b.patch
647 popping test1b.patch
657 popping test.patch
648 popping test.patch
658 patch queue now empty
649 patch queue now empty
659 qpop -a succeeds
660
650
661 % does nothing and succeeds
651 % does nothing and succeeds
662
652
663 $ errorcode qpop -a
653 $ hg qpop -a
664 no patches applied
654 no patches applied
665 qpop -a succeeds
666
655
667 % fails - nothing else to pop
656 % fails - nothing else to pop
668
657
669 $ errorcode qpop
658 $ hg qpop
670 no patches applied
659 no patches applied
671 qpop fails
660 [1]
672
661
673 % pushes a patch and succeeds
662 % pushes a patch and succeeds
674
663
675 $ errorcode qpush
664 $ hg qpush
676 applying test.patch
665 applying test.patch
677 now at: test.patch
666 now at: test.patch
678 qpush succeeds
679
667
680 % pops a patch and succeeds
668 % pops a patch and succeeds
681
669
682 $ errorcode qpop
670 $ hg qpop
683 popping test.patch
671 popping test.patch
684 patch queue now empty
672 patch queue now empty
685 qpop succeeds
686
673
687 % pushes up to test1b.patch and succeeds
674 % pushes up to test1b.patch and succeeds
688
675
689 $ errorcode qpush test1b.patch
676 $ hg qpush test1b.patch
690 applying test.patch
677 applying test.patch
691 applying test1b.patch
678 applying test1b.patch
692 now at: test1b.patch
679 now at: test1b.patch
693 qpush test1b.patch succeeds
694
680
695 % does nothing and succeeds
681 % does nothing and succeeds
696
682
697 $ errorcode qpush test1b.patch
683 $ hg qpush test1b.patch
698 qpush: test1b.patch is already at the top
684 qpush: test1b.patch is already at the top
699 qpush test1b.patch succeeds
700
685
701 % does nothing and succeeds
686 % does nothing and succeeds
702
687
703 $ errorcode qpop test1b.patch
688 $ hg qpop test1b.patch
704 qpop: test1b.patch is already at the top
689 qpop: test1b.patch is already at the top
705 qpop test1b.patch succeeds
706
690
707 % fails - can't push to this patch
691 % fails - can't push to this patch
708
692
709 $ errorcode qpush test.patch
693 $ hg qpush test.patch
710 abort: cannot push to a previous patch: test.patch
694 abort: cannot push to a previous patch: test.patch
711 qpush test.patch fails
695 [255]
712
696
713 % fails - can't pop to this patch
697 % fails - can't pop to this patch
714
698
715 $ errorcode qpop test2.patch
699 $ hg qpop test2.patch
716 abort: patch test2.patch is not applied
700 abort: patch test2.patch is not applied
717 qpop test2.patch fails
701 [255]
718
702
719 % pops up to test.patch and succeeds
703 % pops up to test.patch and succeeds
720
704
721 $ errorcode qpop test.patch
705 $ hg qpop test.patch
722 popping test1b.patch
706 popping test1b.patch
723 now at: test.patch
707 now at: test.patch
724 qpop test.patch succeeds
725
708
726 % pushes all patches and succeeds
709 % pushes all patches and succeeds
727
710
728 $ errorcode qpush -a
711 $ hg qpush -a
729 applying test1b.patch
712 applying test1b.patch
730 applying test2.patch
713 applying test2.patch
731 now at: test2.patch
714 now at: test2.patch
732 qpush -a succeeds
733
715
734 % does nothing and succeeds
716 % does nothing and succeeds
735
717
736 $ errorcode qpush -a
718 $ hg qpush -a
737 all patches are currently applied
719 all patches are currently applied
738 qpush -a succeeds
739
720
740 % fails - nothing else to push
721 % fails - nothing else to push
741
722
742 $ errorcode qpush
723 $ hg qpush
743 patch series already fully applied
724 patch series already fully applied
744 qpush fails
725 [1]
745
726
746 % does nothing and succeeds
727 % does nothing and succeeds
747
728
748 $ errorcode qpush test2.patch
729 $ hg qpush test2.patch
749 qpush: test2.patch is already at the top
730 qpush: test2.patch is already at the top
750 qpush test2.patch succeeds
751
752
753
731
754 strip
732 strip
755
733
756 $ cd ../../b
734 $ cd ../../b
757 $ echo x>x
735 $ echo x>x
758 $ hg ci -Ama
736 $ hg ci -Ama
759 adding x
737 adding x
760 $ hg strip tip
738 $ hg strip tip
761 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
739 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
762 saved backup bundle to .*
740 saved backup bundle to .*
763 $ hg unbundle .hg/strip-backup/*
741 $ hg unbundle .hg/strip-backup/*
764 adding changesets
742 adding changesets
765 adding manifests
743 adding manifests
766 adding file changes
744 adding file changes
767 added 1 changesets with 1 changes to 1 files
745 added 1 changesets with 1 changes to 1 files
768 (run 'hg update' to get a working copy)
746 (run 'hg update' to get a working copy)
769
747
770
748
771 strip with local changes, should complain
749 strip with local changes, should complain
772
750
773 $ hg up
751 $ hg up
774 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
775 $ echo y>y
753 $ echo y>y
776 $ hg add y
754 $ hg add y
777 $ hg strip tip
755 $ hg strip tip
778 abort: local changes found
756 abort: local changes found
779 [255]
757 [255]
780
758
781 --force strip with local changes
759 --force strip with local changes
782
760
783 $ hg strip -f tip
761 $ hg strip -f tip
784 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
762 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
785 saved backup bundle to .*
763 saved backup bundle to .*
786
764
787
765
788 cd b; hg qrefresh
766 cd b; hg qrefresh
789
767
790 $ hg init refresh
768 $ hg init refresh
791 $ cd refresh
769 $ cd refresh
792 $ echo a > a
770 $ echo a > a
793 $ hg ci -Ama
771 $ hg ci -Ama
794 adding a
772 adding a
795 $ hg qnew -mfoo foo
773 $ hg qnew -mfoo foo
796 $ echo a >> a
774 $ echo a >> a
797 $ hg qrefresh
775 $ hg qrefresh
798 $ mkdir b
776 $ mkdir b
799 $ cd b
777 $ cd b
800 $ echo f > f
778 $ echo f > f
801 $ hg add f
779 $ hg add f
802 $ hg qrefresh
780 $ hg qrefresh
803 $ cat ../.hg/patches/foo
781 $ cat ../.hg/patches/foo
804 foo
782 foo
805
783
806 diff -r cb9a9f314b8b a
784 diff -r cb9a9f314b8b a
807 --- a/a\t(?P<date>.*)
785 --- a/a\t(?P<date>.*)
808 \+\+\+ b/a\t(?P<date>.*)
786 \+\+\+ b/a\t(?P<date>.*)
809 @@ -1,1 +1,2 @@
787 @@ -1,1 +1,2 @@
810 a
788 a
811 +a
789 +a
812 diff -r cb9a9f314b8b b/f
790 diff -r cb9a9f314b8b b/f
813 --- /dev/null\t(?P<date>.*)
791 --- /dev/null\t(?P<date>.*)
814 \+\+\+ b/b/f\t(?P<date>.*)
792 \+\+\+ b/b/f\t(?P<date>.*)
815 @@ -0,0 +1,1 @@
793 @@ -0,0 +1,1 @@
816 +f
794 +f
817
795
818 hg qrefresh .
796 hg qrefresh .
819
797
820 $ hg qrefresh .
798 $ hg qrefresh .
821 $ cat ../.hg/patches/foo
799 $ cat ../.hg/patches/foo
822 foo
800 foo
823
801
824 diff -r cb9a9f314b8b b/f
802 diff -r cb9a9f314b8b b/f
825 --- /dev/null\t(?P<date>.*)
803 --- /dev/null\t(?P<date>.*)
826 \+\+\+ b/b/f\t(?P<date>.*)
804 \+\+\+ b/b/f\t(?P<date>.*)
827 @@ -0,0 +1,1 @@
805 @@ -0,0 +1,1 @@
828 +f
806 +f
829 $ hg status
807 $ hg status
830 M a
808 M a
831
809
832
810
833 qpush failure
811 qpush failure
834
812
835 $ cd ..
813 $ cd ..
836 $ hg qrefresh
814 $ hg qrefresh
837 $ hg qnew -mbar bar
815 $ hg qnew -mbar bar
838 $ echo foo > foo
816 $ echo foo > foo
839 $ echo bar > bar
817 $ echo bar > bar
840 $ hg add foo bar
818 $ hg add foo bar
841 $ hg qrefresh
819 $ hg qrefresh
842 $ hg qpop -a
820 $ hg qpop -a
843 popping bar
821 popping bar
844 popping foo
822 popping foo
845 patch queue now empty
823 patch queue now empty
846 $ echo bar > foo
824 $ echo bar > foo
847 $ hg qpush -a
825 $ hg qpush -a
848 applying foo
826 applying foo
849 applying bar
827 applying bar
850 file foo already exists
828 file foo already exists
851 1 out of 1 hunks FAILED -- saving rejects to file foo.rej
829 1 out of 1 hunks FAILED -- saving rejects to file foo.rej
852 patch failed, unable to continue (try -v)
830 patch failed, unable to continue (try -v)
853 patch failed, rejects left in working dir
831 patch failed, rejects left in working dir
854 errors during apply, please fix and refresh bar
832 errors during apply, please fix and refresh bar
855 [2]
833 [2]
856 $ hg st
834 $ hg st
857 ? foo
835 ? foo
858 ? foo.rej
836 ? foo.rej
859
837
860
838
861 mq tags
839 mq tags
862
840
863 $ hg log --template '{rev} {tags}\n' -r qparent:qtip
841 $ hg log --template '{rev} {tags}\n' -r qparent:qtip
864 0 qparent
842 0 qparent
865 1 foo qbase
843 1 foo qbase
866 2 bar qtip tip
844 2 bar qtip tip
867
845
868
846
869 bad node in status
847 bad node in status
870
848
871 $ hg qpop
849 $ hg qpop
872 popping bar
850 popping bar
873 now at: foo
851 now at: foo
874 $ hg strip -qn tip
852 $ hg strip -qn tip
875 $ hg tip
853 $ hg tip
876 changeset: 0:cb9a9f314b8b
854 changeset: 0:cb9a9f314b8b
877 tag: tip
855 tag: tip
878 user: test
856 user: test
879 date: Thu Jan 01 00:00:00 1970 +0000
857 date: Thu Jan 01 00:00:00 1970 +0000
880 summary: a
858 summary: a
881
859
882 $ hg branches
860 $ hg branches
883 default 0:cb9a9f314b8b
861 default 0:cb9a9f314b8b
884 $ hg qpop
862 $ hg qpop
885 no patches applied
863 no patches applied
886 [1]
864 [1]
887
865
888 $ cat >>$HGRCPATH <<EOF
866 $ cat >>$HGRCPATH <<EOF
889 > [diff]
867 > [diff]
890 > git = True
868 > git = True
891 > EOF
869 > EOF
892 $ cd ..
870 $ cd ..
893 $ hg init git
871 $ hg init git
894 $ cd git
872 $ cd git
895 $ hg qinit
873 $ hg qinit
896
874
897 $ hg qnew -m'new file' new
875 $ hg qnew -m'new file' new
898 $ echo foo > new
876 $ echo foo > new
899 $ chmod +x new
877 $ chmod +x new
900 $ hg add new
878 $ hg add new
901 $ hg qrefresh
879 $ hg qrefresh
902 $ cat .hg/patches/new
880 $ cat .hg/patches/new
903 new file
881 new file
904
882
905 diff --git a/new b/new
883 diff --git a/new b/new
906 new file mode 100755
884 new file mode 100755
907 --- /dev/null
885 --- /dev/null
908 +++ b/new
886 +++ b/new
909 @@ -0,0 +1,1 @@
887 @@ -0,0 +1,1 @@
910 +foo
888 +foo
911
889
912 $ hg qnew -m'copy file' copy
890 $ hg qnew -m'copy file' copy
913 $ hg cp new copy
891 $ hg cp new copy
914 $ hg qrefresh
892 $ hg qrefresh
915 $ cat .hg/patches/copy
893 $ cat .hg/patches/copy
916 copy file
894 copy file
917
895
918 diff --git a/new b/copy
896 diff --git a/new b/copy
919 copy from new
897 copy from new
920 copy to copy
898 copy to copy
921
899
922 $ hg qpop
900 $ hg qpop
923 popping copy
901 popping copy
924 now at: new
902 now at: new
925 $ hg qpush
903 $ hg qpush
926 applying copy
904 applying copy
927 now at: copy
905 now at: copy
928 $ hg qdiff
906 $ hg qdiff
929 diff --git a/new b/copy
907 diff --git a/new b/copy
930 copy from new
908 copy from new
931 copy to copy
909 copy to copy
932 $ cat >>$HGRCPATH <<EOF
910 $ cat >>$HGRCPATH <<EOF
933 > [diff]
911 > [diff]
934 > git = False
912 > git = False
935 > EOF
913 > EOF
936 $ hg qdiff --git
914 $ hg qdiff --git
937 diff --git a/new b/copy
915 diff --git a/new b/copy
938 copy from new
916 copy from new
939 copy to copy
917 copy to copy
940 $ cd ..
918 $ cd ..
941
919
942
920
943 test file addition in slow path
921 test file addition in slow path
944
922
945 $ hg init slow
923 $ hg init slow
946 $ cd slow
924 $ cd slow
947 $ hg qinit
925 $ hg qinit
948 $ echo foo > foo
926 $ echo foo > foo
949 $ hg add foo
927 $ hg add foo
950 $ hg ci -m 'add foo'
928 $ hg ci -m 'add foo'
951 $ hg qnew bar
929 $ hg qnew bar
952 $ echo bar > bar
930 $ echo bar > bar
953 $ hg add bar
931 $ hg add bar
954 $ hg mv foo baz
932 $ hg mv foo baz
955 $ hg qrefresh --git
933 $ hg qrefresh --git
956 $ hg up -C 0
934 $ hg up -C 0
957 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
935 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
958 $ echo >> foo
936 $ echo >> foo
959 $ hg ci -m 'change foo'
937 $ hg ci -m 'change foo'
960 created new head
938 created new head
961 $ hg up -C 1
939 $ hg up -C 1
962 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
940 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
963 $ hg qrefresh --git
941 $ hg qrefresh --git
964 $ cat .hg/patches/bar
942 $ cat .hg/patches/bar
965 diff --git a/bar b/bar
943 diff --git a/bar b/bar
966 new file mode 100644
944 new file mode 100644
967 --- /dev/null
945 --- /dev/null
968 +++ b/bar
946 +++ b/bar
969 @@ -0,0 +1,1 @@
947 @@ -0,0 +1,1 @@
970 +bar
948 +bar
971 diff --git a/foo b/baz
949 diff --git a/foo b/baz
972 rename from foo
950 rename from foo
973 rename to baz
951 rename to baz
974 $ hg log -v --template '{rev} {file_copies}\n' -r .
952 $ hg log -v --template '{rev} {file_copies}\n' -r .
975 2 baz (foo)
953 2 baz (foo)
976 $ hg qrefresh --git
954 $ hg qrefresh --git
977 $ cat .hg/patches/bar
955 $ cat .hg/patches/bar
978 diff --git a/bar b/bar
956 diff --git a/bar b/bar
979 new file mode 100644
957 new file mode 100644
980 --- /dev/null
958 --- /dev/null
981 +++ b/bar
959 +++ b/bar
982 @@ -0,0 +1,1 @@
960 @@ -0,0 +1,1 @@
983 +bar
961 +bar
984 diff --git a/foo b/baz
962 diff --git a/foo b/baz
985 rename from foo
963 rename from foo
986 rename to baz
964 rename to baz
987 $ hg log -v --template '{rev} {file_copies}\n' -r .
965 $ hg log -v --template '{rev} {file_copies}\n' -r .
988 2 baz (foo)
966 2 baz (foo)
989 $ hg qrefresh
967 $ hg qrefresh
990 $ grep 'diff --git' .hg/patches/bar
968 $ grep 'diff --git' .hg/patches/bar
991 diff --git a/bar b/bar
969 diff --git a/bar b/bar
992 diff --git a/foo b/baz
970 diff --git a/foo b/baz
993
971
994
972
995 test file move chains in the slow path
973 test file move chains in the slow path
996
974
997 $ hg up -C 1
975 $ hg up -C 1
998 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
976 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
999 $ echo >> foo
977 $ echo >> foo
1000 $ hg ci -m 'change foo again'
978 $ hg ci -m 'change foo again'
1001 $ hg up -C 2
979 $ hg up -C 2
1002 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
980 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
1003 $ hg mv bar quux
981 $ hg mv bar quux
1004 $ hg mv baz bleh
982 $ hg mv baz bleh
1005 $ hg qrefresh --git
983 $ hg qrefresh --git
1006 $ cat .hg/patches/bar
984 $ cat .hg/patches/bar
1007 diff --git a/foo b/bleh
985 diff --git a/foo b/bleh
1008 rename from foo
986 rename from foo
1009 rename to bleh
987 rename to bleh
1010 diff --git a/quux b/quux
988 diff --git a/quux b/quux
1011 new file mode 100644
989 new file mode 100644
1012 --- /dev/null
990 --- /dev/null
1013 +++ b/quux
991 +++ b/quux
1014 @@ -0,0 +1,1 @@
992 @@ -0,0 +1,1 @@
1015 +bar
993 +bar
1016 $ hg log -v --template '{rev} {file_copies}\n' -r .
994 $ hg log -v --template '{rev} {file_copies}\n' -r .
1017 3 bleh (foo)
995 3 bleh (foo)
1018 $ hg mv quux fred
996 $ hg mv quux fred
1019 $ hg mv bleh barney
997 $ hg mv bleh barney
1020 $ hg qrefresh --git
998 $ hg qrefresh --git
1021 $ cat .hg/patches/bar
999 $ cat .hg/patches/bar
1022 diff --git a/foo b/barney
1000 diff --git a/foo b/barney
1023 rename from foo
1001 rename from foo
1024 rename to barney
1002 rename to barney
1025 diff --git a/fred b/fred
1003 diff --git a/fred b/fred
1026 new file mode 100644
1004 new file mode 100644
1027 --- /dev/null
1005 --- /dev/null
1028 +++ b/fred
1006 +++ b/fred
1029 @@ -0,0 +1,1 @@
1007 @@ -0,0 +1,1 @@
1030 +bar
1008 +bar
1031 $ hg log -v --template '{rev} {file_copies}\n' -r .
1009 $ hg log -v --template '{rev} {file_copies}\n' -r .
1032 3 barney (foo)
1010 3 barney (foo)
1033
1011
1034
1012
1035 refresh omitting an added file
1013 refresh omitting an added file
1036
1014
1037 $ hg qnew baz
1015 $ hg qnew baz
1038 $ echo newfile > newfile
1016 $ echo newfile > newfile
1039 $ hg add newfile
1017 $ hg add newfile
1040 $ hg qrefresh
1018 $ hg qrefresh
1041 $ hg st -A newfile
1019 $ hg st -A newfile
1042 C newfile
1020 C newfile
1043 $ hg qrefresh -X newfile
1021 $ hg qrefresh -X newfile
1044 $ hg st -A newfile
1022 $ hg st -A newfile
1045 A newfile
1023 A newfile
1046 $ hg revert newfile
1024 $ hg revert newfile
1047 $ rm newfile
1025 $ rm newfile
1048 $ hg qpop
1026 $ hg qpop
1049 popping baz
1027 popping baz
1050 now at: bar
1028 now at: bar
1051 $ hg qdel baz
1029 $ hg qdel baz
1052
1030
1053
1031
1054 create a git patch
1032 create a git patch
1055
1033
1056 $ echo a > alexander
1034 $ echo a > alexander
1057 $ hg add alexander
1035 $ hg add alexander
1058 $ hg qnew -f --git addalexander
1036 $ hg qnew -f --git addalexander
1059 $ grep diff .hg/patches/addalexander
1037 $ grep diff .hg/patches/addalexander
1060 diff --git a/alexander b/alexander
1038 diff --git a/alexander b/alexander
1061
1039
1062
1040
1063 create a git binary patch
1041 create a git binary patch
1064
1042
1065 $ cat > writebin.py <<EOF
1043 $ cat > writebin.py <<EOF
1066 > import sys
1044 > import sys
1067 > path = sys.argv[1]
1045 > path = sys.argv[1]
1068 > open(path, 'wb').write('BIN\x00ARY')
1046 > open(path, 'wb').write('BIN\x00ARY')
1069 > EOF
1047 > EOF
1070 $ python writebin.py bucephalus
1048 $ python writebin.py bucephalus
1071
1049
1072 $ python "$TESTDIR/md5sum.py" bucephalus
1050 $ python "$TESTDIR/md5sum.py" bucephalus
1073 8ba2a2f3e77b55d03051ff9c24ad65e7 bucephalus
1051 8ba2a2f3e77b55d03051ff9c24ad65e7 bucephalus
1074 $ hg add bucephalus
1052 $ hg add bucephalus
1075 $ hg qnew -f --git addbucephalus
1053 $ hg qnew -f --git addbucephalus
1076 $ grep diff .hg/patches/addbucephalus
1054 $ grep diff .hg/patches/addbucephalus
1077 diff --git a/bucephalus b/bucephalus
1055 diff --git a/bucephalus b/bucephalus
1078
1056
1079
1057
1080 check binary patches can be popped and pushed
1058 check binary patches can be popped and pushed
1081
1059
1082 $ hg qpop
1060 $ hg qpop
1083 popping addbucephalus
1061 popping addbucephalus
1084 now at: addalexander
1062 now at: addalexander
1085 $ test -f bucephalus && echo % bucephalus should not be there
1063 $ test -f bucephalus && echo % bucephalus should not be there
1086 [1]
1064 [1]
1087 $ hg qpush
1065 $ hg qpush
1088 applying addbucephalus
1066 applying addbucephalus
1089 now at: addbucephalus
1067 now at: addbucephalus
1090 $ test -f bucephalus || echo % bucephalus should be there
1068 $ test -f bucephalus
1091 $ python "$TESTDIR/md5sum.py" bucephalus
1069 $ python "$TESTDIR/md5sum.py" bucephalus
1092 8ba2a2f3e77b55d03051ff9c24ad65e7 bucephalus
1070 8ba2a2f3e77b55d03051ff9c24ad65e7 bucephalus
1093
1071
1094
1072
1095
1073
1096 strip again
1074 strip again
1097
1075
1098 $ cd ..
1076 $ cd ..
1099 $ hg init strip
1077 $ hg init strip
1100 $ cd strip
1078 $ cd strip
1101 $ touch foo
1079 $ touch foo
1102 $ hg add foo
1080 $ hg add foo
1103 $ hg ci -m 'add foo'
1081 $ hg ci -m 'add foo'
1104 $ echo >> foo
1082 $ echo >> foo
1105 $ hg ci -m 'change foo 1'
1083 $ hg ci -m 'change foo 1'
1106 $ hg up -C 0
1084 $ hg up -C 0
1107 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1085 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1108 $ echo 1 >> foo
1086 $ echo 1 >> foo
1109 $ hg ci -m 'change foo 2'
1087 $ hg ci -m 'change foo 2'
1110 created new head
1088 created new head
1111 $ HGMERGE=true hg merge
1089 $ HGMERGE=true hg merge
1112 merging foo
1090 merging foo
1113 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
1091 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
1114 (branch merge, don't forget to commit)
1092 (branch merge, don't forget to commit)
1115 $ hg ci -m merge
1093 $ hg ci -m merge
1116 $ hg log
1094 $ hg log
1117 changeset: 3:99615015637b
1095 changeset: 3:99615015637b
1118 tag: tip
1096 tag: tip
1119 parent: 2:20cbbe65cff7
1097 parent: 2:20cbbe65cff7
1120 parent: 1:d2871fc282d4
1098 parent: 1:d2871fc282d4
1121 user: test
1099 user: test
1122 date: Thu Jan 01 00:00:00 1970 +0000
1100 date: Thu Jan 01 00:00:00 1970 +0000
1123 summary: merge
1101 summary: merge
1124
1102
1125 changeset: 2:20cbbe65cff7
1103 changeset: 2:20cbbe65cff7
1126 parent: 0:53245c60e682
1104 parent: 0:53245c60e682
1127 user: test
1105 user: test
1128 date: Thu Jan 01 00:00:00 1970 +0000
1106 date: Thu Jan 01 00:00:00 1970 +0000
1129 summary: change foo 2
1107 summary: change foo 2
1130
1108
1131 changeset: 1:d2871fc282d4
1109 changeset: 1:d2871fc282d4
1132 user: test
1110 user: test
1133 date: Thu Jan 01 00:00:00 1970 +0000
1111 date: Thu Jan 01 00:00:00 1970 +0000
1134 summary: change foo 1
1112 summary: change foo 1
1135
1113
1136 changeset: 0:53245c60e682
1114 changeset: 0:53245c60e682
1137 user: test
1115 user: test
1138 date: Thu Jan 01 00:00:00 1970 +0000
1116 date: Thu Jan 01 00:00:00 1970 +0000
1139 summary: add foo
1117 summary: add foo
1140
1118
1141 $ hg strip 1
1119 $ hg strip 1
1142 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1120 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1143 saved backup bundle to .*
1121 saved backup bundle to .*
1144 $ checkundo strip
1122 $ checkundo strip
1145 $ hg log
1123 $ hg log
1146 changeset: 1:20cbbe65cff7
1124 changeset: 1:20cbbe65cff7
1147 tag: tip
1125 tag: tip
1148 user: test
1126 user: test
1149 date: Thu Jan 01 00:00:00 1970 +0000
1127 date: Thu Jan 01 00:00:00 1970 +0000
1150 summary: change foo 2
1128 summary: change foo 2
1151
1129
1152 changeset: 0:53245c60e682
1130 changeset: 0:53245c60e682
1153 user: test
1131 user: test
1154 date: Thu Jan 01 00:00:00 1970 +0000
1132 date: Thu Jan 01 00:00:00 1970 +0000
1155 summary: add foo
1133 summary: add foo
1156
1134
1157 $ cd ..
1135 $ cd ..
1158
1136
1159
1137
1160 qclone
1138 qclone
1161
1139
1162 $ qlog()
1140 $ qlog()
1163 > {
1141 > {
1164 > echo 'main repo:'
1142 > echo 'main repo:'
1165 > hg log --template ' rev {rev}: {desc}\n'
1143 > hg log --template ' rev {rev}: {desc}\n'
1166 > echo 'patch repo:'
1144 > echo 'patch repo:'
1167 > hg -R .hg/patches log --template ' rev {rev}: {desc}\n'
1145 > hg -R .hg/patches log --template ' rev {rev}: {desc}\n'
1168 > }
1146 > }
1169 $ hg init qclonesource
1147 $ hg init qclonesource
1170 $ cd qclonesource
1148 $ cd qclonesource
1171 $ echo foo > foo
1149 $ echo foo > foo
1172 $ hg add foo
1150 $ hg add foo
1173 $ hg ci -m 'add foo'
1151 $ hg ci -m 'add foo'
1174 $ hg qinit
1152 $ hg qinit
1175 $ hg qnew patch1
1153 $ hg qnew patch1
1176 $ echo bar >> foo
1154 $ echo bar >> foo
1177 $ hg qrefresh -m 'change foo'
1155 $ hg qrefresh -m 'change foo'
1178 $ cd ..
1156 $ cd ..
1179
1157
1180
1158
1181 repo with unversioned patch dir
1159 repo with unversioned patch dir
1182
1160
1183 $ hg qclone qclonesource failure
1161 $ hg qclone qclonesource failure
1184 abort: versioned patch repository not found (see init --mq)
1162 abort: versioned patch repository not found (see init --mq)
1185 [255]
1163 [255]
1186
1164
1187 $ cd qclonesource
1165 $ cd qclonesource
1188 $ hg qinit -c
1166 $ hg qinit -c
1189 adding .hg/patches/patch1
1167 adding .hg/patches/patch1
1190 $ hg qci -m checkpoint
1168 $ hg qci -m checkpoint
1191 $ qlog
1169 $ qlog
1192 main repo:
1170 main repo:
1193 rev 1: change foo
1171 rev 1: change foo
1194 rev 0: add foo
1172 rev 0: add foo
1195 patch repo:
1173 patch repo:
1196 rev 0: checkpoint
1174 rev 0: checkpoint
1197 $ cd ..
1175 $ cd ..
1198
1176
1199
1177
1200 repo with patches applied
1178 repo with patches applied
1201
1179
1202 $ hg qclone qclonesource qclonedest
1180 $ hg qclone qclonesource qclonedest
1203 updating to branch default
1181 updating to branch default
1204 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1182 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1205 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1183 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1206 $ cd qclonedest
1184 $ cd qclonedest
1207 $ qlog
1185 $ qlog
1208 main repo:
1186 main repo:
1209 rev 0: add foo
1187 rev 0: add foo
1210 patch repo:
1188 patch repo:
1211 rev 0: checkpoint
1189 rev 0: checkpoint
1212 $ cd ..
1190 $ cd ..
1213
1191
1214
1192
1215 repo with patches unapplied
1193 repo with patches unapplied
1216
1194
1217 $ cd qclonesource
1195 $ cd qclonesource
1218 $ hg qpop -a
1196 $ hg qpop -a
1219 popping patch1
1197 popping patch1
1220 patch queue now empty
1198 patch queue now empty
1221 $ qlog
1199 $ qlog
1222 main repo:
1200 main repo:
1223 rev 0: add foo
1201 rev 0: add foo
1224 patch repo:
1202 patch repo:
1225 rev 0: checkpoint
1203 rev 0: checkpoint
1226 $ cd ..
1204 $ cd ..
1227 $ hg qclone qclonesource qclonedest2
1205 $ hg qclone qclonesource qclonedest2
1228 updating to branch default
1206 updating to branch default
1229 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1207 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
1230 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1208 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1231 $ cd qclonedest2
1209 $ cd qclonedest2
1232 $ qlog
1210 $ qlog
1233 main repo:
1211 main repo:
1234 rev 0: add foo
1212 rev 0: add foo
1235 patch repo:
1213 patch repo:
1236 rev 0: checkpoint
1214 rev 0: checkpoint
1237 $ cd ..
1215 $ cd ..
1238
1216
1239
1217
1240 test applying on an empty file (issue 1033)
1218 test applying on an empty file (issue 1033)
1241
1219
1242 $ hg init empty
1220 $ hg init empty
1243 $ cd empty
1221 $ cd empty
1244 $ touch a
1222 $ touch a
1245 $ hg ci -Am addempty
1223 $ hg ci -Am addempty
1246 adding a
1224 adding a
1247 $ echo a > a
1225 $ echo a > a
1248 $ hg qnew -f -e changea
1226 $ hg qnew -f -e changea
1249 $ hg qpop
1227 $ hg qpop
1250 popping changea
1228 popping changea
1251 patch queue now empty
1229 patch queue now empty
1252 $ hg qpush
1230 $ hg qpush
1253 applying changea
1231 applying changea
1254 now at: changea
1232 now at: changea
1255 $ cd ..
1233 $ cd ..
1256
1234
1257
1235
1258 test qpush with --force, issue1087
1236 test qpush with --force, issue1087
1259
1237
1260 $ hg init forcepush
1238 $ hg init forcepush
1261 $ cd forcepush
1239 $ cd forcepush
1262 $ echo hello > hello.txt
1240 $ echo hello > hello.txt
1263 $ echo bye > bye.txt
1241 $ echo bye > bye.txt
1264 $ hg ci -Ama
1242 $ hg ci -Ama
1265 adding bye.txt
1243 adding bye.txt
1266 adding hello.txt
1244 adding hello.txt
1267 $ hg qnew -d '0 0' empty
1245 $ hg qnew -d '0 0' empty
1268 $ hg qpop
1246 $ hg qpop
1269 popping empty
1247 popping empty
1270 patch queue now empty
1248 patch queue now empty
1271 $ echo world >> hello.txt
1249 $ echo world >> hello.txt
1272
1250
1273
1251
1274 qpush should fail, local changes
1252 qpush should fail, local changes
1275
1253
1276 $ hg qpush
1254 $ hg qpush
1277 abort: local changes found, refresh first
1255 abort: local changes found, refresh first
1278 [255]
1256 [255]
1279
1257
1280
1258
1281 apply force, should not discard changes with empty patch
1259 apply force, should not discard changes with empty patch
1282
1260
1283 $ hg qpush -f
1261 $ hg qpush -f
1284 applying empty
1262 applying empty
1285 patch empty is empty
1263 patch empty is empty
1286 now at: empty
1264 now at: empty
1287 $ hg diff --config diff.nodates=True
1265 $ hg diff --config diff.nodates=True
1288 diff -r bf5fc3f07a0a hello.txt
1266 diff -r bf5fc3f07a0a hello.txt
1289 --- a/hello.txt
1267 --- a/hello.txt
1290 +++ b/hello.txt
1268 +++ b/hello.txt
1291 @@ -1,1 +1,2 @@
1269 @@ -1,1 +1,2 @@
1292 hello
1270 hello
1293 +world
1271 +world
1294 $ hg qdiff --config diff.nodates=True
1272 $ hg qdiff --config diff.nodates=True
1295 diff -r 9ecee4f634e3 hello.txt
1273 diff -r 9ecee4f634e3 hello.txt
1296 --- a/hello.txt
1274 --- a/hello.txt
1297 +++ b/hello.txt
1275 +++ b/hello.txt
1298 @@ -1,1 +1,2 @@
1276 @@ -1,1 +1,2 @@
1299 hello
1277 hello
1300 +world
1278 +world
1301 $ hg log -l1 -p
1279 $ hg log -l1 -p
1302 changeset: 1:bf5fc3f07a0a
1280 changeset: 1:bf5fc3f07a0a
1303 tag: empty
1281 tag: empty
1304 tag: qbase
1282 tag: qbase
1305 tag: qtip
1283 tag: qtip
1306 tag: tip
1284 tag: tip
1307 user: test
1285 user: test
1308 date: Thu Jan 01 00:00:00 1970 +0000
1286 date: Thu Jan 01 00:00:00 1970 +0000
1309 summary: imported patch empty
1287 summary: imported patch empty
1310
1288
1311
1289
1312 $ hg qref -d '0 0'
1290 $ hg qref -d '0 0'
1313 $ hg qpop
1291 $ hg qpop
1314 popping empty
1292 popping empty
1315 patch queue now empty
1293 patch queue now empty
1316 $ echo universe >> hello.txt
1294 $ echo universe >> hello.txt
1317 $ echo universe >> bye.txt
1295 $ echo universe >> bye.txt
1318
1296
1319
1297
1320 qpush should fail, local changes
1298 qpush should fail, local changes
1321
1299
1322 $ hg qpush
1300 $ hg qpush
1323 abort: local changes found, refresh first
1301 abort: local changes found, refresh first
1324 [255]
1302 [255]
1325
1303
1326
1304
1327 apply force, should discard changes in hello, but not bye
1305 apply force, should discard changes in hello, but not bye
1328
1306
1329 $ hg qpush -f
1307 $ hg qpush -f
1330 applying empty
1308 applying empty
1331 now at: empty
1309 now at: empty
1332 $ hg st
1310 $ hg st
1333 M bye.txt
1311 M bye.txt
1334 $ hg diff --config diff.nodates=True
1312 $ hg diff --config diff.nodates=True
1335 diff -r ba252371dbc1 bye.txt
1313 diff -r ba252371dbc1 bye.txt
1336 --- a/bye.txt
1314 --- a/bye.txt
1337 +++ b/bye.txt
1315 +++ b/bye.txt
1338 @@ -1,1 +1,2 @@
1316 @@ -1,1 +1,2 @@
1339 bye
1317 bye
1340 +universe
1318 +universe
1341 $ hg qdiff --config diff.nodates=True
1319 $ hg qdiff --config diff.nodates=True
1342 diff -r 9ecee4f634e3 bye.txt
1320 diff -r 9ecee4f634e3 bye.txt
1343 --- a/bye.txt
1321 --- a/bye.txt
1344 +++ b/bye.txt
1322 +++ b/bye.txt
1345 @@ -1,1 +1,2 @@
1323 @@ -1,1 +1,2 @@
1346 bye
1324 bye
1347 +universe
1325 +universe
1348 diff -r 9ecee4f634e3 hello.txt
1326 diff -r 9ecee4f634e3 hello.txt
1349 --- a/hello.txt
1327 --- a/hello.txt
1350 +++ b/hello.txt
1328 +++ b/hello.txt
1351 @@ -1,1 +1,3 @@
1329 @@ -1,1 +1,3 @@
1352 hello
1330 hello
1353 +world
1331 +world
1354 +universe
1332 +universe
1355
1333
1356
1334
1357 test popping revisions not in working dir ancestry
1335 test popping revisions not in working dir ancestry
1358
1336
1359 $ hg qseries -v
1337 $ hg qseries -v
1360 0 A empty
1338 0 A empty
1361 $ hg up qparent
1339 $ hg up qparent
1362 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1340 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1363 $ hg qpop
1341 $ hg qpop
1364 popping empty
1342 popping empty
1365 patch queue now empty
1343 patch queue now empty
1366
1344
1367 $ cd ..
1345 $ cd ..
1368 $ hg init deletion-order
1346 $ hg init deletion-order
1369 $ cd deletion-order
1347 $ cd deletion-order
1370
1348
1371 $ touch a
1349 $ touch a
1372 $ hg ci -Aqm0
1350 $ hg ci -Aqm0
1373
1351
1374 $ hg qnew rename-dir
1352 $ hg qnew rename-dir
1375 $ hg rm a
1353 $ hg rm a
1376 $ hg qrefresh
1354 $ hg qrefresh
1377
1355
1378 $ mkdir a b
1356 $ mkdir a b
1379 $ touch a/a b/b
1357 $ touch a/a b/b
1380 $ hg add -q a b
1358 $ hg add -q a b
1381 $ hg qrefresh
1359 $ hg qrefresh
1382
1360
1383
1361
1384 test popping must remove files added in subdirectories first
1362 test popping must remove files added in subdirectories first
1385
1363
1386 $ hg qpop
1364 $ hg qpop
1387 popping rename-dir
1365 popping rename-dir
1388 patch queue now empty
1366 patch queue now empty
1389 $ cd ..
1367 $ cd ..
1390
1368
@@ -1,240 +1,240 b''
1 This runs with TZ="GMT"
1 This runs with TZ="GMT"
2
2
3 $ hg init
3 $ hg init
4 $ echo "test-parse-date" > a
4 $ echo "test-parse-date" > a
5 $ hg add a
5 $ hg add a
6 $ hg ci -d "2006-02-01 13:00:30" -m "rev 0"
6 $ hg ci -d "2006-02-01 13:00:30" -m "rev 0"
7 $ echo "hi!" >> a
7 $ echo "hi!" >> a
8 $ hg ci -d "2006-02-01 13:00:30 -0500" -m "rev 1"
8 $ hg ci -d "2006-02-01 13:00:30 -0500" -m "rev 1"
9 $ hg tag -d "2006-04-15 13:30" "Hi"
9 $ hg tag -d "2006-04-15 13:30" "Hi"
10 $ hg backout --merge -d "2006-04-15 13:30 +0200" -m "rev 3" 1
10 $ hg backout --merge -d "2006-04-15 13:30 +0200" -m "rev 3" 1
11 reverting a
11 reverting a
12 created new head
12 created new head
13 changeset 3:107ce1ee2b43 backs out changeset 1:25a1420a55f8
13 changeset 3:107ce1ee2b43 backs out changeset 1:25a1420a55f8
14 merging with changeset 3:107ce1ee2b43
14 merging with changeset 3:107ce1ee2b43
15 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
15 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 (branch merge, don't forget to commit)
16 (branch merge, don't forget to commit)
17 $ hg ci -d "1150000000 14400" -m "rev 4 (merge)"
17 $ hg ci -d "1150000000 14400" -m "rev 4 (merge)"
18 $ echo "fail" >> a
18 $ echo "fail" >> a
19 $ hg ci -d "should fail" -m "fail"
19 $ hg ci -d "should fail" -m "fail"
20 abort: invalid date: 'should fail'
20 abort: invalid date: 'should fail'
21 [255]
21 [255]
22 $ hg ci -d "100000000000000000 1400" -m "fail"
22 $ hg ci -d "100000000000000000 1400" -m "fail"
23 abort: date exceeds 32 bits: 100000000000000000
23 abort: date exceeds 32 bits: 100000000000000000
24 [255]
24 [255]
25 $ hg ci -d "100000 1400000" -m "fail"
25 $ hg ci -d "100000 1400000" -m "fail"
26 abort: impossible time zone offset: 1400000
26 abort: impossible time zone offset: 1400000
27 [255]
27 [255]
28
28
29 Check with local timezone other than GMT and with DST
29 Check with local timezone other than GMT and with DST
30
30
31 $ TZ="PST+8PDT"
31 $ TZ="PST+8PDT"
32 $ export TZ
32 $ export TZ
33
33
34 PST=UTC-8 / PDT=UTC-7
34 PST=UTC-8 / PDT=UTC-7
35
35
36 $ hg debugrebuildstate
36 $ hg debugrebuildstate
37 $ echo "a" > a
37 $ echo "a" > a
38 $ hg ci -d "2006-07-15 13:30" -m "summer@UTC-7"
38 $ hg ci -d "2006-07-15 13:30" -m "summer@UTC-7"
39 $ hg debugrebuildstate
39 $ hg debugrebuildstate
40 $ echo "b" > a
40 $ echo "b" > a
41 $ hg ci -d "2006-07-15 13:30 +0500" -m "summer@UTC+5"
41 $ hg ci -d "2006-07-15 13:30 +0500" -m "summer@UTC+5"
42 $ hg debugrebuildstate
42 $ hg debugrebuildstate
43 $ echo "c" > a
43 $ echo "c" > a
44 $ hg ci -d "2006-01-15 13:30" -m "winter@UTC-8"
44 $ hg ci -d "2006-01-15 13:30" -m "winter@UTC-8"
45 $ hg debugrebuildstate
45 $ hg debugrebuildstate
46 $ echo "d" > a
46 $ echo "d" > a
47 $ hg ci -d "2006-01-15 13:30 +0500" -m "winter@UTC+5"
47 $ hg ci -d "2006-01-15 13:30 +0500" -m "winter@UTC+5"
48 $ hg log --template '{date|date}\n'
48 $ hg log --template '{date|date}\n'
49 Sun Jan 15 13:30:00 2006 +0500
49 Sun Jan 15 13:30:00 2006 +0500
50 Sun Jan 15 13:30:00 2006 -0800
50 Sun Jan 15 13:30:00 2006 -0800
51 Sat Jul 15 13:30:00 2006 +0500
51 Sat Jul 15 13:30:00 2006 +0500
52 Sat Jul 15 13:30:00 2006 -0700
52 Sat Jul 15 13:30:00 2006 -0700
53 Sun Jun 11 00:26:40 2006 -0400
53 Sun Jun 11 00:26:40 2006 -0400
54 Sat Apr 15 13:30:00 2006 +0200
54 Sat Apr 15 13:30:00 2006 +0200
55 Sat Apr 15 13:30:00 2006 +0000
55 Sat Apr 15 13:30:00 2006 +0000
56 Wed Feb 01 13:00:30 2006 -0500
56 Wed Feb 01 13:00:30 2006 -0500
57 Wed Feb 01 13:00:30 2006 +0000
57 Wed Feb 01 13:00:30 2006 +0000
58
58
59 Test issue1014 (fractional timezones)
59 Test issue1014 (fractional timezones)
60
60
61 $ hg debugdate "1000000000 -16200" # 0430
61 $ hg debugdate "1000000000 -16200" # 0430
62 internal: 1000000000 -16200
62 internal: 1000000000 -16200
63 standard: Sun Sep 09 06:16:40 2001 +0430
63 standard: Sun Sep 09 06:16:40 2001 +0430
64 $ hg debugdate "1000000000 -15300" # 0415
64 $ hg debugdate "1000000000 -15300" # 0415
65 internal: 1000000000 -15300
65 internal: 1000000000 -15300
66 standard: Sun Sep 09 06:01:40 2001 +0415
66 standard: Sun Sep 09 06:01:40 2001 +0415
67 $ hg debugdate "1000000000 -14400" # 0400
67 $ hg debugdate "1000000000 -14400" # 0400
68 internal: 1000000000 -14400
68 internal: 1000000000 -14400
69 standard: Sun Sep 09 05:46:40 2001 +0400
69 standard: Sun Sep 09 05:46:40 2001 +0400
70 $ hg debugdate "1000000000 0" # GMT
70 $ hg debugdate "1000000000 0" # GMT
71 internal: 1000000000 0
71 internal: 1000000000 0
72 standard: Sun Sep 09 01:46:40 2001 +0000
72 standard: Sun Sep 09 01:46:40 2001 +0000
73 $ hg debugdate "1000000000 14400" # -0400
73 $ hg debugdate "1000000000 14400" # -0400
74 internal: 1000000000 14400
74 internal: 1000000000 14400
75 standard: Sat Sep 08 21:46:40 2001 -0400
75 standard: Sat Sep 08 21:46:40 2001 -0400
76 $ hg debugdate "1000000000 15300" # -0415
76 $ hg debugdate "1000000000 15300" # -0415
77 internal: 1000000000 15300
77 internal: 1000000000 15300
78 standard: Sat Sep 08 21:31:40 2001 -0415
78 standard: Sat Sep 08 21:31:40 2001 -0415
79 $ hg debugdate "1000000000 16200" # -0430
79 $ hg debugdate "1000000000 16200" # -0430
80 internal: 1000000000 16200
80 internal: 1000000000 16200
81 standard: Sat Sep 08 21:16:40 2001 -0430
81 standard: Sat Sep 08 21:16:40 2001 -0430
82 $ hg debugdate "Sat Sep 08 21:16:40 2001 +0430"
82 $ hg debugdate "Sat Sep 08 21:16:40 2001 +0430"
83 internal: 999967600 -16200
83 internal: 999967600 -16200
84 standard: Sat Sep 08 21:16:40 2001 +0430
84 standard: Sat Sep 08 21:16:40 2001 +0430
85 $ hg debugdate "Sat Sep 08 21:16:40 2001 -0430"
85 $ hg debugdate "Sat Sep 08 21:16:40 2001 -0430"
86 internal: 1000000000 16200
86 internal: 1000000000 16200
87 standard: Sat Sep 08 21:16:40 2001 -0430
87 standard: Sat Sep 08 21:16:40 2001 -0430
88
88
89 Test 12-hours times
89 Test 12-hours times
90
90
91 $ hg debugdate "2006-02-01 1:00:30PM +0000"
91 $ hg debugdate "2006-02-01 1:00:30PM +0000"
92 internal: 1138798830 0
92 internal: 1138798830 0
93 standard: Wed Feb 01 13:00:30 2006 +0000
93 standard: Wed Feb 01 13:00:30 2006 +0000
94 $ hg debugdate "1:00:30PM" > /dev/null || echo 'failed'
94 $ hg debugdate "1:00:30PM" > /dev/null
95
95
96 Test date formats with '>' or '<' accompanied by space characters
96 Test date formats with '>' or '<' accompanied by space characters
97
97
98 $ hg log -d '>' --template '{date|date}\n'
98 $ hg log -d '>' --template '{date|date}\n'
99 Sun Jan 15 13:30:00 2006 +0500
99 Sun Jan 15 13:30:00 2006 +0500
100 Sun Jan 15 13:30:00 2006 -0800
100 Sun Jan 15 13:30:00 2006 -0800
101 Sat Jul 15 13:30:00 2006 +0500
101 Sat Jul 15 13:30:00 2006 +0500
102 Sat Jul 15 13:30:00 2006 -0700
102 Sat Jul 15 13:30:00 2006 -0700
103 Sun Jun 11 00:26:40 2006 -0400
103 Sun Jun 11 00:26:40 2006 -0400
104 Sat Apr 15 13:30:00 2006 +0200
104 Sat Apr 15 13:30:00 2006 +0200
105 Sat Apr 15 13:30:00 2006 +0000
105 Sat Apr 15 13:30:00 2006 +0000
106 Wed Feb 01 13:00:30 2006 -0500
106 Wed Feb 01 13:00:30 2006 -0500
107 Wed Feb 01 13:00:30 2006 +0000
107 Wed Feb 01 13:00:30 2006 +0000
108 $ hg log -d '<' hg log -d '>' --template '{date|date}\n'
108 $ hg log -d '<' hg log -d '>' --template '{date|date}\n'
109
109
110 $ hg log -d ' >' --template '{date|date}\n'
110 $ hg log -d ' >' --template '{date|date}\n'
111 Sun Jan 15 13:30:00 2006 +0500
111 Sun Jan 15 13:30:00 2006 +0500
112 Sun Jan 15 13:30:00 2006 -0800
112 Sun Jan 15 13:30:00 2006 -0800
113 Sat Jul 15 13:30:00 2006 +0500
113 Sat Jul 15 13:30:00 2006 +0500
114 Sat Jul 15 13:30:00 2006 -0700
114 Sat Jul 15 13:30:00 2006 -0700
115 Sun Jun 11 00:26:40 2006 -0400
115 Sun Jun 11 00:26:40 2006 -0400
116 Sat Apr 15 13:30:00 2006 +0200
116 Sat Apr 15 13:30:00 2006 +0200
117 Sat Apr 15 13:30:00 2006 +0000
117 Sat Apr 15 13:30:00 2006 +0000
118 Wed Feb 01 13:00:30 2006 -0500
118 Wed Feb 01 13:00:30 2006 -0500
119 Wed Feb 01 13:00:30 2006 +0000
119 Wed Feb 01 13:00:30 2006 +0000
120 $ hg log -d ' <' --template '{date|date}\n'
120 $ hg log -d ' <' --template '{date|date}\n'
121
121
122 $ hg log -d '> ' --template '{date|date}\n'
122 $ hg log -d '> ' --template '{date|date}\n'
123 Sun Jan 15 13:30:00 2006 +0500
123 Sun Jan 15 13:30:00 2006 +0500
124 Sun Jan 15 13:30:00 2006 -0800
124 Sun Jan 15 13:30:00 2006 -0800
125 Sat Jul 15 13:30:00 2006 +0500
125 Sat Jul 15 13:30:00 2006 +0500
126 Sat Jul 15 13:30:00 2006 -0700
126 Sat Jul 15 13:30:00 2006 -0700
127 Sun Jun 11 00:26:40 2006 -0400
127 Sun Jun 11 00:26:40 2006 -0400
128 Sat Apr 15 13:30:00 2006 +0200
128 Sat Apr 15 13:30:00 2006 +0200
129 Sat Apr 15 13:30:00 2006 +0000
129 Sat Apr 15 13:30:00 2006 +0000
130 Wed Feb 01 13:00:30 2006 -0500
130 Wed Feb 01 13:00:30 2006 -0500
131 Wed Feb 01 13:00:30 2006 +0000
131 Wed Feb 01 13:00:30 2006 +0000
132 $ hg log -d '< ' --template '{date|date}\n'
132 $ hg log -d '< ' --template '{date|date}\n'
133
133
134 $ hg log -d ' > ' --template '{date|date}\n'
134 $ hg log -d ' > ' --template '{date|date}\n'
135 Sun Jan 15 13:30:00 2006 +0500
135 Sun Jan 15 13:30:00 2006 +0500
136 Sun Jan 15 13:30:00 2006 -0800
136 Sun Jan 15 13:30:00 2006 -0800
137 Sat Jul 15 13:30:00 2006 +0500
137 Sat Jul 15 13:30:00 2006 +0500
138 Sat Jul 15 13:30:00 2006 -0700
138 Sat Jul 15 13:30:00 2006 -0700
139 Sun Jun 11 00:26:40 2006 -0400
139 Sun Jun 11 00:26:40 2006 -0400
140 Sat Apr 15 13:30:00 2006 +0200
140 Sat Apr 15 13:30:00 2006 +0200
141 Sat Apr 15 13:30:00 2006 +0000
141 Sat Apr 15 13:30:00 2006 +0000
142 Wed Feb 01 13:00:30 2006 -0500
142 Wed Feb 01 13:00:30 2006 -0500
143 Wed Feb 01 13:00:30 2006 +0000
143 Wed Feb 01 13:00:30 2006 +0000
144 $ hg log -d ' < ' --template '{date|date}\n'
144 $ hg log -d ' < ' --template '{date|date}\n'
145
145
146 $ hg log -d '>02/01' --template '{date|date}\n'
146 $ hg log -d '>02/01' --template '{date|date}\n'
147 $ hg log -d '<02/01' --template '{date|date}\n'
147 $ hg log -d '<02/01' --template '{date|date}\n'
148 Sun Jan 15 13:30:00 2006 +0500
148 Sun Jan 15 13:30:00 2006 +0500
149 Sun Jan 15 13:30:00 2006 -0800
149 Sun Jan 15 13:30:00 2006 -0800
150 Sat Jul 15 13:30:00 2006 +0500
150 Sat Jul 15 13:30:00 2006 +0500
151 Sat Jul 15 13:30:00 2006 -0700
151 Sat Jul 15 13:30:00 2006 -0700
152 Sun Jun 11 00:26:40 2006 -0400
152 Sun Jun 11 00:26:40 2006 -0400
153 Sat Apr 15 13:30:00 2006 +0200
153 Sat Apr 15 13:30:00 2006 +0200
154 Sat Apr 15 13:30:00 2006 +0000
154 Sat Apr 15 13:30:00 2006 +0000
155 Wed Feb 01 13:00:30 2006 -0500
155 Wed Feb 01 13:00:30 2006 -0500
156 Wed Feb 01 13:00:30 2006 +0000
156 Wed Feb 01 13:00:30 2006 +0000
157
157
158 $ hg log -d ' >02/01' --template '{date|date}\n'
158 $ hg log -d ' >02/01' --template '{date|date}\n'
159 $ hg log -d ' <02/01' --template '{date|date}\n'
159 $ hg log -d ' <02/01' --template '{date|date}\n'
160 Sun Jan 15 13:30:00 2006 +0500
160 Sun Jan 15 13:30:00 2006 +0500
161 Sun Jan 15 13:30:00 2006 -0800
161 Sun Jan 15 13:30:00 2006 -0800
162 Sat Jul 15 13:30:00 2006 +0500
162 Sat Jul 15 13:30:00 2006 +0500
163 Sat Jul 15 13:30:00 2006 -0700
163 Sat Jul 15 13:30:00 2006 -0700
164 Sun Jun 11 00:26:40 2006 -0400
164 Sun Jun 11 00:26:40 2006 -0400
165 Sat Apr 15 13:30:00 2006 +0200
165 Sat Apr 15 13:30:00 2006 +0200
166 Sat Apr 15 13:30:00 2006 +0000
166 Sat Apr 15 13:30:00 2006 +0000
167 Wed Feb 01 13:00:30 2006 -0500
167 Wed Feb 01 13:00:30 2006 -0500
168 Wed Feb 01 13:00:30 2006 +0000
168 Wed Feb 01 13:00:30 2006 +0000
169
169
170 $ hg log -d '> 02/01' --template '{date|date}\n'
170 $ hg log -d '> 02/01' --template '{date|date}\n'
171 $ hg log -d '< 02/01' --template '{date|date}\n'
171 $ hg log -d '< 02/01' --template '{date|date}\n'
172 Sun Jan 15 13:30:00 2006 +0500
172 Sun Jan 15 13:30:00 2006 +0500
173 Sun Jan 15 13:30:00 2006 -0800
173 Sun Jan 15 13:30:00 2006 -0800
174 Sat Jul 15 13:30:00 2006 +0500
174 Sat Jul 15 13:30:00 2006 +0500
175 Sat Jul 15 13:30:00 2006 -0700
175 Sat Jul 15 13:30:00 2006 -0700
176 Sun Jun 11 00:26:40 2006 -0400
176 Sun Jun 11 00:26:40 2006 -0400
177 Sat Apr 15 13:30:00 2006 +0200
177 Sat Apr 15 13:30:00 2006 +0200
178 Sat Apr 15 13:30:00 2006 +0000
178 Sat Apr 15 13:30:00 2006 +0000
179 Wed Feb 01 13:00:30 2006 -0500
179 Wed Feb 01 13:00:30 2006 -0500
180 Wed Feb 01 13:00:30 2006 +0000
180 Wed Feb 01 13:00:30 2006 +0000
181
181
182 $ hg log -d ' > 02/01' --template '{date|date}\n'
182 $ hg log -d ' > 02/01' --template '{date|date}\n'
183 $ hg log -d ' < 02/01' --template '{date|date}\n'
183 $ hg log -d ' < 02/01' --template '{date|date}\n'
184 Sun Jan 15 13:30:00 2006 +0500
184 Sun Jan 15 13:30:00 2006 +0500
185 Sun Jan 15 13:30:00 2006 -0800
185 Sun Jan 15 13:30:00 2006 -0800
186 Sat Jul 15 13:30:00 2006 +0500
186 Sat Jul 15 13:30:00 2006 +0500
187 Sat Jul 15 13:30:00 2006 -0700
187 Sat Jul 15 13:30:00 2006 -0700
188 Sun Jun 11 00:26:40 2006 -0400
188 Sun Jun 11 00:26:40 2006 -0400
189 Sat Apr 15 13:30:00 2006 +0200
189 Sat Apr 15 13:30:00 2006 +0200
190 Sat Apr 15 13:30:00 2006 +0000
190 Sat Apr 15 13:30:00 2006 +0000
191 Wed Feb 01 13:00:30 2006 -0500
191 Wed Feb 01 13:00:30 2006 -0500
192 Wed Feb 01 13:00:30 2006 +0000
192 Wed Feb 01 13:00:30 2006 +0000
193
193
194 $ hg log -d '>02/01 ' --template '{date|date}\n'
194 $ hg log -d '>02/01 ' --template '{date|date}\n'
195 $ hg log -d '<02/01 ' --template '{date|date}\n'
195 $ hg log -d '<02/01 ' --template '{date|date}\n'
196 Sun Jan 15 13:30:00 2006 +0500
196 Sun Jan 15 13:30:00 2006 +0500
197 Sun Jan 15 13:30:00 2006 -0800
197 Sun Jan 15 13:30:00 2006 -0800
198 Sat Jul 15 13:30:00 2006 +0500
198 Sat Jul 15 13:30:00 2006 +0500
199 Sat Jul 15 13:30:00 2006 -0700
199 Sat Jul 15 13:30:00 2006 -0700
200 Sun Jun 11 00:26:40 2006 -0400
200 Sun Jun 11 00:26:40 2006 -0400
201 Sat Apr 15 13:30:00 2006 +0200
201 Sat Apr 15 13:30:00 2006 +0200
202 Sat Apr 15 13:30:00 2006 +0000
202 Sat Apr 15 13:30:00 2006 +0000
203 Wed Feb 01 13:00:30 2006 -0500
203 Wed Feb 01 13:00:30 2006 -0500
204 Wed Feb 01 13:00:30 2006 +0000
204 Wed Feb 01 13:00:30 2006 +0000
205
205
206 $ hg log -d ' >02/01 ' --template '{date|date}\n'
206 $ hg log -d ' >02/01 ' --template '{date|date}\n'
207 $ hg log -d ' <02/01 ' --template '{date|date}\n'
207 $ hg log -d ' <02/01 ' --template '{date|date}\n'
208 Sun Jan 15 13:30:00 2006 +0500
208 Sun Jan 15 13:30:00 2006 +0500
209 Sun Jan 15 13:30:00 2006 -0800
209 Sun Jan 15 13:30:00 2006 -0800
210 Sat Jul 15 13:30:00 2006 +0500
210 Sat Jul 15 13:30:00 2006 +0500
211 Sat Jul 15 13:30:00 2006 -0700
211 Sat Jul 15 13:30:00 2006 -0700
212 Sun Jun 11 00:26:40 2006 -0400
212 Sun Jun 11 00:26:40 2006 -0400
213 Sat Apr 15 13:30:00 2006 +0200
213 Sat Apr 15 13:30:00 2006 +0200
214 Sat Apr 15 13:30:00 2006 +0000
214 Sat Apr 15 13:30:00 2006 +0000
215 Wed Feb 01 13:00:30 2006 -0500
215 Wed Feb 01 13:00:30 2006 -0500
216 Wed Feb 01 13:00:30 2006 +0000
216 Wed Feb 01 13:00:30 2006 +0000
217
217
218 $ hg log -d '> 02/01 ' --template '{date|date}\n'
218 $ hg log -d '> 02/01 ' --template '{date|date}\n'
219 $ hg log -d '< 02/01 ' --template '{date|date}\n'
219 $ hg log -d '< 02/01 ' --template '{date|date}\n'
220 Sun Jan 15 13:30:00 2006 +0500
220 Sun Jan 15 13:30:00 2006 +0500
221 Sun Jan 15 13:30:00 2006 -0800
221 Sun Jan 15 13:30:00 2006 -0800
222 Sat Jul 15 13:30:00 2006 +0500
222 Sat Jul 15 13:30:00 2006 +0500
223 Sat Jul 15 13:30:00 2006 -0700
223 Sat Jul 15 13:30:00 2006 -0700
224 Sun Jun 11 00:26:40 2006 -0400
224 Sun Jun 11 00:26:40 2006 -0400
225 Sat Apr 15 13:30:00 2006 +0200
225 Sat Apr 15 13:30:00 2006 +0200
226 Sat Apr 15 13:30:00 2006 +0000
226 Sat Apr 15 13:30:00 2006 +0000
227 Wed Feb 01 13:00:30 2006 -0500
227 Wed Feb 01 13:00:30 2006 -0500
228 Wed Feb 01 13:00:30 2006 +0000
228 Wed Feb 01 13:00:30 2006 +0000
229
229
230 $ hg log -d ' > 02/01 ' --template '{date|date}\n'
230 $ hg log -d ' > 02/01 ' --template '{date|date}\n'
231 $ hg log -d ' < 02/01 ' --template '{date|date}\n'
231 $ hg log -d ' < 02/01 ' --template '{date|date}\n'
232 Sun Jan 15 13:30:00 2006 +0500
232 Sun Jan 15 13:30:00 2006 +0500
233 Sun Jan 15 13:30:00 2006 -0800
233 Sun Jan 15 13:30:00 2006 -0800
234 Sat Jul 15 13:30:00 2006 +0500
234 Sat Jul 15 13:30:00 2006 +0500
235 Sat Jul 15 13:30:00 2006 -0700
235 Sat Jul 15 13:30:00 2006 -0700
236 Sun Jun 11 00:26:40 2006 -0400
236 Sun Jun 11 00:26:40 2006 -0400
237 Sat Apr 15 13:30:00 2006 +0200
237 Sat Apr 15 13:30:00 2006 +0200
238 Sat Apr 15 13:30:00 2006 +0000
238 Sat Apr 15 13:30:00 2006 +0000
239 Wed Feb 01 13:00:30 2006 -0500
239 Wed Feb 01 13:00:30 2006 -0500
240 Wed Feb 01 13:00:30 2006 +0000
240 Wed Feb 01 13:00:30 2006 +0000
@@ -1,69 +1,69 b''
1 $ hg init t
1 $ hg init t
2 $ cd t
2 $ cd t
3
3
4 $ echo foo > a
4 $ echo foo > a
5 $ hg add a
5 $ hg add a
6
6
7 $ hg commit -m "1"
7 $ hg commit -m "1"
8
8
9 $ hg verify
9 $ hg verify
10 checking changesets
10 checking changesets
11 checking manifests
11 checking manifests
12 crosschecking files in changesets and manifests
12 crosschecking files in changesets and manifests
13 checking files
13 checking files
14 1 files, 1 changesets, 1 total revisions
14 1 files, 1 changesets, 1 total revisions
15
15
16 $ chmod -r .hg/store/data/a.i
16 $ chmod -r .hg/store/data/a.i
17
17
18 $ hg verify || echo %%% verify failed
18 $ hg verify
19 checking changesets
19 checking changesets
20 checking manifests
20 checking manifests
21 crosschecking files in changesets and manifests
21 crosschecking files in changesets and manifests
22 checking files
22 checking files
23 abort: Permission denied: .*
23 abort: Permission denied: .*
24 %%% verify failed
24 [255]
25
25
26 $ chmod +r .hg/store/data/a.i
26 $ chmod +r .hg/store/data/a.i
27
27
28 $ hg verify || echo %%% verify failed
28 $ hg verify
29 checking changesets
29 checking changesets
30 checking manifests
30 checking manifests
31 crosschecking files in changesets and manifests
31 crosschecking files in changesets and manifests
32 checking files
32 checking files
33 1 files, 1 changesets, 1 total revisions
33 1 files, 1 changesets, 1 total revisions
34
34
35 $ chmod -w .hg/store/data/a.i
35 $ chmod -w .hg/store/data/a.i
36
36
37 $ echo barber > a
37 $ echo barber > a
38 $ hg commit -m "2" || echo %%% commit failed
38 $ hg commit -m "2"
39 trouble committing a!
39 trouble committing a!
40 abort: Permission denied: .*
40 abort: Permission denied: .*
41 %%% commit failed
41 [255]
42
42
43 $ chmod -w .
43 $ chmod -w .
44
44
45 $ hg diff --nodates
45 $ hg diff --nodates
46 diff -r 2a18120dc1c9 a
46 diff -r 2a18120dc1c9 a
47 --- a/a
47 --- a/a
48 +++ b/a
48 +++ b/a
49 @@ -1,1 +1,1 @@
49 @@ -1,1 +1,1 @@
50 -foo
50 -foo
51 +barber
51 +barber
52
52
53 $ chmod +w .
53 $ chmod +w .
54
54
55 $ chmod +w .hg/store/data/a.i
55 $ chmod +w .hg/store/data/a.i
56 $ mkdir dir
56 $ mkdir dir
57 $ touch dir/a
57 $ touch dir/a
58 $ hg status
58 $ hg status
59 M a
59 M a
60 ? dir/a
60 ? dir/a
61 $ chmod -rx dir
61 $ chmod -rx dir
62 $ hg status
62 $ hg status
63 dir: Permission denied
63 dir: Permission denied
64 M a
64 M a
65
65
66 Reenable perm to allow deletion:
66 Reenable perm to allow deletion:
67
67
68 $ chmod +rx dir
68 $ chmod +rx dir
69
69
@@ -1,709 +1,699 b''
1 $ echo "[extensions]" >> $HGRCPATH
1 $ echo "[extensions]" >> $HGRCPATH
2 $ echo "graphlog=" >> $HGRCPATH
2 $ echo "graphlog=" >> $HGRCPATH
3
3
4 $ mkdir a
4 $ mkdir a
5 $ cd a
5 $ cd a
6 $ hg init
6 $ hg init
7 $ echo foo > t1
7 $ echo foo > t1
8 $ hg add t1
8 $ hg add t1
9 $ hg commit -m "1"
9 $ hg commit -m "1"
10
10
11 $ cd ..
11 $ cd ..
12 $ hg clone a b
12 $ hg clone a b
13 updating to branch default
13 updating to branch default
14 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
14 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
15
15
16 $ cd a
16 $ cd a
17 $ echo foo > t2
17 $ echo foo > t2
18 $ hg add t2
18 $ hg add t2
19 $ hg commit -m "2"
19 $ hg commit -m "2"
20
20
21 $ cd ../b
21 $ cd ../b
22 $ echo foo > t3
22 $ echo foo > t3
23 $ hg add t3
23 $ hg add t3
24 $ hg commit -m "3"
24 $ hg commit -m "3"
25
25
26 $ hg push ../a
26 $ hg push ../a
27 pushing to ../a
27 pushing to ../a
28 searching for changes
28 searching for changes
29 abort: push creates new remote heads on branch 'default'!
29 abort: push creates new remote heads on branch 'default'!
30 (you should pull and merge or use push -f to force)
30 (you should pull and merge or use push -f to force)
31 [255]
31 [255]
32
32
33 $ hg pull ../a
33 $ hg pull ../a
34 pulling from ../a
34 pulling from ../a
35 searching for changes
35 searching for changes
36 adding changesets
36 adding changesets
37 adding manifests
37 adding manifests
38 adding file changes
38 adding file changes
39 added 1 changesets with 1 changes to 1 files (+1 heads)
39 added 1 changesets with 1 changes to 1 files (+1 heads)
40 (run 'hg heads' to see heads, 'hg merge' to merge)
40 (run 'hg heads' to see heads, 'hg merge' to merge)
41
41
42 $ hg push ../a
42 $ hg push ../a
43 pushing to ../a
43 pushing to ../a
44 searching for changes
44 searching for changes
45 abort: push creates new remote heads on branch 'default'!
45 abort: push creates new remote heads on branch 'default'!
46 (did you forget to merge? use push -f to force)
46 (did you forget to merge? use push -f to force)
47 [255]
47 [255]
48
48
49 $ hg merge
49 $ hg merge
50 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
50 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
51 (branch merge, don't forget to commit)
51 (branch merge, don't forget to commit)
52
52
53 $ hg commit -m "4"
53 $ hg commit -m "4"
54 $ hg push ../a
54 $ hg push ../a
55 pushing to ../a
55 pushing to ../a
56 searching for changes
56 searching for changes
57 adding changesets
57 adding changesets
58 adding manifests
58 adding manifests
59 adding file changes
59 adding file changes
60 added 2 changesets with 1 changes to 1 files
60 added 2 changesets with 1 changes to 1 files
61
61
62 $ cd ..
62 $ cd ..
63
63
64 $ hg init c
64 $ hg init c
65 $ cd c
65 $ cd c
66 $ for i in 0 1 2; do
66 $ for i in 0 1 2; do
67 > echo $i >> foo
67 > echo $i >> foo
68 > hg ci -Am $i
68 > hg ci -Am $i
69 > done
69 > done
70 adding foo
70 adding foo
71 $ cd ..
71 $ cd ..
72
72
73 $ hg clone c d
73 $ hg clone c d
74 updating to branch default
74 updating to branch default
75 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
76
76
77 $ cd d
77 $ cd d
78 $ for i in 0 1; do
78 $ for i in 0 1; do
79 > hg co -C $i
79 > hg co -C $i
80 > echo d-$i >> foo
80 > echo d-$i >> foo
81 > hg ci -m d-$i
81 > hg ci -m d-$i
82 > done
82 > done
83 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
83 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
84 created new head
84 created new head
85 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
85 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
86 created new head
86 created new head
87
87
88 $ HGMERGE=true hg merge 3
88 $ HGMERGE=true hg merge 3
89 merging foo
89 merging foo
90 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
90 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
91 (branch merge, don't forget to commit)
91 (branch merge, don't forget to commit)
92
92
93 $ hg ci -m c-d
93 $ hg ci -m c-d
94
94
95 $ hg push ../c; echo $?
95 $ hg push ../c
96 pushing to ../c
96 pushing to ../c
97 searching for changes
97 searching for changes
98 abort: push creates new remote heads on branch 'default'!
98 abort: push creates new remote heads on branch 'default'!
99 (did you forget to merge? use push -f to force)
99 (did you forget to merge? use push -f to force)
100 255
100 [255]
101
101
102 $ hg push -r 2 ../c; echo $?
102 $ hg push -r 2 ../c
103 pushing to ../c
103 pushing to ../c
104 searching for changes
104 searching for changes
105 no changes found
105 no changes found
106 0
107
106
108 $ hg push -r 3 ../c; echo $?
107 $ hg push -r 3 ../c
109 pushing to ../c
108 pushing to ../c
110 searching for changes
109 searching for changes
111 abort: push creates new remote heads on branch 'default'!
110 abort: push creates new remote heads on branch 'default'!
112 (did you forget to merge? use push -f to force)
111 (did you forget to merge? use push -f to force)
113 255
112 [255]
114
113
115 $ hg push -r 3 -r 4 ../c; echo $?
114 $ hg push -r 3 -r 4 ../c
116 pushing to ../c
115 pushing to ../c
117 searching for changes
116 searching for changes
118 abort: push creates new remote heads on branch 'default'!
117 abort: push creates new remote heads on branch 'default'!
119 (did you forget to merge? use push -f to force)
118 (did you forget to merge? use push -f to force)
120 255
119 [255]
121
120
122 $ hg push -f -r 3 -r 4 ../c; echo $?
121 $ hg push -f -r 3 -r 4 ../c
123 pushing to ../c
122 pushing to ../c
124 searching for changes
123 searching for changes
125 adding changesets
124 adding changesets
126 adding manifests
125 adding manifests
127 adding file changes
126 adding file changes
128 added 2 changesets with 2 changes to 1 files (+2 heads)
127 added 2 changesets with 2 changes to 1 files (+2 heads)
129 0
130
128
131 $ hg push -r 5 ../c; echo $?
129 $ hg push -r 5 ../c
132 pushing to ../c
130 pushing to ../c
133 searching for changes
131 searching for changes
134 adding changesets
132 adding changesets
135 adding manifests
133 adding manifests
136 adding file changes
134 adding file changes
137 added 1 changesets with 1 changes to 1 files (-1 heads)
135 added 1 changesets with 1 changes to 1 files (-1 heads)
138 0
139
136
140 $ hg in ../c
137 $ hg in ../c
141 comparing with ../c
138 comparing with ../c
142 searching for changes
139 searching for changes
143 no changes found
140 no changes found
144 [1]
141 [1]
145
142
146
143
147 Issue 450:
144 Issue 450:
148
145
149 $ hg init ../e
146 $ hg init ../e
150 $ hg push -r 0 ../e ; echo $?
147 $ hg push -r 0 ../e
151 pushing to ../e
148 pushing to ../e
152 searching for changes
149 searching for changes
153 adding changesets
150 adding changesets
154 adding manifests
151 adding manifests
155 adding file changes
152 adding file changes
156 added 1 changesets with 1 changes to 1 files
153 added 1 changesets with 1 changes to 1 files
157 0
158
154
159 $ hg push -r 1 ../e ; echo $?
155 $ hg push -r 1 ../e
160 pushing to ../e
156 pushing to ../e
161 searching for changes
157 searching for changes
162 adding changesets
158 adding changesets
163 adding manifests
159 adding manifests
164 adding file changes
160 adding file changes
165 added 1 changesets with 1 changes to 1 files
161 added 1 changesets with 1 changes to 1 files
166 0
167
162
168 $ cd ..
163 $ cd ..
169
164
170
165
171 Issue 736:
166 Issue 736:
172
167
173 $ hg init f
168 $ hg init f
174 $ cd f
169 $ cd f
175 $ hg -q branch a
170 $ hg -q branch a
176 $ echo 0 > foo
171 $ echo 0 > foo
177 $ hg -q ci -Am 0
172 $ hg -q ci -Am 0
178 $ echo 1 > foo
173 $ echo 1 > foo
179 $ hg -q ci -m 1
174 $ hg -q ci -m 1
180 $ hg -q up 0
175 $ hg -q up 0
181 $ echo 2 > foo
176 $ echo 2 > foo
182 $ hg -q ci -m 2
177 $ hg -q ci -m 2
183 $ hg -q up 0
178 $ hg -q up 0
184 $ hg -q branch b
179 $ hg -q branch b
185 $ echo 3 > foo
180 $ echo 3 > foo
186 $ hg -q ci -m 3
181 $ hg -q ci -m 3
187 $ cd ..
182 $ cd ..
188
183
189 $ hg -q clone f g
184 $ hg -q clone f g
190 $ cd g
185 $ cd g
191
186
192 Push on existing branch and new branch:
187 Push on existing branch and new branch:
193
188
194 $ hg -q up 1
189 $ hg -q up 1
195 $ echo 4 > foo
190 $ echo 4 > foo
196 $ hg -q ci -m 4
191 $ hg -q ci -m 4
197 $ hg -q up 0
192 $ hg -q up 0
198 $ echo 5 > foo
193 $ echo 5 > foo
199 $ hg -q branch c
194 $ hg -q branch c
200 $ hg -q ci -m 5
195 $ hg -q ci -m 5
201
196
202 $ hg push ../f; echo $?
197 $ hg push ../f
203 pushing to ../f
198 pushing to ../f
204 searching for changes
199 searching for changes
205 abort: push creates new remote branches: c!
200 abort: push creates new remote branches: c!
206 (use 'hg push --new-branch' to create new remote branches)
201 (use 'hg push --new-branch' to create new remote branches)
207 255
202 [255]
208
203
209 $ hg push -r 4 -r 5 ../f; echo $?
204 $ hg push -r 4 -r 5 ../f
210 pushing to ../f
205 pushing to ../f
211 searching for changes
206 searching for changes
212 abort: push creates new remote branches: c!
207 abort: push creates new remote branches: c!
213 (use 'hg push --new-branch' to create new remote branches)
208 (use 'hg push --new-branch' to create new remote branches)
214 255
209 [255]
215
210
216
211
217 Multiple new branches:
212 Multiple new branches:
218
213
219 $ hg -q branch d
214 $ hg -q branch d
220 $ echo 6 > foo
215 $ echo 6 > foo
221 $ hg -q ci -m 6
216 $ hg -q ci -m 6
222
217
223 $ hg push ../f; echo $?
218 $ hg push ../f
224 pushing to ../f
219 pushing to ../f
225 searching for changes
220 searching for changes
226 abort: push creates new remote branches: c, d!
221 abort: push creates new remote branches: c, d!
227 (use 'hg push --new-branch' to create new remote branches)
222 (use 'hg push --new-branch' to create new remote branches)
228 255
223 [255]
229
224
230 $ hg push -r 4 -r 6 ../f; echo $?
225 $ hg push -r 4 -r 6 ../f
231 pushing to ../f
226 pushing to ../f
232 searching for changes
227 searching for changes
233 abort: push creates new remote branches: c, d!
228 abort: push creates new remote branches: c, d!
234 (use 'hg push --new-branch' to create new remote branches)
229 (use 'hg push --new-branch' to create new remote branches)
235 255
230 [255]
236
231
237 $ cd ../g
232 $ cd ../g
238
233
239
234
240 Fail on multiple head push:
235 Fail on multiple head push:
241
236
242 $ hg -q up 1
237 $ hg -q up 1
243 $ echo 7 > foo
238 $ echo 7 > foo
244 $ hg -q ci -m 7
239 $ hg -q ci -m 7
245
240
246 $ hg push -r 4 -r 7 ../f; echo $?
241 $ hg push -r 4 -r 7 ../f
247 pushing to ../f
242 pushing to ../f
248 searching for changes
243 searching for changes
249 abort: push creates new remote heads on branch 'a'!
244 abort: push creates new remote heads on branch 'a'!
250 (did you forget to merge? use push -f to force)
245 (did you forget to merge? use push -f to force)
251 255
246 [255]
252
247
253 Push replacement head on existing branches:
248 Push replacement head on existing branches:
254
249
255 $ hg -q up 3
250 $ hg -q up 3
256 $ echo 8 > foo
251 $ echo 8 > foo
257 $ hg -q ci -m 8
252 $ hg -q ci -m 8
258
253
259 $ hg push -r 7 -r 8 ../f; echo $?
254 $ hg push -r 7 -r 8 ../f
260 pushing to ../f
255 pushing to ../f
261 searching for changes
256 searching for changes
262 adding changesets
257 adding changesets
263 adding manifests
258 adding manifests
264 adding file changes
259 adding file changes
265 added 2 changesets with 2 changes to 1 files
260 added 2 changesets with 2 changes to 1 files
266 0
267
261
268
262
269 Merge of branch a to other branch b followed by unrelated push
263 Merge of branch a to other branch b followed by unrelated push
270 on branch a:
264 on branch a:
271
265
272 $ hg -q up 7
266 $ hg -q up 7
273 $ HGMERGE=true hg -q merge 8
267 $ HGMERGE=true hg -q merge 8
274 $ hg -q ci -m 9
268 $ hg -q ci -m 9
275 $ hg -q up 8
269 $ hg -q up 8
276 $ echo 10 > foo
270 $ echo 10 > foo
277 $ hg -q ci -m 10
271 $ hg -q ci -m 10
278
272
279 $ hg push -r 9 ../f; echo $?
273 $ hg push -r 9 ../f
280 pushing to ../f
274 pushing to ../f
281 searching for changes
275 searching for changes
282 adding changesets
276 adding changesets
283 adding manifests
277 adding manifests
284 adding file changes
278 adding file changes
285 added 1 changesets with 1 changes to 1 files (-1 heads)
279 added 1 changesets with 1 changes to 1 files (-1 heads)
286 0
287
280
288 $ hg push -r 10 ../f; echo $?
281 $ hg push -r 10 ../f
289 pushing to ../f
282 pushing to ../f
290 searching for changes
283 searching for changes
291 adding changesets
284 adding changesets
292 adding manifests
285 adding manifests
293 adding file changes
286 adding file changes
294 added 1 changesets with 1 changes to 1 files (+1 heads)
287 added 1 changesets with 1 changes to 1 files (+1 heads)
295 0
296
288
297
289
298 Cheating the counting algorithm:
290 Cheating the counting algorithm:
299
291
300 $ hg -q up 9
292 $ hg -q up 9
301 $ HGMERGE=true hg -q merge 2
293 $ HGMERGE=true hg -q merge 2
302 $ hg -q ci -m 11
294 $ hg -q ci -m 11
303 $ hg -q up 1
295 $ hg -q up 1
304 $ echo 12 > foo
296 $ echo 12 > foo
305 $ hg -q ci -m 12
297 $ hg -q ci -m 12
306
298
307 $ hg push -r 11 -r 12 ../f; echo $?
299 $ hg push -r 11 -r 12 ../f
308 pushing to ../f
300 pushing to ../f
309 searching for changes
301 searching for changes
310 adding changesets
302 adding changesets
311 adding manifests
303 adding manifests
312 adding file changes
304 adding file changes
313 added 2 changesets with 2 changes to 1 files
305 added 2 changesets with 2 changes to 1 files
314 0
315
306
316
307
317 Failed push of new named branch:
308 Failed push of new named branch:
318
309
319 $ echo 12 > foo
310 $ echo 12 > foo
320 $ hg -q ci -m 12a
311 $ hg -q ci -m 12a
321 [1]
312 [1]
322 $ hg -q up 11
313 $ hg -q up 11
323 $ echo 13 > foo
314 $ echo 13 > foo
324 $ hg -q branch e
315 $ hg -q branch e
325 $ hg -q ci -m 13d
316 $ hg -q ci -m 13d
326
317
327 $ hg push -r 12 -r 13 ../f; echo $?
318 $ hg push -r 12 -r 13 ../f
328 pushing to ../f
319 pushing to ../f
329 searching for changes
320 searching for changes
330 abort: push creates new remote branches: e!
321 abort: push creates new remote branches: e!
331 (use 'hg push --new-branch' to create new remote branches)
322 (use 'hg push --new-branch' to create new remote branches)
332 255
323 [255]
333
324
334
325
335 Using --new-branch to push new named branch:
326 Using --new-branch to push new named branch:
336
327
337 $ hg push --new-branch -r 12 -r 13 ../f; echo $?
328 $ hg push --new-branch -r 12 -r 13 ../f
338 pushing to ../f
329 pushing to ../f
339 searching for changes
330 searching for changes
340 adding changesets
331 adding changesets
341 adding manifests
332 adding manifests
342 adding file changes
333 adding file changes
343 added 1 changesets with 1 changes to 1 files
334 added 1 changesets with 1 changes to 1 files
344 0
345
335
346
336
347 Checking prepush logic does not allow silently pushing
337 Checking prepush logic does not allow silently pushing
348 multiple new heads:
338 multiple new heads:
349
339
350 $ cd ..
340 $ cd ..
351 $ hg init h
341 $ hg init h
352 $ echo init > h/init
342 $ echo init > h/init
353 $ hg -R h ci -Am init
343 $ hg -R h ci -Am init
354 adding init
344 adding init
355 $ echo a > h/a
345 $ echo a > h/a
356 $ hg -R h ci -Am a
346 $ hg -R h ci -Am a
357 adding a
347 adding a
358 $ hg clone h i
348 $ hg clone h i
359 updating to branch default
349 updating to branch default
360 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
350 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
361 $ hg -R h up 0
351 $ hg -R h up 0
362 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
352 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
363 $ echo b > h/b
353 $ echo b > h/b
364 $ hg -R h ci -Am b
354 $ hg -R h ci -Am b
365 adding b
355 adding b
366 created new head
356 created new head
367 $ hg -R i up 0
357 $ hg -R i up 0
368 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
358 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
369 $ echo c > i/c
359 $ echo c > i/c
370 $ hg -R i ci -Am c
360 $ hg -R i ci -Am c
371 adding c
361 adding c
372 created new head
362 created new head
373
363
374 $ hg -R i push h
364 $ hg -R i push h
375 pushing to h
365 pushing to h
376 searching for changes
366 searching for changes
377 abort: push creates new remote heads on branch 'default'!
367 abort: push creates new remote heads on branch 'default'!
378 (you should pull and merge or use push -f to force)
368 (you should pull and merge or use push -f to force)
379 [255]
369 [255]
380
370
381
371
382 Check prepush logic with merged branches:
372 Check prepush logic with merged branches:
383
373
384 $ hg init j
374 $ hg init j
385 $ hg -R j branch a
375 $ hg -R j branch a
386 marked working directory as branch a
376 marked working directory as branch a
387 $ echo init > j/foo
377 $ echo init > j/foo
388 $ hg -R j ci -Am init
378 $ hg -R j ci -Am init
389 adding foo
379 adding foo
390 $ hg clone j k
380 $ hg clone j k
391 updating to branch a
381 updating to branch a
392 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
382 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
393 $ echo a1 > j/foo
383 $ echo a1 > j/foo
394 $ hg -R j ci -m a1
384 $ hg -R j ci -m a1
395 $ hg -R k branch b
385 $ hg -R k branch b
396 marked working directory as branch b
386 marked working directory as branch b
397 $ echo b > k/foo
387 $ echo b > k/foo
398 $ hg -R k ci -m b
388 $ hg -R k ci -m b
399 $ hg -R k up 0
389 $ hg -R k up 0
400 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
390 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
401
391
402 $ hg -R k merge b
392 $ hg -R k merge b
403 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
393 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
404 (branch merge, don't forget to commit)
394 (branch merge, don't forget to commit)
405
395
406 $ hg -R k ci -m merge
396 $ hg -R k ci -m merge
407
397
408 $ hg -R k push -r a j
398 $ hg -R k push -r a j
409 pushing to j
399 pushing to j
410 searching for changes
400 searching for changes
411 abort: push creates new remote branches: b!
401 abort: push creates new remote branches: b!
412 (use 'hg push --new-branch' to create new remote branches)
402 (use 'hg push --new-branch' to create new remote branches)
413 [255]
403 [255]
414
404
415
405
416 Prepush -r should not allow you to sneak in new heads:
406 Prepush -r should not allow you to sneak in new heads:
417
407
418 $ hg init l
408 $ hg init l
419 $ cd l
409 $ cd l
420 $ echo a >> foo
410 $ echo a >> foo
421 $ hg -q add foo
411 $ hg -q add foo
422 $ hg -q branch a
412 $ hg -q branch a
423 $ hg -q ci -ma
413 $ hg -q ci -ma
424 $ hg -q up null
414 $ hg -q up null
425 $ echo a >> foo
415 $ echo a >> foo
426 $ hg -q add foo
416 $ hg -q add foo
427 $ hg -q branch b
417 $ hg -q branch b
428 $ hg -q ci -mb
418 $ hg -q ci -mb
429 $ cd ..
419 $ cd ..
430 $ hg -q clone l m -u a
420 $ hg -q clone l m -u a
431 $ cd m
421 $ cd m
432 $ hg -q merge b
422 $ hg -q merge b
433 $ hg -q ci -mmb
423 $ hg -q ci -mmb
434 $ hg -q up 0
424 $ hg -q up 0
435 $ echo a >> foo
425 $ echo a >> foo
436 $ hg -q ci -ma2
426 $ hg -q ci -ma2
437 $ hg -q up 2
427 $ hg -q up 2
438 $ echo a >> foo
428 $ echo a >> foo
439 $ hg -q branch -f b
429 $ hg -q branch -f b
440 $ hg -q ci -mb2
430 $ hg -q ci -mb2
441 $ hg -q merge 3
431 $ hg -q merge 3
442 $ hg -q ci -mma
432 $ hg -q ci -mma
443
433
444 $ hg push ../l -b b
434 $ hg push ../l -b b
445 pushing to ../l
435 pushing to ../l
446 searching for changes
436 searching for changes
447 abort: push creates new remote heads on branch 'a'!
437 abort: push creates new remote heads on branch 'a'!
448 (did you forget to merge? use push -f to force)
438 (did you forget to merge? use push -f to force)
449 [255]
439 [255]
450
440
451 $ cd ..
441 $ cd ..
452
442
453
443
454 Check prepush with new branch head on former topo non-head:
444 Check prepush with new branch head on former topo non-head:
455
445
456 $ hg init n
446 $ hg init n
457 $ cd n
447 $ cd n
458 $ hg branch A
448 $ hg branch A
459 marked working directory as branch A
449 marked working directory as branch A
460 $ echo a >a
450 $ echo a >a
461 $ hg ci -Ama
451 $ hg ci -Ama
462 adding a
452 adding a
463 $ hg branch B
453 $ hg branch B
464 marked working directory as branch B
454 marked working directory as branch B
465 $ echo b >b
455 $ echo b >b
466 $ hg ci -Amb
456 $ hg ci -Amb
467 adding b
457 adding b
468
458
469 b is now branch head of B, and a topological head
459 b is now branch head of B, and a topological head
470 a is now branch head of A, but not a topological head
460 a is now branch head of A, but not a topological head
471
461
472 $ hg clone . inner
462 $ hg clone . inner
473 updating to branch B
463 updating to branch B
474 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
464 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
475 $ cd inner
465 $ cd inner
476 $ hg up B
466 $ hg up B
477 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
467 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
478 $ echo b1 >b1
468 $ echo b1 >b1
479 $ hg ci -Amb1
469 $ hg ci -Amb1
480 adding b1
470 adding b1
481
471
482 in the clone b1 is now the head of B
472 in the clone b1 is now the head of B
483
473
484 $ cd ..
474 $ cd ..
485 $ hg up 0
475 $ hg up 0
486 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
476 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
487 $ echo a2 >a2
477 $ echo a2 >a2
488 $ hg ci -Ama2
478 $ hg ci -Ama2
489 adding a2
479 adding a2
490
480
491 a2 is now the new branch head of A, and a new topological head
481 a2 is now the new branch head of A, and a new topological head
492 it replaces a former inner branch head, so it should at most warn about
482 it replaces a former inner branch head, so it should at most warn about
493 A, not B
483 A, not B
494
484
495 glog of local:
485 glog of local:
496
486
497 $ hg glog --template "{rev}: {branches} {desc}\n"
487 $ hg glog --template "{rev}: {branches} {desc}\n"
498 @ 2: A a2
488 @ 2: A a2
499 |
489 |
500 | o 1: B b
490 | o 1: B b
501 |/
491 |/
502 o 0: A a
492 o 0: A a
503
493
504 glog of remote:
494 glog of remote:
505
495
506 $ hg glog -R inner --template "{rev}: {branches} {desc}\n"
496 $ hg glog -R inner --template "{rev}: {branches} {desc}\n"
507 @ 2: B b1
497 @ 2: B b1
508 |
498 |
509 o 1: B b
499 o 1: B b
510 |
500 |
511 o 0: A a
501 o 0: A a
512
502
513 outgoing:
503 outgoing:
514
504
515 $ hg out inner --template "{rev}: {branches} {desc}\n"
505 $ hg out inner --template "{rev}: {branches} {desc}\n"
516 comparing with inner
506 comparing with inner
517 searching for changes
507 searching for changes
518 2: A a2
508 2: A a2
519
509
520 $ hg push inner
510 $ hg push inner
521 pushing to inner
511 pushing to inner
522 searching for changes
512 searching for changes
523 adding changesets
513 adding changesets
524 adding manifests
514 adding manifests
525 adding file changes
515 adding file changes
526 added 1 changesets with 1 changes to 1 files (+1 heads)
516 added 1 changesets with 1 changes to 1 files (+1 heads)
527
517
528 $ cd ..
518 $ cd ..
529
519
530
520
531 Check prepush with new branch head on former topo head:
521 Check prepush with new branch head on former topo head:
532
522
533 $ hg init o
523 $ hg init o
534 $ cd o
524 $ cd o
535 $ hg branch A
525 $ hg branch A
536 marked working directory as branch A
526 marked working directory as branch A
537 $ echo a >a
527 $ echo a >a
538 $ hg ci -Ama
528 $ hg ci -Ama
539 adding a
529 adding a
540 $ hg branch B
530 $ hg branch B
541 marked working directory as branch B
531 marked working directory as branch B
542 $ echo b >b
532 $ echo b >b
543 $ hg ci -Amb
533 $ hg ci -Amb
544 adding b
534 adding b
545
535
546 b is now branch head of B, and a topological head
536 b is now branch head of B, and a topological head
547
537
548 $ hg up 0
538 $ hg up 0
549 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
539 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
550 $ echo a1 >a1
540 $ echo a1 >a1
551 $ hg ci -Ama1
541 $ hg ci -Ama1
552 adding a1
542 adding a1
553
543
554 a1 is now branch head of A, and a topological head
544 a1 is now branch head of A, and a topological head
555
545
556 $ hg clone . inner
546 $ hg clone . inner
557 updating to branch A
547 updating to branch A
558 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
548 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
559 $ cd inner
549 $ cd inner
560 $ hg up B
550 $ hg up B
561 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
551 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
562 $ echo b1 >b1
552 $ echo b1 >b1
563 $ hg ci -Amb1
553 $ hg ci -Amb1
564 adding b1
554 adding b1
565
555
566 in the clone b1 is now the head of B
556 in the clone b1 is now the head of B
567
557
568 $ cd ..
558 $ cd ..
569 $ echo a2 >a2
559 $ echo a2 >a2
570 $ hg ci -Ama2
560 $ hg ci -Ama2
571 adding a2
561 adding a2
572
562
573 a2 is now the new branch head of A, and a topological head
563 a2 is now the new branch head of A, and a topological head
574 it replaces a former topological and branch head, so this should not warn
564 it replaces a former topological and branch head, so this should not warn
575
565
576 glog of local:
566 glog of local:
577
567
578 $ hg glog --template "{rev}: {branches} {desc}\n"
568 $ hg glog --template "{rev}: {branches} {desc}\n"
579 @ 3: A a2
569 @ 3: A a2
580 |
570 |
581 o 2: A a1
571 o 2: A a1
582 |
572 |
583 | o 1: B b
573 | o 1: B b
584 |/
574 |/
585 o 0: A a
575 o 0: A a
586
576
587 glog of remote:
577 glog of remote:
588
578
589 $ hg glog -R inner --template "{rev}: {branches} {desc}\n"
579 $ hg glog -R inner --template "{rev}: {branches} {desc}\n"
590 @ 3: B b1
580 @ 3: B b1
591 |
581 |
592 | o 2: A a1
582 | o 2: A a1
593 | |
583 | |
594 o | 1: B b
584 o | 1: B b
595 |/
585 |/
596 o 0: A a
586 o 0: A a
597
587
598 outgoing:
588 outgoing:
599
589
600 $ hg out inner --template "{rev}: {branches} {desc}\n"
590 $ hg out inner --template "{rev}: {branches} {desc}\n"
601 comparing with inner
591 comparing with inner
602 searching for changes
592 searching for changes
603 3: A a2
593 3: A a2
604
594
605 $ hg push inner
595 $ hg push inner
606 pushing to inner
596 pushing to inner
607 searching for changes
597 searching for changes
608 adding changesets
598 adding changesets
609 adding manifests
599 adding manifests
610 adding file changes
600 adding file changes
611 added 1 changesets with 1 changes to 1 files
601 added 1 changesets with 1 changes to 1 files
612
602
613 $ cd ..
603 $ cd ..
614
604
615
605
616 Check prepush with new branch head and new child of former branch head
606 Check prepush with new branch head and new child of former branch head
617 but child is on different branch:
607 but child is on different branch:
618
608
619 $ hg init p
609 $ hg init p
620 $ cd p
610 $ cd p
621 $ hg branch A
611 $ hg branch A
622 marked working directory as branch A
612 marked working directory as branch A
623 $ echo a0 >a
613 $ echo a0 >a
624 $ hg ci -Ama0
614 $ hg ci -Ama0
625 adding a
615 adding a
626 $ echo a1 >a
616 $ echo a1 >a
627 $ hg ci -ma1
617 $ hg ci -ma1
628 $ hg up null
618 $ hg up null
629 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
619 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
630 $ hg branch B
620 $ hg branch B
631 marked working directory as branch B
621 marked working directory as branch B
632 $ echo b0 >b
622 $ echo b0 >b
633 $ hg ci -Amb0
623 $ hg ci -Amb0
634 adding b
624 adding b
635 $ echo b1 >b
625 $ echo b1 >b
636 $ hg ci -mb1
626 $ hg ci -mb1
637
627
638 $ hg clone . inner
628 $ hg clone . inner
639 updating to branch B
629 updating to branch B
640 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
630 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
641
631
642 $ hg up A
632 $ hg up A
643 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
633 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
644 $ hg branch -f B
634 $ hg branch -f B
645 marked working directory as branch B
635 marked working directory as branch B
646 $ echo a3 >a
636 $ echo a3 >a
647 $ hg ci -ma3
637 $ hg ci -ma3
648 created new head
638 created new head
649 $ hg up 3
639 $ hg up 3
650 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
640 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
651 $ hg branch -f A
641 $ hg branch -f A
652 marked working directory as branch A
642 marked working directory as branch A
653 $ echo b3 >b
643 $ echo b3 >b
654 $ hg ci -mb3
644 $ hg ci -mb3
655 created new head
645 created new head
656
646
657 glog of local:
647 glog of local:
658
648
659 $ hg glog --template "{rev}: {branches} {desc}\n"
649 $ hg glog --template "{rev}: {branches} {desc}\n"
660 @ 5: A b3
650 @ 5: A b3
661 |
651 |
662 | o 4: B a3
652 | o 4: B a3
663 | |
653 | |
664 o | 3: B b1
654 o | 3: B b1
665 | |
655 | |
666 o | 2: B b0
656 o | 2: B b0
667 /
657 /
668 o 1: A a1
658 o 1: A a1
669 |
659 |
670 o 0: A a0
660 o 0: A a0
671
661
672 glog of remote:
662 glog of remote:
673
663
674 $ hg glog -R inner --template "{rev}: {branches} {desc}\n"
664 $ hg glog -R inner --template "{rev}: {branches} {desc}\n"
675 @ 3: B b1
665 @ 3: B b1
676 |
666 |
677 o 2: B b0
667 o 2: B b0
678
668
679 o 1: A a1
669 o 1: A a1
680 |
670 |
681 o 0: A a0
671 o 0: A a0
682
672
683 outgoing:
673 outgoing:
684
674
685 $ hg out inner --template "{rev}: {branches} {desc}\n"
675 $ hg out inner --template "{rev}: {branches} {desc}\n"
686 comparing with inner
676 comparing with inner
687 searching for changes
677 searching for changes
688 4: B a3
678 4: B a3
689 5: A b3
679 5: A b3
690
680
691 $ hg push inner
681 $ hg push inner
692 pushing to inner
682 pushing to inner
693 searching for changes
683 searching for changes
694 abort: push creates new remote heads on branch 'A'!
684 abort: push creates new remote heads on branch 'A'!
695 (did you forget to merge? use push -f to force)
685 (did you forget to merge? use push -f to force)
696 [255]
686 [255]
697
687
698 $ hg push inner -r4 -r5
688 $ hg push inner -r4 -r5
699 pushing to inner
689 pushing to inner
700 searching for changes
690 searching for changes
701 abort: push creates new remote heads on branch 'A'!
691 abort: push creates new remote heads on branch 'A'!
702 (did you forget to merge? use push -f to force)
692 (did you forget to merge? use push -f to force)
703 [255]
693 [255]
704
694
705 $ hg in inner
695 $ hg in inner
706 comparing with inner
696 comparing with inner
707 searching for changes
697 searching for changes
708 no changes found
698 no changes found
709 [1]
699 [1]
@@ -1,256 +1,256 b''
1 $ remove() {
1 $ remove() {
2 > hg rm $@
2 > hg rm $@
3 > echo "exit code: $?"
3 > echo "exit code: $?" # no-check-code
4 > hg st
4 > hg st
5 > # do not use ls -R, which recurses in .hg subdirs on Mac OS X 10.5
5 > # do not use ls -R, which recurses in .hg subdirs on Mac OS X 10.5
6 > find . -name .hg -prune -o -type f -print | sort
6 > find . -name .hg -prune -o -type f -print | sort
7 > hg up -C
7 > hg up -C
8 > }
8 > }
9
9
10 $ hg init a
10 $ hg init a
11 $ cd a
11 $ cd a
12 $ echo a > foo
12 $ echo a > foo
13
13
14 file not managed
14 file not managed
15
15
16 $ remove foo
16 $ remove foo
17 not removing foo: file is untracked
17 not removing foo: file is untracked
18 exit code: 1
18 exit code: 1
19 ? foo
19 ? foo
20 ./foo
20 ./foo
21 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
22
22
23 $ hg add foo
23 $ hg add foo
24 $ hg commit -m1
24 $ hg commit -m1
25
25
26 the table cases
26 the table cases
27 00 state added, options none
27 00 state added, options none
28
28
29 $ echo b > bar
29 $ echo b > bar
30 $ hg add bar
30 $ hg add bar
31 $ remove bar
31 $ remove bar
32 not removing bar: file has been marked for add (use -f to force removal)
32 not removing bar: file has been marked for add (use -f to force removal)
33 exit code: 1
33 exit code: 1
34 A bar
34 A bar
35 ./bar
35 ./bar
36 ./foo
36 ./foo
37 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
37 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
38
38
39 01 state clean, options none
39 01 state clean, options none
40
40
41 $ remove foo
41 $ remove foo
42 exit code: 0
42 exit code: 0
43 R foo
43 R foo
44 ? bar
44 ? bar
45 ./bar
45 ./bar
46 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
47
47
48 02 state modified, options none
48 02 state modified, options none
49
49
50 $ echo b >> foo
50 $ echo b >> foo
51 $ remove foo
51 $ remove foo
52 not removing foo: file is modified (use -f to force removal)
52 not removing foo: file is modified (use -f to force removal)
53 exit code: 1
53 exit code: 1
54 M foo
54 M foo
55 ? bar
55 ? bar
56 ./bar
56 ./bar
57 ./foo
57 ./foo
58 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
58 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
59
59
60 03 state missing, options none
60 03 state missing, options none
61
61
62 $ rm foo
62 $ rm foo
63 $ remove foo
63 $ remove foo
64 exit code: 0
64 exit code: 0
65 R foo
65 R foo
66 ? bar
66 ? bar
67 ./bar
67 ./bar
68 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
68 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
69
69
70 10 state added, options -f
70 10 state added, options -f
71
71
72 $ echo b > bar
72 $ echo b > bar
73 $ hg add bar
73 $ hg add bar
74 $ remove -f bar
74 $ remove -f bar
75 exit code: 0
75 exit code: 0
76 ? bar
76 ? bar
77 ./bar
77 ./bar
78 ./foo
78 ./foo
79 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
79 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
80 $ rm bar
80 $ rm bar
81
81
82 11 state clean, options -f
82 11 state clean, options -f
83
83
84 $ remove -f foo
84 $ remove -f foo
85 exit code: 0
85 exit code: 0
86 R foo
86 R foo
87 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
87 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
88
88
89 12 state modified, options -f
89 12 state modified, options -f
90
90
91 $ echo b >> foo
91 $ echo b >> foo
92 $ remove -f foo
92 $ remove -f foo
93 exit code: 0
93 exit code: 0
94 R foo
94 R foo
95 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
95 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
96
96
97 13 state missing, options -f
97 13 state missing, options -f
98
98
99 $ rm foo
99 $ rm foo
100 $ remove -f foo
100 $ remove -f foo
101 exit code: 0
101 exit code: 0
102 R foo
102 R foo
103 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
103 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
104
104
105 20 state added, options -A
105 20 state added, options -A
106
106
107 $ echo b > bar
107 $ echo b > bar
108 $ hg add bar
108 $ hg add bar
109 $ remove -A bar
109 $ remove -A bar
110 not removing bar: file still exists (use -f to force removal)
110 not removing bar: file still exists (use -f to force removal)
111 exit code: 1
111 exit code: 1
112 A bar
112 A bar
113 ./bar
113 ./bar
114 ./foo
114 ./foo
115 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
115 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
116
116
117 21 state clean, options -A
117 21 state clean, options -A
118
118
119 $ remove -A foo
119 $ remove -A foo
120 not removing foo: file still exists (use -f to force removal)
120 not removing foo: file still exists (use -f to force removal)
121 exit code: 1
121 exit code: 1
122 ? bar
122 ? bar
123 ./bar
123 ./bar
124 ./foo
124 ./foo
125 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
125 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
126
126
127 22 state modified, options -A
127 22 state modified, options -A
128
128
129 $ echo b >> foo
129 $ echo b >> foo
130 $ remove -A foo
130 $ remove -A foo
131 not removing foo: file still exists (use -f to force removal)
131 not removing foo: file still exists (use -f to force removal)
132 exit code: 1
132 exit code: 1
133 M foo
133 M foo
134 ? bar
134 ? bar
135 ./bar
135 ./bar
136 ./foo
136 ./foo
137 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
137 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
138
138
139 23 state missing, options -A
139 23 state missing, options -A
140
140
141 $ rm foo
141 $ rm foo
142 $ remove -A foo
142 $ remove -A foo
143 exit code: 0
143 exit code: 0
144 R foo
144 R foo
145 ? bar
145 ? bar
146 ./bar
146 ./bar
147 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
147 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
148
148
149 30 state added, options -Af
149 30 state added, options -Af
150
150
151 $ echo b > bar
151 $ echo b > bar
152 $ hg add bar
152 $ hg add bar
153 $ remove -Af bar
153 $ remove -Af bar
154 exit code: 0
154 exit code: 0
155 ? bar
155 ? bar
156 ./bar
156 ./bar
157 ./foo
157 ./foo
158 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
158 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
159 $ rm bar
159 $ rm bar
160
160
161 31 state clean, options -Af
161 31 state clean, options -Af
162
162
163 $ remove -Af foo
163 $ remove -Af foo
164 exit code: 0
164 exit code: 0
165 R foo
165 R foo
166 ./foo
166 ./foo
167 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
167 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
168
168
169 32 state modified, options -Af
169 32 state modified, options -Af
170
170
171 $ echo b >> foo
171 $ echo b >> foo
172 $ remove -Af foo
172 $ remove -Af foo
173 exit code: 0
173 exit code: 0
174 R foo
174 R foo
175 ./foo
175 ./foo
176 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
176 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
177
177
178 33 state missing, options -Af
178 33 state missing, options -Af
179
179
180 $ rm foo
180 $ rm foo
181 $ remove -Af foo
181 $ remove -Af foo
182 exit code: 0
182 exit code: 0
183 R foo
183 R foo
184 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
184 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
185
185
186 test some directory stuff
186 test some directory stuff
187
187
188 $ mkdir test
188 $ mkdir test
189 $ echo a > test/foo
189 $ echo a > test/foo
190 $ echo b > test/bar
190 $ echo b > test/bar
191 $ hg ci -Am2
191 $ hg ci -Am2
192 adding test/bar
192 adding test/bar
193 adding test/foo
193 adding test/foo
194
194
195 dir, options none
195 dir, options none
196
196
197 $ rm test/bar
197 $ rm test/bar
198 $ remove test
198 $ remove test
199 removing test/bar
199 removing test/bar
200 removing test/foo
200 removing test/foo
201 exit code: 0
201 exit code: 0
202 R test/bar
202 R test/bar
203 R test/foo
203 R test/foo
204 ./foo
204 ./foo
205 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
205 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
206
206
207 dir, options -f
207 dir, options -f
208
208
209 $ rm test/bar
209 $ rm test/bar
210 $ remove -f test
210 $ remove -f test
211 removing test/bar
211 removing test/bar
212 removing test/foo
212 removing test/foo
213 exit code: 0
213 exit code: 0
214 R test/bar
214 R test/bar
215 R test/foo
215 R test/foo
216 ./foo
216 ./foo
217 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
217 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
218
218
219 dir, options -A
219 dir, options -A
220
220
221 $ rm test/bar
221 $ rm test/bar
222 $ remove -A test
222 $ remove -A test
223 not removing test/foo: file still exists (use -f to force removal)
223 not removing test/foo: file still exists (use -f to force removal)
224 removing test/bar
224 removing test/bar
225 exit code: 1
225 exit code: 1
226 R test/bar
226 R test/bar
227 ./foo
227 ./foo
228 ./test/foo
228 ./test/foo
229 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
229 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
230
230
231 dir, options -Af
231 dir, options -Af
232
232
233 $ rm test/bar
233 $ rm test/bar
234 $ remove -Af test
234 $ remove -Af test
235 removing test/bar
235 removing test/bar
236 removing test/foo
236 removing test/foo
237 exit code: 0
237 exit code: 0
238 R test/bar
238 R test/bar
239 R test/foo
239 R test/foo
240 ./foo
240 ./foo
241 ./test/foo
241 ./test/foo
242 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
242 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
243
243
244 test remove dropping empty trees (issue1861)
244 test remove dropping empty trees (issue1861)
245
245
246 $ mkdir -p issue1861/b/c
246 $ mkdir -p issue1861/b/c
247 $ echo x > issue1861/x
247 $ echo x > issue1861/x
248 $ echo y > issue1861/b/c/y
248 $ echo y > issue1861/b/c/y
249 $ hg ci -Am add
249 $ hg ci -Am add
250 adding issue1861/b/c/y
250 adding issue1861/b/c/y
251 adding issue1861/x
251 adding issue1861/x
252 $ hg rm issue1861/b
252 $ hg rm issue1861/b
253 removing issue1861/b/c/y
253 removing issue1861/b/c/y
254 $ hg ci -m remove
254 $ hg ci -m remove
255 $ ls issue1861
255 $ ls issue1861
256 x
256 x
@@ -1,54 +1,52 b''
1 $ set -e
2
3 $ mkdir test
1 $ mkdir test
4 $ cd test
2 $ cd test
5 $ echo foo>foo
3 $ echo foo>foo
6 $ hg init
4 $ hg init
7 $ hg addremove
5 $ hg addremove
8 adding foo
6 adding foo
9 $ hg commit -m "1"
7 $ hg commit -m "1"
10
8
11 $ hg verify
9 $ hg verify
12 checking changesets
10 checking changesets
13 checking manifests
11 checking manifests
14 crosschecking files in changesets and manifests
12 crosschecking files in changesets and manifests
15 checking files
13 checking files
16 1 files, 1 changesets, 1 total revisions
14 1 files, 1 changesets, 1 total revisions
17
15
18 $ hg clone . ../branch
16 $ hg clone . ../branch
19 updating to branch default
17 updating to branch default
20 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
18 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 $ cd ../branch
19 $ cd ../branch
22 $ hg co
20 $ hg co
23 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
24 $ echo bar>>foo
22 $ echo bar>>foo
25 $ hg commit -m "2"
23 $ hg commit -m "2"
26
24
27 $ cd ../test
25 $ cd ../test
28
26
29 $ hg pull ../branch
27 $ hg pull ../branch
30 pulling from ../branch
28 pulling from ../branch
31 searching for changes
29 searching for changes
32 adding changesets
30 adding changesets
33 adding manifests
31 adding manifests
34 adding file changes
32 adding file changes
35 added 1 changesets with 1 changes to 1 files
33 added 1 changesets with 1 changes to 1 files
36 (run 'hg update' to get a working copy)
34 (run 'hg update' to get a working copy)
37
35
38 $ hg verify
36 $ hg verify
39 checking changesets
37 checking changesets
40 checking manifests
38 checking manifests
41 crosschecking files in changesets and manifests
39 crosschecking files in changesets and manifests
42 checking files
40 checking files
43 1 files, 2 changesets, 2 total revisions
41 1 files, 2 changesets, 2 total revisions
44
42
45 $ hg co
43 $ hg co
46 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
44 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
47
45
48 $ cat foo
46 $ cat foo
49 foo
47 foo
50 bar
48 bar
51
49
52 $ hg manifest --debug
50 $ hg manifest --debug
53 6f4310b00b9a147241b071a60c28a650827fb03d 644 foo
51 6f4310b00b9a147241b071a60c28a650827fb03d 644 foo
54
52
@@ -1,280 +1,279 b''
1 $ echo "[extensions]" >> $HGRCPATH
1 $ echo "[extensions]" >> $HGRCPATH
2 $ echo "color=" >> $HGRCPATH
2 $ echo "color=" >> $HGRCPATH
3 $ echo "[color]" >> $HGRCPATH
3 $ echo "[color]" >> $HGRCPATH
4 $ echo "mode=ansi" >> $HGRCPATH
4 $ echo "mode=ansi" >> $HGRCPATH
5
5
6 $ hg init repo1
6 $ hg init repo1
7 $ cd repo1
7 $ cd repo1
8 $ mkdir a b a/1 b/1 b/2
8 $ mkdir a b a/1 b/1 b/2
9 $ touch in_root a/in_a b/in_b a/1/in_a_1 b/1/in_b_1 b/2/in_b_2
9 $ touch in_root a/in_a b/in_b a/1/in_a_1 b/1/in_b_1 b/2/in_b_2
10
10
11 hg status in repo root:
11 hg status in repo root:
12
12
13 $ hg status --color=always
13 $ hg status --color=always
14 ? a/1/in_a_1
14 ? a/1/in_a_1
15 ? a/in_a
15 ? a/in_a
16 ? b/1/in_b_1
16 ? b/1/in_b_1
17 ? b/2/in_b_2
17 ? b/2/in_b_2
18 ? b/in_b
18 ? b/in_b
19 ? in_root
19 ? in_root
20
20
21 hg status . in repo root:
21 hg status . in repo root:
22
22
23 $ hg status --color=always .
23 $ hg status --color=always .
24 ? a/1/in_a_1
24 ? a/1/in_a_1
25 ? a/in_a
25 ? a/in_a
26 ? b/1/in_b_1
26 ? b/1/in_b_1
27 ? b/2/in_b_2
27 ? b/2/in_b_2
28 ? b/in_b
28 ? b/in_b
29 ? in_root
29 ? in_root
30
30
31 $ hg status --color=always --cwd a
31 $ hg status --color=always --cwd a
32 ? a/1/in_a_1
32 ? a/1/in_a_1
33 ? a/in_a
33 ? a/in_a
34 ? b/1/in_b_1
34 ? b/1/in_b_1
35 ? b/2/in_b_2
35 ? b/2/in_b_2
36 ? b/in_b
36 ? b/in_b
37 ? in_root
37 ? in_root
38 $ hg status --color=always --cwd a .
38 $ hg status --color=always --cwd a .
39 ? 1/in_a_1
39 ? 1/in_a_1
40 ? in_a
40 ? in_a
41 $ hg status --color=always --cwd a ..
41 $ hg status --color=always --cwd a ..
42 ? 1/in_a_1
42 ? 1/in_a_1
43 ? in_a
43 ? in_a
44 ? ../b/1/in_b_1
44 ? ../b/1/in_b_1
45 ? ../b/2/in_b_2
45 ? ../b/2/in_b_2
46 ? ../b/in_b
46 ? ../b/in_b
47 ? ../in_root
47 ? ../in_root
48
48
49 $ hg status --color=always --cwd b
49 $ hg status --color=always --cwd b
50 ? a/1/in_a_1
50 ? a/1/in_a_1
51 ? a/in_a
51 ? a/in_a
52 ? b/1/in_b_1
52 ? b/1/in_b_1
53 ? b/2/in_b_2
53 ? b/2/in_b_2
54 ? b/in_b
54 ? b/in_b
55 ? in_root
55 ? in_root
56 $ hg status --color=always --cwd b .
56 $ hg status --color=always --cwd b .
57 ? 1/in_b_1
57 ? 1/in_b_1
58 ? 2/in_b_2
58 ? 2/in_b_2
59 ? in_b
59 ? in_b
60 $ hg status --color=always --cwd b ..
60 $ hg status --color=always --cwd b ..
61 ? ../a/1/in_a_1
61 ? ../a/1/in_a_1
62 ? ../a/in_a
62 ? ../a/in_a
63 ? 1/in_b_1
63 ? 1/in_b_1
64 ? 2/in_b_2
64 ? 2/in_b_2
65 ? in_b
65 ? in_b
66 ? ../in_root
66 ? ../in_root
67
67
68 $ hg status --color=always --cwd a/1
68 $ hg status --color=always --cwd a/1
69 ? a/1/in_a_1
69 ? a/1/in_a_1
70 ? a/in_a
70 ? a/in_a
71 ? b/1/in_b_1
71 ? b/1/in_b_1
72 ? b/2/in_b_2
72 ? b/2/in_b_2
73 ? b/in_b
73 ? b/in_b
74 ? in_root
74 ? in_root
75 $ hg status --color=always --cwd a/1 .
75 $ hg status --color=always --cwd a/1 .
76 ? in_a_1
76 ? in_a_1
77 $ hg status --color=always --cwd a/1 ..
77 $ hg status --color=always --cwd a/1 ..
78 ? in_a_1
78 ? in_a_1
79 ? ../in_a
79 ? ../in_a
80
80
81 $ hg status --color=always --cwd b/1
81 $ hg status --color=always --cwd b/1
82 ? a/1/in_a_1
82 ? a/1/in_a_1
83 ? a/in_a
83 ? a/in_a
84 ? b/1/in_b_1
84 ? b/1/in_b_1
85 ? b/2/in_b_2
85 ? b/2/in_b_2
86 ? b/in_b
86 ? b/in_b
87 ? in_root
87 ? in_root
88 $ hg status --color=always --cwd b/1 .
88 $ hg status --color=always --cwd b/1 .
89 ? in_b_1
89 ? in_b_1
90 $ hg status --color=always --cwd b/1 ..
90 $ hg status --color=always --cwd b/1 ..
91 ? in_b_1
91 ? in_b_1
92 ? ../2/in_b_2
92 ? ../2/in_b_2
93 ? ../in_b
93 ? ../in_b
94
94
95 $ hg status --color=always --cwd b/2
95 $ hg status --color=always --cwd b/2
96 ? a/1/in_a_1
96 ? a/1/in_a_1
97 ? a/in_a
97 ? a/in_a
98 ? b/1/in_b_1
98 ? b/1/in_b_1
99 ? b/2/in_b_2
99 ? b/2/in_b_2
100 ? b/in_b
100 ? b/in_b
101 ? in_root
101 ? in_root
102 $ hg status --color=always --cwd b/2 .
102 $ hg status --color=always --cwd b/2 .
103 ? in_b_2
103 ? in_b_2
104 $ hg status --color=always --cwd b/2 ..
104 $ hg status --color=always --cwd b/2 ..
105 ? ../1/in_b_1
105 ? ../1/in_b_1
106 ? in_b_2
106 ? in_b_2
107 ? ../in_b
107 ? ../in_b
108 $ cd ..
108 $ cd ..
109
109
110 $ hg init repo2
110 $ hg init repo2
111 $ cd repo2
111 $ cd repo2
112 $ touch modified removed deleted ignored
112 $ touch modified removed deleted ignored
113 $ echo "^ignored$" > .hgignore
113 $ echo "^ignored$" > .hgignore
114 $ hg ci -A -m 'initial checkin'
114 $ hg ci -A -m 'initial checkin'
115 adding .hgignore
115 adding .hgignore
116 adding deleted
116 adding deleted
117 adding modified
117 adding modified
118 adding removed
118 adding removed
119 $ touch modified added unknown ignored
119 $ touch modified added unknown ignored
120 $ hg add added
120 $ hg add added
121 $ hg remove removed
121 $ hg remove removed
122 $ rm deleted
122 $ rm deleted
123
123
124 hg status:
124 hg status:
125
125
126 $ hg status --color=always
126 $ hg status --color=always
127 A added
127 A added
128 R removed
128 R removed
129 ! deleted
129 ! deleted
130 ? unknown
130 ? unknown
131
131
132 hg status modified added removed deleted unknown never-existed ignored:
132 hg status modified added removed deleted unknown never-existed ignored:
133
133
134 $ hg status --color=always modified added removed deleted unknown never-existed ignored
134 $ hg status --color=always modified added removed deleted unknown never-existed ignored
135 never-existed: No such file or directory
135 never-existed: No such file or directory
136 A added
136 A added
137 R removed
137 R removed
138 ! deleted
138 ! deleted
139 ? unknown
139 ? unknown
140
140
141 $ hg copy modified copied
141 $ hg copy modified copied
142
142
143 hg status -C:
143 hg status -C:
144
144
145 $ hg status --color=always -C
145 $ hg status --color=always -C
146 A added
146 A added
147 A copied
147 A copied
148  modified
148  modified
149 R removed
149 R removed
150 ! deleted
150 ! deleted
151 ? unknown
151 ? unknown
152
152
153 hg status -A:
153 hg status -A:
154
154
155 $ hg status --color=always -A
155 $ hg status --color=always -A
156 A added
156 A added
157 A copied
157 A copied
158  modified
158  modified
159 R removed
159 R removed
160 ! deleted
160 ! deleted
161 ? unknown
161 ? unknown
162 I ignored
162 I ignored
163 C .hgignore
163 C .hgignore
164 C modified
164 C modified
165
165
166
166
167 $ echo "^ignoreddir$" > .hgignore
167 $ echo "^ignoreddir$" > .hgignore
168 $ mkdir ignoreddir
168 $ mkdir ignoreddir
169 $ touch ignoreddir/file
169 $ touch ignoreddir/file
170
170
171 hg status ignoreddir/file:
171 hg status ignoreddir/file:
172
172
173 $ hg status --color=always ignoreddir/file
173 $ hg status --color=always ignoreddir/file
174
174
175 hg status -i ignoreddir/file:
175 hg status -i ignoreddir/file:
176
176
177 $ hg status --color=always -i ignoreddir/file
177 $ hg status --color=always -i ignoreddir/file
178 I ignoreddir/file
178 I ignoreddir/file
179 $ cd ..
179 $ cd ..
180
180
181 check 'status -q' and some combinations
181 check 'status -q' and some combinations
182
182
183 $ hg init repo3
183 $ hg init repo3
184 $ cd repo3
184 $ cd repo3
185 $ touch modified removed deleted ignored
185 $ touch modified removed deleted ignored
186 $ echo "^ignored$" > .hgignore
186 $ echo "^ignored$" > .hgignore
187 $ hg commit -A -m 'initial checkin'
187 $ hg commit -A -m 'initial checkin'
188 adding .hgignore
188 adding .hgignore
189 adding deleted
189 adding deleted
190 adding modified
190 adding modified
191 adding removed
191 adding removed
192 $ touch added unknown ignored
192 $ touch added unknown ignored
193 $ hg add added
193 $ hg add added
194 $ echo "test" >> modified
194 $ echo "test" >> modified
195 $ hg remove removed
195 $ hg remove removed
196 $ rm deleted
196 $ rm deleted
197 $ hg copy modified copied
197 $ hg copy modified copied
198
198
199 test unknown color
199 test unknown color
200
200
201 $ hg --config color.status.modified=periwinkle status --color=always
201 $ hg --config color.status.modified=periwinkle status --color=always
202 ignoring unknown color/effect 'periwinkle' (configured in color.status.modified)
202 ignoring unknown color/effect 'periwinkle' (configured in color.status.modified)
203 M modified
203 M modified
204 A added
204 A added
205 A copied
205 A copied
206 R removed
206 R removed
207 ! deleted
207 ! deleted
208 ? unknown
208 ? unknown
209
209
210 Run status with 2 different flags.
210 Run status with 2 different flags.
211 Check if result is the same or different.
211 Check if result is the same or different.
212 If result is not as expected, raise error
212 If result is not as expected, raise error
213
213
214 $ assert() {
214 $ assert() {
215 > hg status --color=always $1 > ../a
215 > hg status --color=always $1 > ../a
216 > hg status --color=always $2 > ../b
216 > hg status --color=always $2 > ../b
217 > out=`diff ../a ../b`
217 > if diff ../a ../b > /dev/null; then
218 > if [ $? -ne 0 ]; then
218 > out=0
219 > else
219 > out=1
220 > out=1
220 > else
221 > out=0
222 > fi
221 > fi
223 > if [ $3 -eq 0 ]; then
222 > if [ $3 -eq 0 ]; then
224 > df="same"
223 > df="same"
225 > else
224 > else
226 > df="different"
225 > df="different"
227 > fi
226 > fi
228 > if [ $out -ne $3 ]; then
227 > if [ $out -ne $3 ]; then
229 > echo "Error on $1 and $2, should be $df."
228 > echo "Error on $1 and $2, should be $df."
230 > fi
229 > fi
231 > }
230 > }
232
231
233 assert flag1 flag2 [0-same | 1-different]
232 assert flag1 flag2 [0-same | 1-different]
234
233
235 $ assert "-q" "-mard" 0
234 $ assert "-q" "-mard" 0
236 $ assert "-A" "-marduicC" 0
235 $ assert "-A" "-marduicC" 0
237 $ assert "-qA" "-mardcC" 0
236 $ assert "-qA" "-mardcC" 0
238 $ assert "-qAui" "-A" 0
237 $ assert "-qAui" "-A" 0
239 $ assert "-qAu" "-marducC" 0
238 $ assert "-qAu" "-marducC" 0
240 $ assert "-qAi" "-mardicC" 0
239 $ assert "-qAi" "-mardicC" 0
241 $ assert "-qu" "-u" 0
240 $ assert "-qu" "-u" 0
242 $ assert "-q" "-u" 1
241 $ assert "-q" "-u" 1
243 $ assert "-m" "-a" 1
242 $ assert "-m" "-a" 1
244 $ assert "-r" "-d" 1
243 $ assert "-r" "-d" 1
245 $ cd ..
244 $ cd ..
246
245
247 test 'resolve -l'
246 test 'resolve -l'
248
247
249 $ hg init repo4
248 $ hg init repo4
250 $ cd repo4
249 $ cd repo4
251 $ echo "file a" > a
250 $ echo "file a" > a
252 $ echo "file b" > b
251 $ echo "file b" > b
253 $ hg add a b
252 $ hg add a b
254 $ hg commit -m "initial"
253 $ hg commit -m "initial"
255 $ echo "file a change 1" > a
254 $ echo "file a change 1" > a
256 $ echo "file b change 1" > b
255 $ echo "file b change 1" > b
257 $ hg commit -m "head 1"
256 $ hg commit -m "head 1"
258 $ hg update 0
257 $ hg update 0
259 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
258 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
260 $ echo "file a change 2" > a
259 $ echo "file a change 2" > a
261 $ echo "file b change 2" > b
260 $ echo "file b change 2" > b
262 $ hg commit -m "head 2"
261 $ hg commit -m "head 2"
263 created new head
262 created new head
264 $ hg merge
263 $ hg merge
265 merging a
264 merging a
266 warning: conflicts during merge.
265 warning: conflicts during merge.
267 merging a failed!
266 merging a failed!
268 merging b
267 merging b
269 warning: conflicts during merge.
268 warning: conflicts during merge.
270 merging b failed!
269 merging b failed!
271 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
270 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
272 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
271 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
273 [1]
272 [1]
274 $ hg resolve -m b
273 $ hg resolve -m b
275
274
276 hg resolve with one unresolved, one resolved:
275 hg resolve with one unresolved, one resolved:
277
276
278 $ hg resolve --color=always -l
277 $ hg resolve --color=always -l
279 U a
278 U a
280 R b
279 R b
@@ -1,275 +1,274 b''
1 $ hg init repo1
1 $ hg init repo1
2 $ cd repo1
2 $ cd repo1
3 $ mkdir a b a/1 b/1 b/2
3 $ mkdir a b a/1 b/1 b/2
4 $ touch in_root a/in_a b/in_b a/1/in_a_1 b/1/in_b_1 b/2/in_b_2
4 $ touch in_root a/in_a b/in_b a/1/in_a_1 b/1/in_b_1 b/2/in_b_2
5
5
6 hg status in repo root:
6 hg status in repo root:
7
7
8 $ hg status
8 $ hg status
9 ? a/1/in_a_1
9 ? a/1/in_a_1
10 ? a/in_a
10 ? a/in_a
11 ? b/1/in_b_1
11 ? b/1/in_b_1
12 ? b/2/in_b_2
12 ? b/2/in_b_2
13 ? b/in_b
13 ? b/in_b
14 ? in_root
14 ? in_root
15
15
16 hg status . in repo root:
16 hg status . in repo root:
17
17
18 $ hg status .
18 $ hg status .
19 ? a/1/in_a_1
19 ? a/1/in_a_1
20 ? a/in_a
20 ? a/in_a
21 ? b/1/in_b_1
21 ? b/1/in_b_1
22 ? b/2/in_b_2
22 ? b/2/in_b_2
23 ? b/in_b
23 ? b/in_b
24 ? in_root
24 ? in_root
25
25
26 $ hg status --cwd a
26 $ hg status --cwd a
27 ? a/1/in_a_1
27 ? a/1/in_a_1
28 ? a/in_a
28 ? a/in_a
29 ? b/1/in_b_1
29 ? b/1/in_b_1
30 ? b/2/in_b_2
30 ? b/2/in_b_2
31 ? b/in_b
31 ? b/in_b
32 ? in_root
32 ? in_root
33 $ hg status --cwd a .
33 $ hg status --cwd a .
34 ? 1/in_a_1
34 ? 1/in_a_1
35 ? in_a
35 ? in_a
36 $ hg status --cwd a ..
36 $ hg status --cwd a ..
37 ? 1/in_a_1
37 ? 1/in_a_1
38 ? in_a
38 ? in_a
39 ? ../b/1/in_b_1
39 ? ../b/1/in_b_1
40 ? ../b/2/in_b_2
40 ? ../b/2/in_b_2
41 ? ../b/in_b
41 ? ../b/in_b
42 ? ../in_root
42 ? ../in_root
43
43
44 $ hg status --cwd b
44 $ hg status --cwd b
45 ? a/1/in_a_1
45 ? a/1/in_a_1
46 ? a/in_a
46 ? a/in_a
47 ? b/1/in_b_1
47 ? b/1/in_b_1
48 ? b/2/in_b_2
48 ? b/2/in_b_2
49 ? b/in_b
49 ? b/in_b
50 ? in_root
50 ? in_root
51 $ hg status --cwd b .
51 $ hg status --cwd b .
52 ? 1/in_b_1
52 ? 1/in_b_1
53 ? 2/in_b_2
53 ? 2/in_b_2
54 ? in_b
54 ? in_b
55 $ hg status --cwd b ..
55 $ hg status --cwd b ..
56 ? ../a/1/in_a_1
56 ? ../a/1/in_a_1
57 ? ../a/in_a
57 ? ../a/in_a
58 ? 1/in_b_1
58 ? 1/in_b_1
59 ? 2/in_b_2
59 ? 2/in_b_2
60 ? in_b
60 ? in_b
61 ? ../in_root
61 ? ../in_root
62
62
63 $ hg status --cwd a/1
63 $ hg status --cwd a/1
64 ? a/1/in_a_1
64 ? a/1/in_a_1
65 ? a/in_a
65 ? a/in_a
66 ? b/1/in_b_1
66 ? b/1/in_b_1
67 ? b/2/in_b_2
67 ? b/2/in_b_2
68 ? b/in_b
68 ? b/in_b
69 ? in_root
69 ? in_root
70 $ hg status --cwd a/1 .
70 $ hg status --cwd a/1 .
71 ? in_a_1
71 ? in_a_1
72 $ hg status --cwd a/1 ..
72 $ hg status --cwd a/1 ..
73 ? in_a_1
73 ? in_a_1
74 ? ../in_a
74 ? ../in_a
75
75
76 $ hg status --cwd b/1
76 $ hg status --cwd b/1
77 ? a/1/in_a_1
77 ? a/1/in_a_1
78 ? a/in_a
78 ? a/in_a
79 ? b/1/in_b_1
79 ? b/1/in_b_1
80 ? b/2/in_b_2
80 ? b/2/in_b_2
81 ? b/in_b
81 ? b/in_b
82 ? in_root
82 ? in_root
83 $ hg status --cwd b/1 .
83 $ hg status --cwd b/1 .
84 ? in_b_1
84 ? in_b_1
85 $ hg status --cwd b/1 ..
85 $ hg status --cwd b/1 ..
86 ? in_b_1
86 ? in_b_1
87 ? ../2/in_b_2
87 ? ../2/in_b_2
88 ? ../in_b
88 ? ../in_b
89
89
90 $ hg status --cwd b/2
90 $ hg status --cwd b/2
91 ? a/1/in_a_1
91 ? a/1/in_a_1
92 ? a/in_a
92 ? a/in_a
93 ? b/1/in_b_1
93 ? b/1/in_b_1
94 ? b/2/in_b_2
94 ? b/2/in_b_2
95 ? b/in_b
95 ? b/in_b
96 ? in_root
96 ? in_root
97 $ hg status --cwd b/2 .
97 $ hg status --cwd b/2 .
98 ? in_b_2
98 ? in_b_2
99 $ hg status --cwd b/2 ..
99 $ hg status --cwd b/2 ..
100 ? ../1/in_b_1
100 ? ../1/in_b_1
101 ? in_b_2
101 ? in_b_2
102 ? ../in_b
102 ? ../in_b
103 $ cd ..
103 $ cd ..
104
104
105 $ hg init repo2
105 $ hg init repo2
106 $ cd repo2
106 $ cd repo2
107 $ touch modified removed deleted ignored
107 $ touch modified removed deleted ignored
108 $ echo "^ignored$" > .hgignore
108 $ echo "^ignored$" > .hgignore
109 $ hg ci -A -m 'initial checkin'
109 $ hg ci -A -m 'initial checkin'
110 adding .hgignore
110 adding .hgignore
111 adding deleted
111 adding deleted
112 adding modified
112 adding modified
113 adding removed
113 adding removed
114 $ touch modified added unknown ignored
114 $ touch modified added unknown ignored
115 $ hg add added
115 $ hg add added
116 $ hg remove removed
116 $ hg remove removed
117 $ rm deleted
117 $ rm deleted
118
118
119 hg status:
119 hg status:
120
120
121 $ hg status
121 $ hg status
122 A added
122 A added
123 R removed
123 R removed
124 ! deleted
124 ! deleted
125 ? unknown
125 ? unknown
126
126
127 hg status modified added removed deleted unknown never-existed ignored:
127 hg status modified added removed deleted unknown never-existed ignored:
128
128
129 $ hg status modified added removed deleted unknown never-existed ignored
129 $ hg status modified added removed deleted unknown never-existed ignored
130 never-existed: No such file or directory
130 never-existed: No such file or directory
131 A added
131 A added
132 R removed
132 R removed
133 ! deleted
133 ! deleted
134 ? unknown
134 ? unknown
135
135
136 $ hg copy modified copied
136 $ hg copy modified copied
137
137
138 hg status -C:
138 hg status -C:
139
139
140 $ hg status -C
140 $ hg status -C
141 A added
141 A added
142 A copied
142 A copied
143 modified
143 modified
144 R removed
144 R removed
145 ! deleted
145 ! deleted
146 ? unknown
146 ? unknown
147
147
148 hg status -A:
148 hg status -A:
149
149
150 $ hg status -A
150 $ hg status -A
151 A added
151 A added
152 A copied
152 A copied
153 modified
153 modified
154 R removed
154 R removed
155 ! deleted
155 ! deleted
156 ? unknown
156 ? unknown
157 I ignored
157 I ignored
158 C .hgignore
158 C .hgignore
159 C modified
159 C modified
160
160
161
161
162 $ echo "^ignoreddir$" > .hgignore
162 $ echo "^ignoreddir$" > .hgignore
163 $ mkdir ignoreddir
163 $ mkdir ignoreddir
164 $ touch ignoreddir/file
164 $ touch ignoreddir/file
165
165
166 hg status ignoreddir/file:
166 hg status ignoreddir/file:
167
167
168 $ hg status ignoreddir/file
168 $ hg status ignoreddir/file
169
169
170 hg status -i ignoreddir/file:
170 hg status -i ignoreddir/file:
171
171
172 $ hg status -i ignoreddir/file
172 $ hg status -i ignoreddir/file
173 I ignoreddir/file
173 I ignoreddir/file
174 $ cd ..
174 $ cd ..
175
175
176 Check 'status -q' and some combinations
176 Check 'status -q' and some combinations
177
177
178 $ hg init repo3
178 $ hg init repo3
179 $ cd repo3
179 $ cd repo3
180 $ touch modified removed deleted ignored
180 $ touch modified removed deleted ignored
181 $ echo "^ignored$" > .hgignore
181 $ echo "^ignored$" > .hgignore
182 $ hg commit -A -m 'initial checkin'
182 $ hg commit -A -m 'initial checkin'
183 adding .hgignore
183 adding .hgignore
184 adding deleted
184 adding deleted
185 adding modified
185 adding modified
186 adding removed
186 adding removed
187 $ touch added unknown ignored
187 $ touch added unknown ignored
188 $ hg add added
188 $ hg add added
189 $ echo "test" >> modified
189 $ echo "test" >> modified
190 $ hg remove removed
190 $ hg remove removed
191 $ rm deleted
191 $ rm deleted
192 $ hg copy modified copied
192 $ hg copy modified copied
193
193
194 Run status with 2 different flags.
194 Run status with 2 different flags.
195 Check if result is the same or different.
195 Check if result is the same or different.
196 If result is not as expected, raise error
196 If result is not as expected, raise error
197
197
198 $ assert() {
198 $ assert() {
199 > hg status $1 > ../a
199 > hg status $1 > ../a
200 > hg status $2 > ../b
200 > hg status $2 > ../b
201 > out=`diff ../a ../b`
201 > if diff ../a ../b > /dev/null; then
202 > if [ $? -ne 0 ]; then
202 > out=0
203 > else
203 > out=1
204 > out=1
204 > else
205 > out=0
206 > fi
205 > fi
207 > if [ $3 -eq 0 ]; then
206 > if [ $3 -eq 0 ]; then
208 > df="same"
207 > df="same"
209 > else
208 > else
210 > df="different"
209 > df="different"
211 > fi
210 > fi
212 > if [ $out -ne $3 ]; then
211 > if [ $out -ne $3 ]; then
213 > echo "Error on $1 and $2, should be $df."
212 > echo "Error on $1 and $2, should be $df."
214 > fi
213 > fi
215 > }
214 > }
216
215
217 Assert flag1 flag2 [0-same | 1-different]
216 Assert flag1 flag2 [0-same | 1-different]
218
217
219 $ assert "-q" "-mard" 0
218 $ assert "-q" "-mard" 0
220 $ assert "-A" "-marduicC" 0
219 $ assert "-A" "-marduicC" 0
221 $ assert "-qA" "-mardcC" 0
220 $ assert "-qA" "-mardcC" 0
222 $ assert "-qAui" "-A" 0
221 $ assert "-qAui" "-A" 0
223 $ assert "-qAu" "-marducC" 0
222 $ assert "-qAu" "-marducC" 0
224 $ assert "-qAi" "-mardicC" 0
223 $ assert "-qAi" "-mardicC" 0
225 $ assert "-qu" "-u" 0
224 $ assert "-qu" "-u" 0
226 $ assert "-q" "-u" 1
225 $ assert "-q" "-u" 1
227 $ assert "-m" "-a" 1
226 $ assert "-m" "-a" 1
228 $ assert "-r" "-d" 1
227 $ assert "-r" "-d" 1
229 $ cd ..
228 $ cd ..
230
229
231 $ hg init repo4
230 $ hg init repo4
232 $ cd repo4
231 $ cd repo4
233 $ touch modified removed deleted
232 $ touch modified removed deleted
234 $ hg ci -q -A -m 'initial checkin'
233 $ hg ci -q -A -m 'initial checkin'
235 $ touch added unknown
234 $ touch added unknown
236 $ hg add added
235 $ hg add added
237 $ hg remove removed
236 $ hg remove removed
238 $ rm deleted
237 $ rm deleted
239 $ echo x > modified
238 $ echo x > modified
240 $ hg copy modified copied
239 $ hg copy modified copied
241 $ hg ci -m 'test checkin' -d "1000001 0"
240 $ hg ci -m 'test checkin' -d "1000001 0"
242 $ rm *
241 $ rm *
243 $ touch unrelated
242 $ touch unrelated
244 $ hg ci -q -A -m 'unrelated checkin' -d "1000002 0"
243 $ hg ci -q -A -m 'unrelated checkin' -d "1000002 0"
245
244
246 hg status --change 1:
245 hg status --change 1:
247
246
248 $ hg status --change 1
247 $ hg status --change 1
249 M modified
248 M modified
250 A added
249 A added
251 A copied
250 A copied
252 R removed
251 R removed
253
252
254 hg status --change 1 unrelated:
253 hg status --change 1 unrelated:
255
254
256 $ hg status --change 1 unrelated
255 $ hg status --change 1 unrelated
257
256
258 hg status -C --change 1 added modified copied removed deleted:
257 hg status -C --change 1 added modified copied removed deleted:
259
258
260 $ hg status -C --change 1 added modified copied removed deleted
259 $ hg status -C --change 1 added modified copied removed deleted
261 M modified
260 M modified
262 A added
261 A added
263 A copied
262 A copied
264 modified
263 modified
265 R removed
264 R removed
266
265
267 hg status -A --change 1:
266 hg status -A --change 1:
268
267
269 $ hg status -A --change 1
268 $ hg status -A --change 1
270 M modified
269 M modified
271 A added
270 A added
272 A copied
271 A copied
273 modified
272 modified
274 R removed
273 R removed
275 C deleted
274 C deleted
@@ -1,345 +1,343 b''
1 Make status look into subrepositories by default:
1 Make status look into subrepositories by default:
2
2
3 $ echo '[defaults]' >> $HGRCPATH
3 $ echo '[defaults]' >> $HGRCPATH
4 $ echo 'status = -S' >> $HGRCPATH
4 $ echo 'status = -S' >> $HGRCPATH
5 $ echo 'diff = --nodates -S' >> $HGRCPATH
5 $ echo 'diff = --nodates -S' >> $HGRCPATH
6
6
7 Create test repository:
7 Create test repository:
8
8
9 $ hg init repo
9 $ hg init repo
10 $ cd repo
10 $ cd repo
11 $ echo x1 > x.txt
11 $ echo x1 > x.txt
12
12
13 $ hg init foo
13 $ hg init foo
14 $ cd foo
14 $ cd foo
15 $ echo y1 > y.txt
15 $ echo y1 > y.txt
16
16
17 $ hg init bar
17 $ hg init bar
18 $ cd bar
18 $ cd bar
19 $ echo z1 > z.txt
19 $ echo z1 > z.txt
20
20
21 $ cd ..
21 $ cd ..
22 $ echo 'bar = bar' > .hgsub
22 $ echo 'bar = bar' > .hgsub
23
23
24 $ cd ..
24 $ cd ..
25 $ echo 'foo = foo' > .hgsub
25 $ echo 'foo = foo' > .hgsub
26
26
27 Add files --- .hgsub files must go first to trigger subrepos:
27 Add files --- .hgsub files must go first to trigger subrepos:
28
28
29 $ hg add -S .hgsub
29 $ hg add -S .hgsub
30 $ hg add -S foo/.hgsub
30 $ hg add -S foo/.hgsub
31 $ hg add -S foo/bar
31 $ hg add -S foo/bar
32 adding foo/bar/z.txt
32 adding foo/bar/z.txt
33 $ hg add -S
33 $ hg add -S
34 adding x.txt
34 adding x.txt
35 adding foo/y.txt
35 adding foo/y.txt
36
36
37 Test recursive status without committing anything:
37 Test recursive status without committing anything:
38
38
39 $ hg status
39 $ hg status
40 A .hgsub
40 A .hgsub
41 A foo/.hgsub
41 A foo/.hgsub
42 A foo/bar/z.txt
42 A foo/bar/z.txt
43 A foo/y.txt
43 A foo/y.txt
44 A x.txt
44 A x.txt
45
45
46 Test recursive diff without committing anything:
46 Test recursive diff without committing anything:
47
47
48 $ hg diff foo
48 $ hg diff foo
49 diff -r 000000000000 foo/.hgsub
49 diff -r 000000000000 foo/.hgsub
50 --- /dev/null
50 --- /dev/null
51 +++ b/foo/.hgsub
51 +++ b/foo/.hgsub
52 @@ -0,0 +1,1 @@
52 @@ -0,0 +1,1 @@
53 +bar = bar
53 +bar = bar
54 diff -r 000000000000 foo/y.txt
54 diff -r 000000000000 foo/y.txt
55 --- /dev/null
55 --- /dev/null
56 +++ b/foo/y.txt
56 +++ b/foo/y.txt
57 @@ -0,0 +1,1 @@
57 @@ -0,0 +1,1 @@
58 +y1
58 +y1
59 diff -r 000000000000 foo/bar/z.txt
59 diff -r 000000000000 foo/bar/z.txt
60 --- /dev/null
60 --- /dev/null
61 +++ b/foo/bar/z.txt
61 +++ b/foo/bar/z.txt
62 @@ -0,0 +1,1 @@
62 @@ -0,0 +1,1 @@
63 +z1
63 +z1
64
64
65 Commits:
65 Commits:
66
66
67 $ hg commit -m 0-0-0
67 $ hg commit -m 0-0-0
68 committing subrepository foo
68 committing subrepository foo
69 committing subrepository foo/bar
69 committing subrepository foo/bar
70
70
71 $ cd foo
71 $ cd foo
72 $ echo y2 >> y.txt
72 $ echo y2 >> y.txt
73 $ hg commit -m 0-1-0
73 $ hg commit -m 0-1-0
74
74
75 $ cd bar
75 $ cd bar
76 $ echo z2 >> z.txt
76 $ echo z2 >> z.txt
77 $ hg commit -m 0-1-1
77 $ hg commit -m 0-1-1
78
78
79 $ cd ..
79 $ cd ..
80 $ hg commit -m 0-2-1
80 $ hg commit -m 0-2-1
81 committing subrepository bar
81 committing subrepository bar
82
82
83 $ cd ..
83 $ cd ..
84 $ hg commit -m 1-2-1
84 $ hg commit -m 1-2-1
85 committing subrepository foo
85 committing subrepository foo
86
86
87 Change working directory:
87 Change working directory:
88
88
89 $ echo y3 >> foo/y.txt
89 $ echo y3 >> foo/y.txt
90 $ echo z3 >> foo/bar/z.txt
90 $ echo z3 >> foo/bar/z.txt
91 $ hg status
91 $ hg status
92 M foo/bar/z.txt
92 M foo/bar/z.txt
93 M foo/y.txt
93 M foo/y.txt
94 $ hg diff
94 $ hg diff
95 diff -r d254738c5f5e foo/y.txt
95 diff -r d254738c5f5e foo/y.txt
96 --- a/foo/y.txt
96 --- a/foo/y.txt
97 +++ b/foo/y.txt
97 +++ b/foo/y.txt
98 @@ -1,2 +1,3 @@
98 @@ -1,2 +1,3 @@
99 y1
99 y1
100 y2
100 y2
101 +y3
101 +y3
102 diff -r 9647f22de499 foo/bar/z.txt
102 diff -r 9647f22de499 foo/bar/z.txt
103 --- a/foo/bar/z.txt
103 --- a/foo/bar/z.txt
104 +++ b/foo/bar/z.txt
104 +++ b/foo/bar/z.txt
105 @@ -1,2 +1,3 @@
105 @@ -1,2 +1,3 @@
106 z1
106 z1
107 z2
107 z2
108 +z3
108 +z3
109
109
110 Status call crossing repository boundaries:
110 Status call crossing repository boundaries:
111
111
112 $ hg status foo/bar/z.txt
112 $ hg status foo/bar/z.txt
113 M foo/bar/z.txt
113 M foo/bar/z.txt
114 $ hg status -I 'foo/?.txt'
114 $ hg status -I 'foo/?.txt'
115 M foo/y.txt
115 M foo/y.txt
116 $ hg status -I '**/?.txt'
116 $ hg status -I '**/?.txt'
117 M foo/bar/z.txt
117 M foo/bar/z.txt
118 M foo/y.txt
118 M foo/y.txt
119 $ hg diff -I '**/?.txt'
119 $ hg diff -I '**/?.txt'
120 diff -r d254738c5f5e foo/y.txt
120 diff -r d254738c5f5e foo/y.txt
121 --- a/foo/y.txt
121 --- a/foo/y.txt
122 +++ b/foo/y.txt
122 +++ b/foo/y.txt
123 @@ -1,2 +1,3 @@
123 @@ -1,2 +1,3 @@
124 y1
124 y1
125 y2
125 y2
126 +y3
126 +y3
127 diff -r 9647f22de499 foo/bar/z.txt
127 diff -r 9647f22de499 foo/bar/z.txt
128 --- a/foo/bar/z.txt
128 --- a/foo/bar/z.txt
129 +++ b/foo/bar/z.txt
129 +++ b/foo/bar/z.txt
130 @@ -1,2 +1,3 @@
130 @@ -1,2 +1,3 @@
131 z1
131 z1
132 z2
132 z2
133 +z3
133 +z3
134
134
135 Status from within a subdirectory:
135 Status from within a subdirectory:
136
136
137 $ mkdir dir
137 $ mkdir dir
138 $ cd dir
138 $ cd dir
139 $ echo a1 > a.txt
139 $ echo a1 > a.txt
140 $ hg status
140 $ hg status
141 M foo/bar/z.txt
141 M foo/bar/z.txt
142 M foo/y.txt
142 M foo/y.txt
143 ? dir/a.txt
143 ? dir/a.txt
144 $ hg diff
144 $ hg diff
145 diff -r d254738c5f5e foo/y.txt
145 diff -r d254738c5f5e foo/y.txt
146 --- a/foo/y.txt
146 --- a/foo/y.txt
147 +++ b/foo/y.txt
147 +++ b/foo/y.txt
148 @@ -1,2 +1,3 @@
148 @@ -1,2 +1,3 @@
149 y1
149 y1
150 y2
150 y2
151 +y3
151 +y3
152 diff -r 9647f22de499 foo/bar/z.txt
152 diff -r 9647f22de499 foo/bar/z.txt
153 --- a/foo/bar/z.txt
153 --- a/foo/bar/z.txt
154 +++ b/foo/bar/z.txt
154 +++ b/foo/bar/z.txt
155 @@ -1,2 +1,3 @@
155 @@ -1,2 +1,3 @@
156 z1
156 z1
157 z2
157 z2
158 +z3
158 +z3
159
159
160 Status with relative path:
160 Status with relative path:
161
161
162 $ hg status ..
162 $ hg status ..
163 M ../foo/bar/z.txt
163 M ../foo/bar/z.txt
164 M ../foo/y.txt
164 M ../foo/y.txt
165 ? a.txt
165 ? a.txt
166 $ hg diff ..
166 $ hg diff ..
167 diff -r d254738c5f5e foo/y.txt
167 diff -r d254738c5f5e foo/y.txt
168 --- a/foo/y.txt
168 --- a/foo/y.txt
169 +++ b/foo/y.txt
169 +++ b/foo/y.txt
170 @@ -1,2 +1,3 @@
170 @@ -1,2 +1,3 @@
171 y1
171 y1
172 y2
172 y2
173 +y3
173 +y3
174 diff -r 9647f22de499 foo/bar/z.txt
174 diff -r 9647f22de499 foo/bar/z.txt
175 --- a/foo/bar/z.txt
175 --- a/foo/bar/z.txt
176 +++ b/foo/bar/z.txt
176 +++ b/foo/bar/z.txt
177 @@ -1,2 +1,3 @@
177 @@ -1,2 +1,3 @@
178 z1
178 z1
179 z2
179 z2
180 +z3
180 +z3
181 $ cd ..
181 $ cd ..
182
182
183 Cleanup and final commit:
183 Cleanup and final commit:
184
184
185 $ rm -r dir
185 $ rm -r dir
186 $ hg commit -m 2-3-2
186 $ hg commit -m 2-3-2
187 committing subrepository foo
187 committing subrepository foo
188 committing subrepository foo/bar
188 committing subrepository foo/bar
189
189
190 Log with the relationships between repo and its subrepo:
190 Log with the relationships between repo and its subrepo:
191
191
192 $ hg log --template '{rev}:{node|short} {desc}\n'
192 $ hg log --template '{rev}:{node|short} {desc}\n'
193 2:1326fa26d0c0 2-3-2
193 2:1326fa26d0c0 2-3-2
194 1:4b3c9ff4f66b 1-2-1
194 1:4b3c9ff4f66b 1-2-1
195 0:23376cbba0d8 0-0-0
195 0:23376cbba0d8 0-0-0
196
196
197 $ hg -R foo log --template '{rev}:{node|short} {desc}\n'
197 $ hg -R foo log --template '{rev}:{node|short} {desc}\n'
198 3:65903cebad86 2-3-2
198 3:65903cebad86 2-3-2
199 2:d254738c5f5e 0-2-1
199 2:d254738c5f5e 0-2-1
200 1:8629ce7dcc39 0-1-0
200 1:8629ce7dcc39 0-1-0
201 0:af048e97ade2 0-0-0
201 0:af048e97ade2 0-0-0
202
202
203 $ hg -R foo/bar log --template '{rev}:{node|short} {desc}\n'
203 $ hg -R foo/bar log --template '{rev}:{node|short} {desc}\n'
204 2:31ecbdafd357 2-3-2
204 2:31ecbdafd357 2-3-2
205 1:9647f22de499 0-1-1
205 1:9647f22de499 0-1-1
206 0:4904098473f9 0-0-0
206 0:4904098473f9 0-0-0
207
207
208 Status between revisions:
208 Status between revisions:
209
209
210 $ hg status
210 $ hg status
211 $ hg status --rev 0:1
211 $ hg status --rev 0:1
212 M .hgsubstate
212 M .hgsubstate
213 M foo/.hgsubstate
213 M foo/.hgsubstate
214 M foo/bar/z.txt
214 M foo/bar/z.txt
215 M foo/y.txt
215 M foo/y.txt
216 $ hg diff -I '**/?.txt' --rev 0:1
216 $ hg diff -I '**/?.txt' --rev 0:1
217 diff -r af048e97ade2 -r d254738c5f5e foo/y.txt
217 diff -r af048e97ade2 -r d254738c5f5e foo/y.txt
218 --- a/foo/y.txt
218 --- a/foo/y.txt
219 +++ b/foo/y.txt
219 +++ b/foo/y.txt
220 @@ -1,1 +1,2 @@
220 @@ -1,1 +1,2 @@
221 y1
221 y1
222 +y2
222 +y2
223 diff -r 4904098473f9 -r 9647f22de499 foo/bar/z.txt
223 diff -r 4904098473f9 -r 9647f22de499 foo/bar/z.txt
224 --- a/foo/bar/z.txt
224 --- a/foo/bar/z.txt
225 +++ b/foo/bar/z.txt
225 +++ b/foo/bar/z.txt
226 @@ -1,1 +1,2 @@
226 @@ -1,1 +1,2 @@
227 z1
227 z1
228 +z2
228 +z2
229
229
230 Test archiving to a directory tree:
230 Test archiving to a directory tree:
231
231
232 $ hg archive --subrepos ../archive
232 $ hg archive --subrepos ../archive
233 $ find ../archive | sort
233 $ find ../archive | sort
234 ../archive
234 ../archive
235 ../archive/.hg_archival.txt
235 ../archive/.hg_archival.txt
236 ../archive/.hgsub
236 ../archive/.hgsub
237 ../archive/.hgsubstate
237 ../archive/.hgsubstate
238 ../archive/foo
238 ../archive/foo
239 ../archive/foo/.hgsub
239 ../archive/foo/.hgsub
240 ../archive/foo/.hgsubstate
240 ../archive/foo/.hgsubstate
241 ../archive/foo/bar
241 ../archive/foo/bar
242 ../archive/foo/bar/z.txt
242 ../archive/foo/bar/z.txt
243 ../archive/foo/y.txt
243 ../archive/foo/y.txt
244 ../archive/x.txt
244 ../archive/x.txt
245
245
246 Test archiving to zip file (unzip output is unstable):
246 Test archiving to zip file (unzip output is unstable):
247
247
248 $ hg archive --subrepos ../archive.zip
248 $ hg archive --subrepos ../archive.zip
249
249
250 Clone and test outgoing:
250 Clone and test outgoing:
251
251
252 $ cd ..
252 $ cd ..
253 $ hg clone repo repo2
253 $ hg clone repo repo2
254 updating to branch default
254 updating to branch default
255 pulling subrepo foo from .*/test-subrepo-recursion.t/repo/foo
255 pulling subrepo foo from .*/test-subrepo-recursion.t/repo/foo
256 requesting all changes
256 requesting all changes
257 adding changesets
257 adding changesets
258 adding manifests
258 adding manifests
259 adding file changes
259 adding file changes
260 added 4 changesets with 7 changes to 3 files
260 added 4 changesets with 7 changes to 3 files
261 pulling subrepo foo/bar from .*/test-subrepo-recursion.t/repo/foo/bar
261 pulling subrepo foo/bar from .*/test-subrepo-recursion.t/repo/foo/bar
262 requesting all changes
262 requesting all changes
263 adding changesets
263 adding changesets
264 adding manifests
264 adding manifests
265 adding file changes
265 adding file changes
266 added 3 changesets with 3 changes to 1 files
266 added 3 changesets with 3 changes to 1 files
267 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
267 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
268 $ cd repo2
268 $ cd repo2
269 $ hg outgoing -S
269 $ hg outgoing -S
270 comparing with .*/test-subrepo-recursion.t/repo
270 comparing with .*/test-subrepo-recursion.t/repo
271 searching for changes
271 searching for changes
272 no changes found
272 no changes found
273 comparing with .*/test-subrepo-recursion.t/repo/foo
273 comparing with .*/test-subrepo-recursion.t/repo/foo
274 searching for changes
274 searching for changes
275 no changes found
275 no changes found
276 [1]
276 [1]
277 $ echo $?
278 0
279
277
280 Make nested change:
278 Make nested change:
281
279
282 $ echo y4 >> foo/y.txt
280 $ echo y4 >> foo/y.txt
283 $ hg diff
281 $ hg diff
284 diff -r 65903cebad86 foo/y.txt
282 diff -r 65903cebad86 foo/y.txt
285 --- a/foo/y.txt
283 --- a/foo/y.txt
286 +++ b/foo/y.txt
284 +++ b/foo/y.txt
287 @@ -1,3 +1,4 @@
285 @@ -1,3 +1,4 @@
288 y1
286 y1
289 y2
287 y2
290 y3
288 y3
291 +y4
289 +y4
292 $ hg commit -m 3-4-2
290 $ hg commit -m 3-4-2
293 committing subrepository foo
291 committing subrepository foo
294 $ hg outgoing -S
292 $ hg outgoing -S
295 comparing with .*/test-subrepo-recursion.t/repo
293 comparing with .*/test-subrepo-recursion.t/repo
296 searching for changes
294 searching for changes
297 changeset: 3:2655b8ecc4ee
295 changeset: 3:2655b8ecc4ee
298 tag: tip
296 tag: tip
299 user: test
297 user: test
300 date: Thu Jan 01 00:00:00 1970 +0000
298 date: Thu Jan 01 00:00:00 1970 +0000
301 summary: 3-4-2
299 summary: 3-4-2
302
300
303 comparing with .*/test-subrepo-recursion.t/repo/foo
301 comparing with .*/test-subrepo-recursion.t/repo/foo
304 searching for changes
302 searching for changes
305 changeset: 4:e96193d6cb36
303 changeset: 4:e96193d6cb36
306 tag: tip
304 tag: tip
307 user: test
305 user: test
308 date: Thu Jan 01 00:00:00 1970 +0000
306 date: Thu Jan 01 00:00:00 1970 +0000
309 summary: 3-4-2
307 summary: 3-4-2
310
308
311
309
312 Switch to original repo and setup default path:
310 Switch to original repo and setup default path:
313
311
314 $ cd ../repo
312 $ cd ../repo
315 $ echo '[paths]' >> .hg/hgrc
313 $ echo '[paths]' >> .hg/hgrc
316 $ echo 'default = ../repo2' >> .hg/hgrc
314 $ echo 'default = ../repo2' >> .hg/hgrc
317
315
318 Test incoming:
316 Test incoming:
319
317
320 $ hg incoming -S
318 $ hg incoming -S
321 comparing with .*/test-subrepo-recursion.t/repo2
319 comparing with .*/test-subrepo-recursion.t/repo2
322 searching for changes
320 searching for changes
323 changeset: 3:2655b8ecc4ee
321 changeset: 3:2655b8ecc4ee
324 tag: tip
322 tag: tip
325 user: test
323 user: test
326 date: Thu Jan 01 00:00:00 1970 +0000
324 date: Thu Jan 01 00:00:00 1970 +0000
327 summary: 3-4-2
325 summary: 3-4-2
328
326
329 comparing with .*/test-subrepo-recursion.t/repo2/foo
327 comparing with .*/test-subrepo-recursion.t/repo2/foo
330 searching for changes
328 searching for changes
331 changeset: 4:e96193d6cb36
329 changeset: 4:e96193d6cb36
332 tag: tip
330 tag: tip
333 user: test
331 user: test
334 date: Thu Jan 01 00:00:00 1970 +0000
332 date: Thu Jan 01 00:00:00 1970 +0000
335 summary: 3-4-2
333 summary: 3-4-2
336
334
337 $ hg incoming -S --bundle incoming.hg
335 $ hg incoming -S --bundle incoming.hg
338 abort: cannot combine --bundle and --subrepos
336 abort: cannot combine --bundle and --subrepos
339 [255]
337 [255]
340
338
341 Test missing subrepo:
339 Test missing subrepo:
342
340
343 $ rm -r foo
341 $ rm -r foo
344 $ hg status
342 $ hg status
345 warning: unknown revision '65903cebad86f1a84bd4f1134f62fa7dcb7a1c98' in foo
343 warning: unknown revision '65903cebad86f1a84bd4f1134f62fa7dcb7a1c98' in foo
@@ -1,206 +1,203 b''
1 $ "$TESTDIR/hghave" svn || exit 80
1 $ "$TESTDIR/hghave" svn || exit 80
2
2
3 $ fix_path()
3 $ fix_path()
4 > {
4 > {
5 > tr '\\' /
5 > tr '\\' /
6 > }
6 > }
7
7
8 $ escapedwd=`pwd | fix_path`
8 $ escapedwd=`pwd | fix_path`
9
9
10 SVN wants all paths to start with a slash. Unfortunately, Windows ones
10 SVN wants all paths to start with a slash. Unfortunately, Windows ones
11 don't. Handle that.
11 don't. Handle that.
12
12
13 $ expr "$escapedwd" : "\/" > /dev/null
13 $ expr "$escapedwd" : / > /dev/null || escapedwd="/$escapedwd"
14 $ if [ $? -ne 0 ]; then
15 > escapedwd="/$escapedwd"
16 > fi
17 $ escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"`
14 $ escapedwd=`python -c "import urllib, sys; sys.stdout.write(urllib.quote(sys.argv[1]))" "$escapedwd"`
18 $ filterpath="s|$escapedwd|/root|"
15 $ filterpath="s|$escapedwd|/root|"
19 $ filteroutofdate='s/ in transaction.*/ is out of date/;s/Out of date: /File /'
16 $ filteroutofdate='s/ in transaction.*/ is out of date/;s/Out of date: /File /'
20
17
21 create subversion repo
18 create subversion repo
22
19
23 $ SVNREPO="file://$escapedwd/svn-repo"
20 $ SVNREPO="file://$escapedwd/svn-repo"
24 $ WCROOT="`pwd`/svn-wc"
21 $ WCROOT="`pwd`/svn-wc"
25 $ svnadmin create svn-repo
22 $ svnadmin create svn-repo
26 $ svn co "$SVNREPO" svn-wc
23 $ svn co "$SVNREPO" svn-wc
27 Checked out revision 0.
24 Checked out revision 0.
28 $ cd svn-wc
25 $ cd svn-wc
29 $ mkdir src
26 $ mkdir src
30 $ echo alpha > src/alpha
27 $ echo alpha > src/alpha
31 $ svn add src
28 $ svn add src
32 A src
29 A src
33 A src/alpha
30 A src/alpha
34 $ mkdir externals
31 $ mkdir externals
35 $ echo other > externals/other
32 $ echo other > externals/other
36 $ svn add externals
33 $ svn add externals
37 A externals
34 A externals
38 A externals/other
35 A externals/other
39 $ svn ci -m 'Add alpha'
36 $ svn ci -m 'Add alpha'
40 Adding externals
37 Adding externals
41 Adding externals/other
38 Adding externals/other
42 Adding src
39 Adding src
43 Adding src/alpha
40 Adding src/alpha
44 Transmitting file data ..
41 Transmitting file data ..
45 Committed revision 1.
42 Committed revision 1.
46 $ svn up
43 $ svn up
47 At revision 1.
44 At revision 1.
48 $ echo "externals -r1 $SVNREPO/externals" > extdef
45 $ echo "externals -r1 $SVNREPO/externals" > extdef
49 $ svn propset -F extdef svn:externals src
46 $ svn propset -F extdef svn:externals src
50 property 'svn:externals' set on 'src'
47 property 'svn:externals' set on 'src'
51 $ svn ci -m 'Setting externals'
48 $ svn ci -m 'Setting externals'
52 Sending src
49 Sending src
53
50
54 Committed revision 2.
51 Committed revision 2.
55 $ cd ..
52 $ cd ..
56
53
57 create hg repo
54 create hg repo
58
55
59 $ mkdir sub
56 $ mkdir sub
60 $ cd sub
57 $ cd sub
61 $ hg init t
58 $ hg init t
62 $ cd t
59 $ cd t
63
60
64 first revision, no sub
61 first revision, no sub
65
62
66 $ echo a > a
63 $ echo a > a
67 $ hg ci -Am0
64 $ hg ci -Am0
68 adding a
65 adding a
69
66
70 add first svn sub with leading whitespaces
67 add first svn sub with leading whitespaces
71
68
72 $ echo "s = [svn] $SVNREPO/src" >> .hgsub
69 $ echo "s = [svn] $SVNREPO/src" >> .hgsub
73 $ svn co --quiet "$SVNREPO"/src s
70 $ svn co --quiet "$SVNREPO"/src s
74 $ hg add .hgsub
71 $ hg add .hgsub
75 $ hg ci -m1
72 $ hg ci -m1
76 committing subrepository s
73 committing subrepository s
77
74
78 debugsub
75 debugsub
79
76
80 $ hg debugsub | sed "$filterpath"
77 $ hg debugsub | sed "$filterpath"
81 path s
78 path s
82 source file:///root/svn-repo/src
79 source file:///root/svn-repo/src
83 revision 2
80 revision 2
84
81
85 change file in svn and hg, commit
82 change file in svn and hg, commit
86
83
87 $ echo a >> a
84 $ echo a >> a
88 $ echo alpha >> s/alpha
85 $ echo alpha >> s/alpha
89 $ hg commit -m 'Message!' \
86 $ hg commit -m 'Message!' \
90 > | sed 's:Sending.*s/alpha:Sending s/alpha:g'
87 > | sed 's:Sending.*s/alpha:Sending s/alpha:g'
91 committing subrepository s
88 committing subrepository s
92 Sending s/alpha
89 Sending s/alpha
93 Transmitting file data .
90 Transmitting file data .
94 Committed revision 3.
91 Committed revision 3.
95
92
96 Fetching external item into '.*/s/externals'
93 Fetching external item into '.*/s/externals'
97 External at revision 1.
94 External at revision 1.
98
95
99 At revision 3.
96 At revision 3.
100 $ hg debugsub | sed "$filterpath"
97 $ hg debugsub | sed "$filterpath"
101 path s
98 path s
102 source file:///root/svn-repo/src
99 source file:///root/svn-repo/src
103 revision 3
100 revision 3
104
101
105 $ echo a > s/a
102 $ echo a > s/a
106
103
107 should be empty despite change to s/a
104 should be empty despite change to s/a
108
105
109 $ hg st
106 $ hg st
110
107
111 add a commit from svn
108 add a commit from svn
112
109
113 $ cd "$WCROOT"/src
110 $ cd "$WCROOT"/src
114 $ svn up
111 $ svn up
115 U alpha
112 U alpha
116
113
117 Fetching external item into 'externals'
114 Fetching external item into 'externals'
118 A externals/other
115 A externals/other
119 Updated external to revision 1.
116 Updated external to revision 1.
120
117
121 Updated to revision 3.
118 Updated to revision 3.
122 $ echo xyz >> alpha
119 $ echo xyz >> alpha
123 $ svn propset svn:mime-type 'text/xml' alpha
120 $ svn propset svn:mime-type 'text/xml' alpha
124 property 'svn:mime-type' set on 'alpha'
121 property 'svn:mime-type' set on 'alpha'
125 $ svn ci -m 'amend a from svn'
122 $ svn ci -m 'amend a from svn'
126 Sending src/alpha
123 Sending src/alpha
127 Transmitting file data .
124 Transmitting file data .
128 Committed revision 4.
125 Committed revision 4.
129 $ cd ../../sub/t
126 $ cd ../../sub/t
130
127
131 this commit from hg will fail
128 this commit from hg will fail
132
129
133 $ echo zzz >> s/alpha
130 $ echo zzz >> s/alpha
134 $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate"
131 $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate"
135 committing subrepository s
132 committing subrepository s
136 abort: svn: Commit failed (details follow):
133 abort: svn: Commit failed (details follow):
137 svn: File '/src/alpha' is out of date
134 svn: File '/src/alpha' is out of date
138 $ svn revert -q s/alpha
135 $ svn revert -q s/alpha
139
136
140 this commit fails because of meta changes
137 this commit fails because of meta changes
141
138
142 $ svn propset svn:mime-type 'text/html' s/alpha
139 $ svn propset svn:mime-type 'text/html' s/alpha
143 property 'svn:mime-type' set on 's/alpha'
140 property 'svn:mime-type' set on 's/alpha'
144 $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate"
141 $ hg ci -m 'amend alpha from hg' 2>&1 | sed "$filteroutofdate"
145 committing subrepository s
142 committing subrepository s
146 abort: svn: Commit failed (details follow):
143 abort: svn: Commit failed (details follow):
147 svn: File '/src/alpha' is out of date
144 svn: File '/src/alpha' is out of date
148 $ svn revert -q s/alpha
145 $ svn revert -q s/alpha
149
146
150 this commit fails because of externals changes
147 this commit fails because of externals changes
151
148
152 $ echo zzz > s/externals/other
149 $ echo zzz > s/externals/other
153 $ hg ci -m 'amend externals from hg'
150 $ hg ci -m 'amend externals from hg'
154 committing subrepository s
151 committing subrepository s
155 abort: cannot commit svn externals
152 abort: cannot commit svn externals
156 [255]
153 [255]
157 $ hg diff --subrepos -r 1:2 | grep -v diff
154 $ hg diff --subrepos -r 1:2 | grep -v diff
158 --- a/.hgsubstate Thu Jan 01 00:00:00 1970 +0000
155 --- a/.hgsubstate Thu Jan 01 00:00:00 1970 +0000
159 +++ b/.hgsubstate Thu Jan 01 00:00:00 1970 +0000
156 +++ b/.hgsubstate Thu Jan 01 00:00:00 1970 +0000
160 @@ -1,1 +1,1 @@
157 @@ -1,1 +1,1 @@
161 -2 s
158 -2 s
162 +3 s
159 +3 s
163 --- a/a Thu Jan 01 00:00:00 1970 +0000
160 --- a/a Thu Jan 01 00:00:00 1970 +0000
164 +++ b/a Thu Jan 01 00:00:00 1970 +0000
161 +++ b/a Thu Jan 01 00:00:00 1970 +0000
165 @@ -1,1 +1,2 @@
162 @@ -1,1 +1,2 @@
166 a
163 a
167 +a
164 +a
168 $ svn revert -q s/externals/other
165 $ svn revert -q s/externals/other
169
166
170 this commit fails because of externals meta changes
167 this commit fails because of externals meta changes
171
168
172 $ svn propset svn:mime-type 'text/html' s/externals/other
169 $ svn propset svn:mime-type 'text/html' s/externals/other
173 property 'svn:mime-type' set on 's/externals/other'
170 property 'svn:mime-type' set on 's/externals/other'
174 $ hg ci -m 'amend externals from hg'
171 $ hg ci -m 'amend externals from hg'
175 committing subrepository s
172 committing subrepository s
176 abort: cannot commit svn externals
173 abort: cannot commit svn externals
177 [255]
174 [255]
178 $ svn revert -q s/externals/other
175 $ svn revert -q s/externals/other
179
176
180 clone
177 clone
181
178
182 $ cd ..
179 $ cd ..
183 $ hg clone t tc | fix_path
180 $ hg clone t tc | fix_path
184 updating to branch default
181 updating to branch default
185 A tc/s/alpha
182 A tc/s/alpha
186 U tc/s
183 U tc/s
187
184
188 Fetching external item into 'tc/s/externals'
185 Fetching external item into 'tc/s/externals'
189 A tc/s/externals/other
186 A tc/s/externals/other
190 Checked out external at revision 1.
187 Checked out external at revision 1.
191
188
192 Checked out revision 3.
189 Checked out revision 3.
193 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
190 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
194 $ cd tc
191 $ cd tc
195
192
196 debugsub in clone
193 debugsub in clone
197
194
198 $ hg debugsub | sed "$filterpath"
195 $ hg debugsub | sed "$filterpath"
199 path s
196 path s
200 source file:///root/svn-repo/src
197 source file:///root/svn-repo/src
201 revision 3
198 revision 3
202
199
203 verify subrepo is contained within the repo directory
200 verify subrepo is contained within the repo directory
204
201
205 $ python -c "import os.path; print os.path.exists('s')"
202 $ python -c "import os.path; print os.path.exists('s')"
206 True
203 True
@@ -1,197 +1,197 b''
1 $ hg init test
1 $ hg init test
2 $ cd test
2 $ cd test
3
3
4 $ echo a > a
4 $ echo a > a
5 $ hg add a
5 $ hg add a
6 $ hg commit -m "test"
6 $ hg commit -m "test"
7 $ hg history
7 $ hg history
8 changeset: 0:acb14030fe0a
8 changeset: 0:acb14030fe0a
9 tag: tip
9 tag: tip
10 user: test
10 user: test
11 date: Thu Jan 01 00:00:00 1970 +0000
11 date: Thu Jan 01 00:00:00 1970 +0000
12 summary: test
12 summary: test
13
13
14
14
15 $ hg tag ' '
15 $ hg tag ' '
16 abort: tag names cannot consist entirely of whitespace
16 abort: tag names cannot consist entirely of whitespace
17 [255]
17 [255]
18
18
19 $ hg tag "bleah"
19 $ hg tag "bleah"
20 $ hg history
20 $ hg history
21 changeset: 1:d4f0d2909abc
21 changeset: 1:d4f0d2909abc
22 tag: tip
22 tag: tip
23 user: test
23 user: test
24 date: Thu Jan 01 00:00:00 1970 +0000
24 date: Thu Jan 01 00:00:00 1970 +0000
25 summary: Added tag bleah for changeset acb14030fe0a
25 summary: Added tag bleah for changeset acb14030fe0a
26
26
27 changeset: 0:acb14030fe0a
27 changeset: 0:acb14030fe0a
28 tag: bleah
28 tag: bleah
29 user: test
29 user: test
30 date: Thu Jan 01 00:00:00 1970 +0000
30 date: Thu Jan 01 00:00:00 1970 +0000
31 summary: test
31 summary: test
32
32
33
33
34 $ echo foo >> .hgtags
34 $ echo foo >> .hgtags
35 $ hg tag "bleah2" || echo "failed"
35 $ hg tag "bleah2"
36 abort: working copy of .hgtags is changed (please commit .hgtags manually)
36 abort: working copy of .hgtags is changed (please commit .hgtags manually)
37 failed
37 [255]
38
38
39 $ hg revert .hgtags
39 $ hg revert .hgtags
40 $ hg tag -r 0 x y z y y z || echo "failed"
40 $ hg tag -r 0 x y z y y z
41 abort: tag names must be unique
41 abort: tag names must be unique
42 failed
42 [255]
43 $ hg tag tap nada dot tip null . || echo "failed"
43 $ hg tag tap nada dot tip null .
44 abort: the name 'tip' is reserved
44 abort: the name 'tip' is reserved
45 failed
45 [255]
46 $ hg tag "bleah" || echo "failed"
46 $ hg tag "bleah"
47 abort: tag 'bleah' already exists (use -f to force)
47 abort: tag 'bleah' already exists (use -f to force)
48 failed
48 [255]
49 $ hg tag "blecch" "bleah" || echo "failed"
49 $ hg tag "blecch" "bleah"
50 abort: tag 'bleah' already exists (use -f to force)
50 abort: tag 'bleah' already exists (use -f to force)
51 failed
51 [255]
52
52
53 $ hg tag --remove "blecch" || echo "failed"
53 $ hg tag --remove "blecch"
54 abort: tag 'blecch' does not exist
54 abort: tag 'blecch' does not exist
55 failed
55 [255]
56 $ hg tag --remove "bleah" "blecch" "blough" || echo "failed"
56 $ hg tag --remove "bleah" "blecch" "blough"
57 abort: tag 'blecch' does not exist
57 abort: tag 'blecch' does not exist
58 failed
58 [255]
59
59
60 $ hg tag -r 0 "bleah0"
60 $ hg tag -r 0 "bleah0"
61 $ hg tag -l -r 1 "bleah1"
61 $ hg tag -l -r 1 "bleah1"
62 $ hg tag gack gawk gorp
62 $ hg tag gack gawk gorp
63 $ hg tag -f gack
63 $ hg tag -f gack
64 $ hg tag --remove gack gorp
64 $ hg tag --remove gack gorp
65
65
66 $ cat .hgtags
66 $ cat .hgtags
67 acb14030fe0a21b60322c440ad2d20cf7685a376 bleah
67 acb14030fe0a21b60322c440ad2d20cf7685a376 bleah
68 acb14030fe0a21b60322c440ad2d20cf7685a376 bleah0
68 acb14030fe0a21b60322c440ad2d20cf7685a376 bleah0
69 336fccc858a4eb69609a291105009e484a6b6b8d gack
69 336fccc858a4eb69609a291105009e484a6b6b8d gack
70 336fccc858a4eb69609a291105009e484a6b6b8d gawk
70 336fccc858a4eb69609a291105009e484a6b6b8d gawk
71 336fccc858a4eb69609a291105009e484a6b6b8d gorp
71 336fccc858a4eb69609a291105009e484a6b6b8d gorp
72 336fccc858a4eb69609a291105009e484a6b6b8d gack
72 336fccc858a4eb69609a291105009e484a6b6b8d gack
73 799667b6f2d9b957f73fa644a918c2df22bab58f gack
73 799667b6f2d9b957f73fa644a918c2df22bab58f gack
74 799667b6f2d9b957f73fa644a918c2df22bab58f gack
74 799667b6f2d9b957f73fa644a918c2df22bab58f gack
75 0000000000000000000000000000000000000000 gack
75 0000000000000000000000000000000000000000 gack
76 336fccc858a4eb69609a291105009e484a6b6b8d gorp
76 336fccc858a4eb69609a291105009e484a6b6b8d gorp
77 0000000000000000000000000000000000000000 gorp
77 0000000000000000000000000000000000000000 gorp
78 $ cat .hg/localtags
78 $ cat .hg/localtags
79 d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
79 d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
80
80
81 $ hg update 0
81 $ hg update 0
82 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
82 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
83 $ hg tag "foobar"
83 $ hg tag "foobar"
84 $ cat .hgtags
84 $ cat .hgtags
85 acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
85 acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
86 $ cat .hg/localtags
86 $ cat .hg/localtags
87 d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
87 d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
88
88
89 $ hg tag -l 'xx
89 $ hg tag -l 'xx
90 > newline'
90 > newline'
91 abort: '\n' cannot be used in a tag name
91 abort: '\n' cannot be used in a tag name
92 [255]
92 [255]
93 $ hg tag -l 'xx:xx'
93 $ hg tag -l 'xx:xx'
94 abort: ':' cannot be used in a tag name
94 abort: ':' cannot be used in a tag name
95 [255]
95 [255]
96
96
97 cloning local tags
97 cloning local tags
98
98
99 $ cd ..
99 $ cd ..
100 $ hg -R test log -r0:5
100 $ hg -R test log -r0:5
101 changeset: 0:acb14030fe0a
101 changeset: 0:acb14030fe0a
102 tag: bleah
102 tag: bleah
103 tag: bleah0
103 tag: bleah0
104 tag: foobar
104 tag: foobar
105 user: test
105 user: test
106 date: Thu Jan 01 00:00:00 1970 +0000
106 date: Thu Jan 01 00:00:00 1970 +0000
107 summary: test
107 summary: test
108
108
109 changeset: 1:d4f0d2909abc
109 changeset: 1:d4f0d2909abc
110 tag: bleah1
110 tag: bleah1
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: Added tag bleah for changeset acb14030fe0a
113 summary: Added tag bleah for changeset acb14030fe0a
114
114
115 changeset: 2:336fccc858a4
115 changeset: 2:336fccc858a4
116 tag: gawk
116 tag: gawk
117 user: test
117 user: test
118 date: Thu Jan 01 00:00:00 1970 +0000
118 date: Thu Jan 01 00:00:00 1970 +0000
119 summary: Added tag bleah0 for changeset acb14030fe0a
119 summary: Added tag bleah0 for changeset acb14030fe0a
120
120
121 changeset: 3:799667b6f2d9
121 changeset: 3:799667b6f2d9
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: Added tag gack, gawk, gorp for changeset 336fccc858a4
124 summary: Added tag gack, gawk, gorp for changeset 336fccc858a4
125
125
126 changeset: 4:154eeb7c0138
126 changeset: 4:154eeb7c0138
127 user: test
127 user: test
128 date: Thu Jan 01 00:00:00 1970 +0000
128 date: Thu Jan 01 00:00:00 1970 +0000
129 summary: Added tag gack for changeset 799667b6f2d9
129 summary: Added tag gack for changeset 799667b6f2d9
130
130
131 changeset: 5:b4bb47aaff09
131 changeset: 5:b4bb47aaff09
132 user: test
132 user: test
133 date: Thu Jan 01 00:00:00 1970 +0000
133 date: Thu Jan 01 00:00:00 1970 +0000
134 summary: Removed tag gack, gorp
134 summary: Removed tag gack, gorp
135
135
136 $ hg clone -q -rbleah1 test test1
136 $ hg clone -q -rbleah1 test test1
137 $ hg -R test1 parents --style=compact
137 $ hg -R test1 parents --style=compact
138 1[tip] d4f0d2909abc 1970-01-01 00:00 +0000 test
138 1[tip] d4f0d2909abc 1970-01-01 00:00 +0000 test
139 Added tag bleah for changeset acb14030fe0a
139 Added tag bleah for changeset acb14030fe0a
140
140
141 $ hg clone -q -r5 test#bleah1 test2
141 $ hg clone -q -r5 test#bleah1 test2
142 $ hg -R test2 parents --style=compact
142 $ hg -R test2 parents --style=compact
143 5[tip] b4bb47aaff09 1970-01-01 00:00 +0000 test
143 5[tip] b4bb47aaff09 1970-01-01 00:00 +0000 test
144 Removed tag gack, gorp
144 Removed tag gack, gorp
145
145
146 $ hg clone -q -U test#bleah1 test3
146 $ hg clone -q -U test#bleah1 test3
147 $ hg -R test3 parents --style=compact
147 $ hg -R test3 parents --style=compact
148
148
149 $ cd test
149 $ cd test
150
150
151 issue 601
151 issue 601
152
152
153 $ python << EOF
153 $ python << EOF
154 > f = file('.hg/localtags'); last = f.readlines()[-1][:-1]; f.close()
154 > f = file('.hg/localtags'); last = f.readlines()[-1][:-1]; f.close()
155 > f = file('.hg/localtags', 'w'); f.write(last); f.close()
155 > f = file('.hg/localtags', 'w'); f.write(last); f.close()
156 > EOF
156 > EOF
157 $ cat .hg/localtags; echo
157 $ cat .hg/localtags; echo
158 d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
158 d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
159 $ hg tag -l localnewline
159 $ hg tag -l localnewline
160 $ cat .hg/localtags; echo
160 $ cat .hg/localtags; echo
161 d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
161 d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
162 c2899151f4e76890c602a2597a650a72666681bf localnewline
162 c2899151f4e76890c602a2597a650a72666681bf localnewline
163
163
164
164
165 $ python << EOF
165 $ python << EOF
166 > f = file('.hgtags'); last = f.readlines()[-1][:-1]; f.close()
166 > f = file('.hgtags'); last = f.readlines()[-1][:-1]; f.close()
167 > f = file('.hgtags', 'w'); f.write(last); f.close()
167 > f = file('.hgtags', 'w'); f.write(last); f.close()
168 > EOF
168 > EOF
169 $ hg ci -m'broken manual edit of .hgtags'
169 $ hg ci -m'broken manual edit of .hgtags'
170 $ cat .hgtags; echo
170 $ cat .hgtags; echo
171 acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
171 acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
172 $ hg tag newline
172 $ hg tag newline
173 $ cat .hgtags; echo
173 $ cat .hgtags; echo
174 acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
174 acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
175 a0eea09de1eeec777b46f2085260a373b2fbc293 newline
175 a0eea09de1eeec777b46f2085260a373b2fbc293 newline
176
176
177
177
178 tag and branch using same name
178 tag and branch using same name
179
179
180 $ hg branch tag-and-branch-same-name
180 $ hg branch tag-and-branch-same-name
181 marked working directory as branch tag-and-branch-same-name
181 marked working directory as branch tag-and-branch-same-name
182 $ hg ci -m"discouraged"
182 $ hg ci -m"discouraged"
183 $ hg tag tag-and-branch-same-name
183 $ hg tag tag-and-branch-same-name
184 warning: tag tag-and-branch-same-name conflicts with existing branch name
184 warning: tag tag-and-branch-same-name conflicts with existing branch name
185
185
186 test custom commit messages
186 test custom commit messages
187
187
188 $ cat > $HGTMP/editor <<'__EOF__'
188 $ cat > $HGTMP/editor <<'__EOF__'
189 > #!/bin/sh
189 > #!/bin/sh
190 > echo "custom tag message" > "$1"
190 > echo "custom tag message" > "$1"
191 > echo "second line" >> "$1"
191 > echo "second line" >> "$1"
192 > __EOF__
192 > __EOF__
193 $ chmod +x "$HGTMP"/editor
193 $ chmod +x "$HGTMP"/editor
194 $ HGEDITOR="'$HGTMP'"/editor hg tag custom-tag -e
194 $ HGEDITOR="'$HGTMP'"/editor hg tag custom-tag -e
195 $ hg log -l1 --template "{desc}\n"
195 $ hg log -l1 --template "{desc}\n"
196 custom tag message
196 custom tag message
197 second line
197 second line
@@ -1,235 +1,235 b''
1 $ HGMERGE=true; export HGMERGE
1 $ HGMERGE=true; export HGMERGE
2
2
3 $ mkdir r1
3 $ mkdir r1
4 $ cd r1
4 $ cd r1
5 $ hg init
5 $ hg init
6 $ echo a > a
6 $ echo a > a
7 $ hg addremove
7 $ hg addremove
8 adding a
8 adding a
9 $ hg commit -m "1"
9 $ hg commit -m "1"
10
10
11 $ hg clone . ../r2
11 $ hg clone . ../r2
12 updating to branch default
12 updating to branch default
13 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
14 $ cd ../r2
14 $ cd ../r2
15 $ hg up
15 $ hg up
16 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
17 $ echo abc > a
17 $ echo abc > a
18 $ hg diff --nodates
18 $ hg diff --nodates
19 diff -r c19d34741b0a a
19 diff -r c19d34741b0a a
20 --- a/a
20 --- a/a
21 +++ b/a
21 +++ b/a
22 @@ -1,1 +1,1 @@
22 @@ -1,1 +1,1 @@
23 -a
23 -a
24 +abc
24 +abc
25
25
26 $ cd ../r1
26 $ cd ../r1
27 $ echo b > b
27 $ echo b > b
28 $ echo a2 > a
28 $ echo a2 > a
29 $ hg addremove
29 $ hg addremove
30 adding b
30 adding b
31 $ hg commit -m "2"
31 $ hg commit -m "2"
32
32
33 $ cd ../r2
33 $ cd ../r2
34 $ hg -q pull ../r1
34 $ hg -q pull ../r1
35 $ hg status
35 $ hg status
36 M a
36 M a
37 $ hg parents
37 $ hg parents
38 changeset: 0:c19d34741b0a
38 changeset: 0:c19d34741b0a
39 user: test
39 user: test
40 date: Thu Jan 01 00:00:00 1970 +0000
40 date: Thu Jan 01 00:00:00 1970 +0000
41 summary: 1
41 summary: 1
42
42
43 $ hg --debug up
43 $ hg --debug up
44 searching for copies back to rev 1
44 searching for copies back to rev 1
45 unmatched files in other:
45 unmatched files in other:
46 b
46 b
47 resolving manifests
47 resolving manifests
48 overwrite False partial False
48 overwrite False partial False
49 ancestor c19d34741b0a local c19d34741b0a+ remote 1e71731e6fbb
49 ancestor c19d34741b0a local c19d34741b0a+ remote 1e71731e6fbb
50 a: versions differ -> m
50 a: versions differ -> m
51 b: remote created -> g
51 b: remote created -> g
52 preserving a for resolve of a
52 preserving a for resolve of a
53 updating: a 1/2 files (50.00%)
53 updating: a 1/2 files (50.00%)
54 picked tool 'true' for a (binary False symlink False)
54 picked tool 'true' for a (binary False symlink False)
55 merging a
55 merging a
56 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
56 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
57 updating: b 2/2 files (100.00%)
57 updating: b 2/2 files (100.00%)
58 getting b
58 getting b
59 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
59 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
60 $ hg parents
60 $ hg parents
61 changeset: 1:1e71731e6fbb
61 changeset: 1:1e71731e6fbb
62 tag: tip
62 tag: tip
63 user: test
63 user: test
64 date: Thu Jan 01 00:00:00 1970 +0000
64 date: Thu Jan 01 00:00:00 1970 +0000
65 summary: 2
65 summary: 2
66
66
67 $ hg --debug up 0
67 $ hg --debug up 0
68 resolving manifests
68 resolving manifests
69 overwrite False partial False
69 overwrite False partial False
70 ancestor 1e71731e6fbb local 1e71731e6fbb+ remote c19d34741b0a
70 ancestor 1e71731e6fbb local 1e71731e6fbb+ remote c19d34741b0a
71 a: versions differ -> m
71 a: versions differ -> m
72 b: other deleted -> r
72 b: other deleted -> r
73 preserving a for resolve of a
73 preserving a for resolve of a
74 updating: b 1/2 files (50.00%)
74 updating: b 1/2 files (50.00%)
75 removing b
75 removing b
76 updating: a 2/2 files (100.00%)
76 updating: a 2/2 files (100.00%)
77 picked tool 'true' for a (binary False symlink False)
77 picked tool 'true' for a (binary False symlink False)
78 merging a
78 merging a
79 my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
79 my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
80 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
80 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
81 $ hg parents
81 $ hg parents
82 changeset: 0:c19d34741b0a
82 changeset: 0:c19d34741b0a
83 user: test
83 user: test
84 date: Thu Jan 01 00:00:00 1970 +0000
84 date: Thu Jan 01 00:00:00 1970 +0000
85 summary: 1
85 summary: 1
86
86
87 $ hg --debug merge || echo failed
87 $ hg --debug merge
88 abort: there is nothing to merge - use "hg update" instead
88 abort: there is nothing to merge - use "hg update" instead
89 failed
89 [255]
90 $ hg parents
90 $ hg parents
91 changeset: 0:c19d34741b0a
91 changeset: 0:c19d34741b0a
92 user: test
92 user: test
93 date: Thu Jan 01 00:00:00 1970 +0000
93 date: Thu Jan 01 00:00:00 1970 +0000
94 summary: 1
94 summary: 1
95
95
96 $ hg --debug up
96 $ hg --debug up
97 searching for copies back to rev 1
97 searching for copies back to rev 1
98 unmatched files in other:
98 unmatched files in other:
99 b
99 b
100 resolving manifests
100 resolving manifests
101 overwrite False partial False
101 overwrite False partial False
102 ancestor c19d34741b0a local c19d34741b0a+ remote 1e71731e6fbb
102 ancestor c19d34741b0a local c19d34741b0a+ remote 1e71731e6fbb
103 a: versions differ -> m
103 a: versions differ -> m
104 b: remote created -> g
104 b: remote created -> g
105 preserving a for resolve of a
105 preserving a for resolve of a
106 updating: a 1/2 files (50.00%)
106 updating: a 1/2 files (50.00%)
107 picked tool 'true' for a (binary False symlink False)
107 picked tool 'true' for a (binary False symlink False)
108 merging a
108 merging a
109 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
109 my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
110 updating: b 2/2 files (100.00%)
110 updating: b 2/2 files (100.00%)
111 getting b
111 getting b
112 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
112 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
113 $ hg parents
113 $ hg parents
114 changeset: 1:1e71731e6fbb
114 changeset: 1:1e71731e6fbb
115 tag: tip
115 tag: tip
116 user: test
116 user: test
117 date: Thu Jan 01 00:00:00 1970 +0000
117 date: Thu Jan 01 00:00:00 1970 +0000
118 summary: 2
118 summary: 2
119
119
120 $ hg -v history
120 $ hg -v history
121 changeset: 1:1e71731e6fbb
121 changeset: 1:1e71731e6fbb
122 tag: tip
122 tag: tip
123 user: test
123 user: test
124 date: Thu Jan 01 00:00:00 1970 +0000
124 date: Thu Jan 01 00:00:00 1970 +0000
125 files: a b
125 files: a b
126 description:
126 description:
127 2
127 2
128
128
129
129
130 changeset: 0:c19d34741b0a
130 changeset: 0:c19d34741b0a
131 user: test
131 user: test
132 date: Thu Jan 01 00:00:00 1970 +0000
132 date: Thu Jan 01 00:00:00 1970 +0000
133 files: a
133 files: a
134 description:
134 description:
135 1
135 1
136
136
137
137
138 $ hg diff --nodates
138 $ hg diff --nodates
139 diff -r 1e71731e6fbb a
139 diff -r 1e71731e6fbb a
140 --- a/a
140 --- a/a
141 +++ b/a
141 +++ b/a
142 @@ -1,1 +1,1 @@
142 @@ -1,1 +1,1 @@
143 -a2
143 -a2
144 +abc
144 +abc
145
145
146
146
147 create a second head
147 create a second head
148
148
149 $ cd ../r1
149 $ cd ../r1
150 $ hg up 0
150 $ hg up 0
151 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
151 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
152 $ echo b2 > b
152 $ echo b2 > b
153 $ echo a3 > a
153 $ echo a3 > a
154 $ hg addremove
154 $ hg addremove
155 adding b
155 adding b
156 $ hg commit -m "3"
156 $ hg commit -m "3"
157 created new head
157 created new head
158
158
159 $ cd ../r2
159 $ cd ../r2
160 $ hg -q pull ../r1
160 $ hg -q pull ../r1
161 $ hg status
161 $ hg status
162 M a
162 M a
163 $ hg parents
163 $ hg parents
164 changeset: 1:1e71731e6fbb
164 changeset: 1:1e71731e6fbb
165 user: test
165 user: test
166 date: Thu Jan 01 00:00:00 1970 +0000
166 date: Thu Jan 01 00:00:00 1970 +0000
167 summary: 2
167 summary: 2
168
168
169 $ hg --debug up || echo failed
169 $ hg --debug up
170 abort: crosses branches (use 'hg merge' to merge or use 'hg update -C' to discard changes)
170 abort: crosses branches (use 'hg merge' to merge or use 'hg update -C' to discard changes)
171 failed
171 [255]
172 $ hg --debug merge || echo failed
172 $ hg --debug merge
173 abort: outstanding uncommitted changes (use 'hg status' to list changes)
173 abort: outstanding uncommitted changes (use 'hg status' to list changes)
174 failed
174 [255]
175 $ hg --debug merge -f
175 $ hg --debug merge -f
176 searching for copies back to rev 1
176 searching for copies back to rev 1
177 resolving manifests
177 resolving manifests
178 overwrite False partial False
178 overwrite False partial False
179 ancestor c19d34741b0a local 1e71731e6fbb+ remote 83c51d0caff4
179 ancestor c19d34741b0a local 1e71731e6fbb+ remote 83c51d0caff4
180 a: versions differ -> m
180 a: versions differ -> m
181 b: versions differ -> m
181 b: versions differ -> m
182 preserving a for resolve of a
182 preserving a for resolve of a
183 preserving b for resolve of b
183 preserving b for resolve of b
184 updating: a 1/2 files (50.00%)
184 updating: a 1/2 files (50.00%)
185 picked tool 'true' for a (binary False symlink False)
185 picked tool 'true' for a (binary False symlink False)
186 merging a
186 merging a
187 my a@1e71731e6fbb+ other a@83c51d0caff4 ancestor a@c19d34741b0a
187 my a@1e71731e6fbb+ other a@83c51d0caff4 ancestor a@c19d34741b0a
188 updating: b 2/2 files (100.00%)
188 updating: b 2/2 files (100.00%)
189 picked tool 'true' for b (binary False symlink False)
189 picked tool 'true' for b (binary False symlink False)
190 merging b
190 merging b
191 my b@1e71731e6fbb+ other b@83c51d0caff4 ancestor b@000000000000
191 my b@1e71731e6fbb+ other b@83c51d0caff4 ancestor b@000000000000
192 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
192 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
193 (branch merge, don't forget to commit)
193 (branch merge, don't forget to commit)
194 $ hg parents
194 $ hg parents
195 changeset: 1:1e71731e6fbb
195 changeset: 1:1e71731e6fbb
196 user: test
196 user: test
197 date: Thu Jan 01 00:00:00 1970 +0000
197 date: Thu Jan 01 00:00:00 1970 +0000
198 summary: 2
198 summary: 2
199
199
200 changeset: 2:83c51d0caff4
200 changeset: 2:83c51d0caff4
201 tag: tip
201 tag: tip
202 parent: 0:c19d34741b0a
202 parent: 0:c19d34741b0a
203 user: test
203 user: test
204 date: Thu Jan 01 00:00:00 1970 +0000
204 date: Thu Jan 01 00:00:00 1970 +0000
205 summary: 3
205 summary: 3
206
206
207 $ hg diff --nodates
207 $ hg diff --nodates
208 diff -r 1e71731e6fbb a
208 diff -r 1e71731e6fbb a
209 --- a/a
209 --- a/a
210 +++ b/a
210 +++ b/a
211 @@ -1,1 +1,1 @@
211 @@ -1,1 +1,1 @@
212 -a2
212 -a2
213 +abc
213 +abc
214
214
215
215
216 test a local add
216 test a local add
217
217
218 $ cd ..
218 $ cd ..
219 $ hg init a
219 $ hg init a
220 $ hg init b
220 $ hg init b
221 $ echo a > a/a
221 $ echo a > a/a
222 $ echo a > b/a
222 $ echo a > b/a
223 $ hg --cwd a commit -A -m a
223 $ hg --cwd a commit -A -m a
224 adding a
224 adding a
225 $ cd b
225 $ cd b
226 $ hg add a
226 $ hg add a
227 $ hg pull -u ../a
227 $ hg pull -u ../a
228 pulling from ../a
228 pulling from ../a
229 requesting all changes
229 requesting all changes
230 adding changesets
230 adding changesets
231 adding manifests
231 adding manifests
232 adding file changes
232 adding file changes
233 added 1 changesets with 1 changes to 1 files
233 added 1 changesets with 1 changes to 1 files
234 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
234 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
235 $ hg st
235 $ hg st
General Comments 0
You need to be logged in to leave comments. Login now