##// END OF EJS Templates
update: make calls to ui.progress()
Augie Fackler -
r10431:ba5e508b default
parent child Browse files
Show More
@@ -1,514 +1,518 b''
1 # merge.py - directory-level update/merge handling for Mercurial
1 # merge.py - directory-level update/merge handling for Mercurial
2 #
2 #
3 # Copyright 2006, 2007 Matt Mackall <mpm@selenic.com>
3 # Copyright 2006, 2007 Matt Mackall <mpm@selenic.com>
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 from node import nullid, nullrev, hex, bin
8 from node import nullid, nullrev, hex, bin
9 from i18n import _
9 from i18n import _
10 import util, filemerge, copies, subrepo
10 import util, filemerge, copies, subrepo
11 import errno, os, shutil
11 import errno, os, shutil
12
12
13 class mergestate(object):
13 class mergestate(object):
14 '''track 3-way merge state of individual files'''
14 '''track 3-way merge state of individual files'''
15 def __init__(self, repo):
15 def __init__(self, repo):
16 self._repo = repo
16 self._repo = repo
17 self._read()
17 self._read()
18 def reset(self, node=None):
18 def reset(self, node=None):
19 self._state = {}
19 self._state = {}
20 if node:
20 if node:
21 self._local = node
21 self._local = node
22 shutil.rmtree(self._repo.join("merge"), True)
22 shutil.rmtree(self._repo.join("merge"), True)
23 def _read(self):
23 def _read(self):
24 self._state = {}
24 self._state = {}
25 try:
25 try:
26 localnode = None
26 localnode = None
27 f = self._repo.opener("merge/state")
27 f = self._repo.opener("merge/state")
28 for i, l in enumerate(f):
28 for i, l in enumerate(f):
29 if i == 0:
29 if i == 0:
30 localnode = l[:-1]
30 localnode = l[:-1]
31 else:
31 else:
32 bits = l[:-1].split("\0")
32 bits = l[:-1].split("\0")
33 self._state[bits[0]] = bits[1:]
33 self._state[bits[0]] = bits[1:]
34 self._local = bin(localnode)
34 self._local = bin(localnode)
35 except IOError, err:
35 except IOError, err:
36 if err.errno != errno.ENOENT:
36 if err.errno != errno.ENOENT:
37 raise
37 raise
38 def _write(self):
38 def _write(self):
39 f = self._repo.opener("merge/state", "w")
39 f = self._repo.opener("merge/state", "w")
40 f.write(hex(self._local) + "\n")
40 f.write(hex(self._local) + "\n")
41 for d, v in self._state.iteritems():
41 for d, v in self._state.iteritems():
42 f.write("\0".join([d] + v) + "\n")
42 f.write("\0".join([d] + v) + "\n")
43 def add(self, fcl, fco, fca, fd, flags):
43 def add(self, fcl, fco, fca, fd, flags):
44 hash = util.sha1(fcl.path()).hexdigest()
44 hash = util.sha1(fcl.path()).hexdigest()
45 self._repo.opener("merge/" + hash, "w").write(fcl.data())
45 self._repo.opener("merge/" + hash, "w").write(fcl.data())
46 self._state[fd] = ['u', hash, fcl.path(), fca.path(),
46 self._state[fd] = ['u', hash, fcl.path(), fca.path(),
47 hex(fca.filenode()), fco.path(), flags]
47 hex(fca.filenode()), fco.path(), flags]
48 self._write()
48 self._write()
49 def __contains__(self, dfile):
49 def __contains__(self, dfile):
50 return dfile in self._state
50 return dfile in self._state
51 def __getitem__(self, dfile):
51 def __getitem__(self, dfile):
52 return self._state[dfile][0]
52 return self._state[dfile][0]
53 def __iter__(self):
53 def __iter__(self):
54 l = self._state.keys()
54 l = self._state.keys()
55 l.sort()
55 l.sort()
56 for f in l:
56 for f in l:
57 yield f
57 yield f
58 def mark(self, dfile, state):
58 def mark(self, dfile, state):
59 self._state[dfile][0] = state
59 self._state[dfile][0] = state
60 self._write()
60 self._write()
61 def resolve(self, dfile, wctx, octx):
61 def resolve(self, dfile, wctx, octx):
62 if self[dfile] == 'r':
62 if self[dfile] == 'r':
63 return 0
63 return 0
64 state, hash, lfile, afile, anode, ofile, flags = self._state[dfile]
64 state, hash, lfile, afile, anode, ofile, flags = self._state[dfile]
65 f = self._repo.opener("merge/" + hash)
65 f = self._repo.opener("merge/" + hash)
66 self._repo.wwrite(dfile, f.read(), flags)
66 self._repo.wwrite(dfile, f.read(), flags)
67 fcd = wctx[dfile]
67 fcd = wctx[dfile]
68 fco = octx[ofile]
68 fco = octx[ofile]
69 fca = self._repo.filectx(afile, fileid=anode)
69 fca = self._repo.filectx(afile, fileid=anode)
70 r = filemerge.filemerge(self._repo, self._local, lfile, fcd, fco, fca)
70 r = filemerge.filemerge(self._repo, self._local, lfile, fcd, fco, fca)
71 if not r:
71 if not r:
72 self.mark(dfile, 'r')
72 self.mark(dfile, 'r')
73 return r
73 return r
74
74
75 def _checkunknown(wctx, mctx):
75 def _checkunknown(wctx, mctx):
76 "check for collisions between unknown files and files in mctx"
76 "check for collisions between unknown files and files in mctx"
77 for f in wctx.unknown():
77 for f in wctx.unknown():
78 if f in mctx and mctx[f].cmp(wctx[f].data()):
78 if f in mctx and mctx[f].cmp(wctx[f].data()):
79 raise util.Abort(_("untracked file in working directory differs"
79 raise util.Abort(_("untracked file in working directory differs"
80 " from file in requested revision: '%s'") % f)
80 " from file in requested revision: '%s'") % f)
81
81
82 def _checkcollision(mctx):
82 def _checkcollision(mctx):
83 "check for case folding collisions in the destination context"
83 "check for case folding collisions in the destination context"
84 folded = {}
84 folded = {}
85 for fn in mctx:
85 for fn in mctx:
86 fold = fn.lower()
86 fold = fn.lower()
87 if fold in folded:
87 if fold in folded:
88 raise util.Abort(_("case-folding collision between %s and %s")
88 raise util.Abort(_("case-folding collision between %s and %s")
89 % (fn, folded[fold]))
89 % (fn, folded[fold]))
90 folded[fold] = fn
90 folded[fold] = fn
91
91
92 def _forgetremoved(wctx, mctx, branchmerge):
92 def _forgetremoved(wctx, mctx, branchmerge):
93 """
93 """
94 Forget removed files
94 Forget removed files
95
95
96 If we're jumping between revisions (as opposed to merging), and if
96 If we're jumping between revisions (as opposed to merging), and if
97 neither the working directory nor the target rev has the file,
97 neither the working directory nor the target rev has the file,
98 then we need to remove it from the dirstate, to prevent the
98 then we need to remove it from the dirstate, to prevent the
99 dirstate from listing the file when it is no longer in the
99 dirstate from listing the file when it is no longer in the
100 manifest.
100 manifest.
101
101
102 If we're merging, and the other revision has removed a file
102 If we're merging, and the other revision has removed a file
103 that is not present in the working directory, we need to mark it
103 that is not present in the working directory, we need to mark it
104 as removed.
104 as removed.
105 """
105 """
106
106
107 action = []
107 action = []
108 state = branchmerge and 'r' or 'f'
108 state = branchmerge and 'r' or 'f'
109 for f in wctx.deleted():
109 for f in wctx.deleted():
110 if f not in mctx:
110 if f not in mctx:
111 action.append((f, state))
111 action.append((f, state))
112
112
113 if not branchmerge:
113 if not branchmerge:
114 for f in wctx.removed():
114 for f in wctx.removed():
115 if f not in mctx:
115 if f not in mctx:
116 action.append((f, "f"))
116 action.append((f, "f"))
117
117
118 return action
118 return action
119
119
120 def manifestmerge(repo, p1, p2, pa, overwrite, partial):
120 def manifestmerge(repo, p1, p2, pa, overwrite, partial):
121 """
121 """
122 Merge p1 and p2 with ancestor ma and generate merge action list
122 Merge p1 and p2 with ancestor ma and generate merge action list
123
123
124 overwrite = whether we clobber working files
124 overwrite = whether we clobber working files
125 partial = function to filter file lists
125 partial = function to filter file lists
126 """
126 """
127
127
128 def fmerge(f, f2, fa):
128 def fmerge(f, f2, fa):
129 """merge flags"""
129 """merge flags"""
130 a, m, n = ma.flags(fa), m1.flags(f), m2.flags(f2)
130 a, m, n = ma.flags(fa), m1.flags(f), m2.flags(f2)
131 if m == n: # flags agree
131 if m == n: # flags agree
132 return m # unchanged
132 return m # unchanged
133 if m and n and not a: # flags set, don't agree, differ from parent
133 if m and n and not a: # flags set, don't agree, differ from parent
134 r = repo.ui.promptchoice(
134 r = repo.ui.promptchoice(
135 _(" conflicting flags for %s\n"
135 _(" conflicting flags for %s\n"
136 "(n)one, e(x)ec or sym(l)ink?") % f,
136 "(n)one, e(x)ec or sym(l)ink?") % f,
137 (_("&None"), _("E&xec"), _("Sym&link")), 0)
137 (_("&None"), _("E&xec"), _("Sym&link")), 0)
138 if r == 1:
138 if r == 1:
139 return "x" # Exec
139 return "x" # Exec
140 if r == 2:
140 if r == 2:
141 return "l" # Symlink
141 return "l" # Symlink
142 return ""
142 return ""
143 if m and m != a: # changed from a to m
143 if m and m != a: # changed from a to m
144 return m
144 return m
145 if n and n != a: # changed from a to n
145 if n and n != a: # changed from a to n
146 return n
146 return n
147 return '' # flag was cleared
147 return '' # flag was cleared
148
148
149 def act(msg, m, f, *args):
149 def act(msg, m, f, *args):
150 repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m))
150 repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m))
151 action.append((f, m) + args)
151 action.append((f, m) + args)
152
152
153 action, copy = [], {}
153 action, copy = [], {}
154
154
155 if overwrite:
155 if overwrite:
156 pa = p1
156 pa = p1
157 elif pa == p2: # backwards
157 elif pa == p2: # backwards
158 pa = p1.p1()
158 pa = p1.p1()
159 elif pa and repo.ui.configbool("merge", "followcopies", True):
159 elif pa and repo.ui.configbool("merge", "followcopies", True):
160 dirs = repo.ui.configbool("merge", "followdirs", True)
160 dirs = repo.ui.configbool("merge", "followdirs", True)
161 copy, diverge = copies.copies(repo, p1, p2, pa, dirs)
161 copy, diverge = copies.copies(repo, p1, p2, pa, dirs)
162 for of, fl in diverge.iteritems():
162 for of, fl in diverge.iteritems():
163 act("divergent renames", "dr", of, fl)
163 act("divergent renames", "dr", of, fl)
164
164
165 repo.ui.note(_("resolving manifests\n"))
165 repo.ui.note(_("resolving manifests\n"))
166 repo.ui.debug(" overwrite %s partial %s\n" % (overwrite, bool(partial)))
166 repo.ui.debug(" overwrite %s partial %s\n" % (overwrite, bool(partial)))
167 repo.ui.debug(" ancestor %s local %s remote %s\n" % (pa, p1, p2))
167 repo.ui.debug(" ancestor %s local %s remote %s\n" % (pa, p1, p2))
168
168
169 m1, m2, ma = p1.manifest(), p2.manifest(), pa.manifest()
169 m1, m2, ma = p1.manifest(), p2.manifest(), pa.manifest()
170 copied = set(copy.values())
170 copied = set(copy.values())
171
171
172 if not overwrite and '.hgsubstate' in m1:
172 if not overwrite and '.hgsubstate' in m1:
173 # check whether sub state is modified
173 # check whether sub state is modified
174 for s in p1.substate:
174 for s in p1.substate:
175 if p1.sub(s).dirty():
175 if p1.sub(s).dirty():
176 m1['.hgsubstate'] += "+"
176 m1['.hgsubstate'] += "+"
177 break
177 break
178
178
179 # Compare manifests
179 # Compare manifests
180 for f, n in m1.iteritems():
180 for f, n in m1.iteritems():
181 if partial and not partial(f):
181 if partial and not partial(f):
182 continue
182 continue
183 if f in m2:
183 if f in m2:
184 rflags = fmerge(f, f, f)
184 rflags = fmerge(f, f, f)
185 a = ma.get(f, nullid)
185 a = ma.get(f, nullid)
186 if n == m2[f] or m2[f] == a: # same or local newer
186 if n == m2[f] or m2[f] == a: # same or local newer
187 if m1.flags(f) != rflags:
187 if m1.flags(f) != rflags:
188 act("update permissions", "e", f, rflags)
188 act("update permissions", "e", f, rflags)
189 elif n == a: # remote newer
189 elif n == a: # remote newer
190 act("remote is newer", "g", f, rflags)
190 act("remote is newer", "g", f, rflags)
191 else: # both changed
191 else: # both changed
192 act("versions differ", "m", f, f, f, rflags, False)
192 act("versions differ", "m", f, f, f, rflags, False)
193 elif f in copied: # files we'll deal with on m2 side
193 elif f in copied: # files we'll deal with on m2 side
194 pass
194 pass
195 elif f in copy:
195 elif f in copy:
196 f2 = copy[f]
196 f2 = copy[f]
197 if f2 not in m2: # directory rename
197 if f2 not in m2: # directory rename
198 act("remote renamed directory to " + f2, "d",
198 act("remote renamed directory to " + f2, "d",
199 f, None, f2, m1.flags(f))
199 f, None, f2, m1.flags(f))
200 else: # case 2 A,B/B/B or case 4,21 A/B/B
200 else: # case 2 A,B/B/B or case 4,21 A/B/B
201 act("local copied/moved to " + f2, "m",
201 act("local copied/moved to " + f2, "m",
202 f, f2, f, fmerge(f, f2, f2), False)
202 f, f2, f, fmerge(f, f2, f2), False)
203 elif f in ma: # clean, a different, no remote
203 elif f in ma: # clean, a different, no remote
204 if n != ma[f]:
204 if n != ma[f]:
205 if repo.ui.promptchoice(
205 if repo.ui.promptchoice(
206 _(" local changed %s which remote deleted\n"
206 _(" local changed %s which remote deleted\n"
207 "use (c)hanged version or (d)elete?") % f,
207 "use (c)hanged version or (d)elete?") % f,
208 (_("&Changed"), _("&Delete")), 0):
208 (_("&Changed"), _("&Delete")), 0):
209 act("prompt delete", "r", f)
209 act("prompt delete", "r", f)
210 else:
210 else:
211 act("prompt keep", "a", f)
211 act("prompt keep", "a", f)
212 elif n[20:] == "a": # added, no remote
212 elif n[20:] == "a": # added, no remote
213 act("remote deleted", "f", f)
213 act("remote deleted", "f", f)
214 elif n[20:] != "u":
214 elif n[20:] != "u":
215 act("other deleted", "r", f)
215 act("other deleted", "r", f)
216
216
217 for f, n in m2.iteritems():
217 for f, n in m2.iteritems():
218 if partial and not partial(f):
218 if partial and not partial(f):
219 continue
219 continue
220 if f in m1 or f in copied: # files already visited
220 if f in m1 or f in copied: # files already visited
221 continue
221 continue
222 if f in copy:
222 if f in copy:
223 f2 = copy[f]
223 f2 = copy[f]
224 if f2 not in m1: # directory rename
224 if f2 not in m1: # directory rename
225 act("local renamed directory to " + f2, "d",
225 act("local renamed directory to " + f2, "d",
226 None, f, f2, m2.flags(f))
226 None, f, f2, m2.flags(f))
227 elif f2 in m2: # rename case 1, A/A,B/A
227 elif f2 in m2: # rename case 1, A/A,B/A
228 act("remote copied to " + f, "m",
228 act("remote copied to " + f, "m",
229 f2, f, f, fmerge(f2, f, f2), False)
229 f2, f, f, fmerge(f2, f, f2), False)
230 else: # case 3,20 A/B/A
230 else: # case 3,20 A/B/A
231 act("remote moved to " + f, "m",
231 act("remote moved to " + f, "m",
232 f2, f, f, fmerge(f2, f, f2), True)
232 f2, f, f, fmerge(f2, f, f2), True)
233 elif f not in ma:
233 elif f not in ma:
234 act("remote created", "g", f, m2.flags(f))
234 act("remote created", "g", f, m2.flags(f))
235 elif n != ma[f]:
235 elif n != ma[f]:
236 if repo.ui.promptchoice(
236 if repo.ui.promptchoice(
237 _("remote changed %s which local deleted\n"
237 _("remote changed %s which local deleted\n"
238 "use (c)hanged version or leave (d)eleted?") % f,
238 "use (c)hanged version or leave (d)eleted?") % f,
239 (_("&Changed"), _("&Deleted")), 0) == 0:
239 (_("&Changed"), _("&Deleted")), 0) == 0:
240 act("prompt recreating", "g", f, m2.flags(f))
240 act("prompt recreating", "g", f, m2.flags(f))
241
241
242 return action
242 return action
243
243
244 def actionkey(a):
244 def actionkey(a):
245 return a[1] == 'r' and -1 or 0, a
245 return a[1] == 'r' and -1 or 0, a
246
246
247 def applyupdates(repo, action, wctx, mctx):
247 def applyupdates(repo, action, wctx, mctx):
248 "apply the merge action list to the working directory"
248 "apply the merge action list to the working directory"
249
249
250 updated, merged, removed, unresolved = 0, 0, 0, 0
250 updated, merged, removed, unresolved = 0, 0, 0, 0
251 ms = mergestate(repo)
251 ms = mergestate(repo)
252 ms.reset(wctx.parents()[0].node())
252 ms.reset(wctx.parents()[0].node())
253 moves = []
253 moves = []
254 action.sort(key=actionkey)
254 action.sort(key=actionkey)
255 substate = wctx.substate # prime
255 substate = wctx.substate # prime
256
256
257 # prescan for merges
257 # prescan for merges
258 u = repo.ui
258 for a in action:
259 for a in action:
259 f, m = a[:2]
260 f, m = a[:2]
260 if m == 'm': # merge
261 if m == 'm': # merge
261 f2, fd, flags, move = a[2:]
262 f2, fd, flags, move = a[2:]
262 if f == '.hgsubstate': # merged internally
263 if f == '.hgsubstate': # merged internally
263 continue
264 continue
264 repo.ui.debug("preserving %s for resolve of %s\n" % (f, fd))
265 repo.ui.debug("preserving %s for resolve of %s\n" % (f, fd))
265 fcl = wctx[f]
266 fcl = wctx[f]
266 fco = mctx[f2]
267 fco = mctx[f2]
267 fca = fcl.ancestor(fco) or repo.filectx(f, fileid=nullrev)
268 fca = fcl.ancestor(fco) or repo.filectx(f, fileid=nullrev)
268 ms.add(fcl, fco, fca, fd, flags)
269 ms.add(fcl, fco, fca, fd, flags)
269 if f != fd and move:
270 if f != fd and move:
270 moves.append(f)
271 moves.append(f)
271
272
272 # remove renamed files after safely stored
273 # remove renamed files after safely stored
273 for f in moves:
274 for f in moves:
274 if util.lexists(repo.wjoin(f)):
275 if util.lexists(repo.wjoin(f)):
275 repo.ui.debug("removing %s\n" % f)
276 repo.ui.debug("removing %s\n" % f)
276 os.unlink(repo.wjoin(f))
277 os.unlink(repo.wjoin(f))
277
278
278 audit_path = util.path_auditor(repo.root)
279 audit_path = util.path_auditor(repo.root)
279
280
280 for a in action:
281 numupdates = len(action)
282 for i, a in enumerate(action):
281 f, m = a[:2]
283 f, m = a[:2]
284 u.progress('update', i + 1, item=f, total=numupdates, unit='files')
282 if f and f[0] == "/":
285 if f and f[0] == "/":
283 continue
286 continue
284 if m == "r": # remove
287 if m == "r": # remove
285 repo.ui.note(_("removing %s\n") % f)
288 repo.ui.note(_("removing %s\n") % f)
286 audit_path(f)
289 audit_path(f)
287 if f == '.hgsubstate': # subrepo states need updating
290 if f == '.hgsubstate': # subrepo states need updating
288 subrepo.submerge(repo, wctx, mctx, wctx)
291 subrepo.submerge(repo, wctx, mctx, wctx)
289 try:
292 try:
290 util.unlink(repo.wjoin(f))
293 util.unlink(repo.wjoin(f))
291 except OSError, inst:
294 except OSError, inst:
292 if inst.errno != errno.ENOENT:
295 if inst.errno != errno.ENOENT:
293 repo.ui.warn(_("update failed to remove %s: %s!\n") %
296 repo.ui.warn(_("update failed to remove %s: %s!\n") %
294 (f, inst.strerror))
297 (f, inst.strerror))
295 removed += 1
298 removed += 1
296 elif m == "m": # merge
299 elif m == "m": # merge
297 if f == '.hgsubstate': # subrepo states need updating
300 if f == '.hgsubstate': # subrepo states need updating
298 subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx))
301 subrepo.submerge(repo, wctx, mctx, wctx.ancestor(mctx))
299 continue
302 continue
300 f2, fd, flags, move = a[2:]
303 f2, fd, flags, move = a[2:]
301 r = ms.resolve(fd, wctx, mctx)
304 r = ms.resolve(fd, wctx, mctx)
302 if r is not None and r > 0:
305 if r is not None and r > 0:
303 unresolved += 1
306 unresolved += 1
304 else:
307 else:
305 if r is None:
308 if r is None:
306 updated += 1
309 updated += 1
307 else:
310 else:
308 merged += 1
311 merged += 1
309 util.set_flags(repo.wjoin(fd), 'l' in flags, 'x' in flags)
312 util.set_flags(repo.wjoin(fd), 'l' in flags, 'x' in flags)
310 if f != fd and move and util.lexists(repo.wjoin(f)):
313 if f != fd and move and util.lexists(repo.wjoin(f)):
311 repo.ui.debug("removing %s\n" % f)
314 repo.ui.debug("removing %s\n" % f)
312 os.unlink(repo.wjoin(f))
315 os.unlink(repo.wjoin(f))
313 elif m == "g": # get
316 elif m == "g": # get
314 flags = a[2]
317 flags = a[2]
315 repo.ui.note(_("getting %s\n") % f)
318 repo.ui.note(_("getting %s\n") % f)
316 t = mctx.filectx(f).data()
319 t = mctx.filectx(f).data()
317 repo.wwrite(f, t, flags)
320 repo.wwrite(f, t, flags)
318 updated += 1
321 updated += 1
319 if f == '.hgsubstate': # subrepo states need updating
322 if f == '.hgsubstate': # subrepo states need updating
320 subrepo.submerge(repo, wctx, mctx, wctx)
323 subrepo.submerge(repo, wctx, mctx, wctx)
321 elif m == "d": # directory rename
324 elif m == "d": # directory rename
322 f2, fd, flags = a[2:]
325 f2, fd, flags = a[2:]
323 if f:
326 if f:
324 repo.ui.note(_("moving %s to %s\n") % (f, fd))
327 repo.ui.note(_("moving %s to %s\n") % (f, fd))
325 t = wctx.filectx(f).data()
328 t = wctx.filectx(f).data()
326 repo.wwrite(fd, t, flags)
329 repo.wwrite(fd, t, flags)
327 util.unlink(repo.wjoin(f))
330 util.unlink(repo.wjoin(f))
328 if f2:
331 if f2:
329 repo.ui.note(_("getting %s to %s\n") % (f2, fd))
332 repo.ui.note(_("getting %s to %s\n") % (f2, fd))
330 t = mctx.filectx(f2).data()
333 t = mctx.filectx(f2).data()
331 repo.wwrite(fd, t, flags)
334 repo.wwrite(fd, t, flags)
332 updated += 1
335 updated += 1
333 elif m == "dr": # divergent renames
336 elif m == "dr": # divergent renames
334 fl = a[2]
337 fl = a[2]
335 repo.ui.warn(_("warning: detected divergent renames of %s to:\n") % f)
338 repo.ui.warn(_("warning: detected divergent renames of %s to:\n") % f)
336 for nf in fl:
339 for nf in fl:
337 repo.ui.warn(" %s\n" % nf)
340 repo.ui.warn(" %s\n" % nf)
338 elif m == "e": # exec
341 elif m == "e": # exec
339 flags = a[2]
342 flags = a[2]
340 util.set_flags(repo.wjoin(f), 'l' in flags, 'x' in flags)
343 util.set_flags(repo.wjoin(f), 'l' in flags, 'x' in flags)
344 u.progress('update', None, total=numupdates, unit='files')
341
345
342 return updated, merged, removed, unresolved
346 return updated, merged, removed, unresolved
343
347
344 def recordupdates(repo, action, branchmerge):
348 def recordupdates(repo, action, branchmerge):
345 "record merge actions to the dirstate"
349 "record merge actions to the dirstate"
346
350
347 for a in action:
351 for a in action:
348 f, m = a[:2]
352 f, m = a[:2]
349 if m == "r": # remove
353 if m == "r": # remove
350 if branchmerge:
354 if branchmerge:
351 repo.dirstate.remove(f)
355 repo.dirstate.remove(f)
352 else:
356 else:
353 repo.dirstate.forget(f)
357 repo.dirstate.forget(f)
354 elif m == "a": # re-add
358 elif m == "a": # re-add
355 if not branchmerge:
359 if not branchmerge:
356 repo.dirstate.add(f)
360 repo.dirstate.add(f)
357 elif m == "f": # forget
361 elif m == "f": # forget
358 repo.dirstate.forget(f)
362 repo.dirstate.forget(f)
359 elif m == "e": # exec change
363 elif m == "e": # exec change
360 repo.dirstate.normallookup(f)
364 repo.dirstate.normallookup(f)
361 elif m == "g": # get
365 elif m == "g": # get
362 if branchmerge:
366 if branchmerge:
363 repo.dirstate.normaldirty(f)
367 repo.dirstate.normaldirty(f)
364 else:
368 else:
365 repo.dirstate.normal(f)
369 repo.dirstate.normal(f)
366 elif m == "m": # merge
370 elif m == "m": # merge
367 f2, fd, flag, move = a[2:]
371 f2, fd, flag, move = a[2:]
368 if branchmerge:
372 if branchmerge:
369 # We've done a branch merge, mark this file as merged
373 # We've done a branch merge, mark this file as merged
370 # so that we properly record the merger later
374 # so that we properly record the merger later
371 repo.dirstate.merge(fd)
375 repo.dirstate.merge(fd)
372 if f != f2: # copy/rename
376 if f != f2: # copy/rename
373 if move:
377 if move:
374 repo.dirstate.remove(f)
378 repo.dirstate.remove(f)
375 if f != fd:
379 if f != fd:
376 repo.dirstate.copy(f, fd)
380 repo.dirstate.copy(f, fd)
377 else:
381 else:
378 repo.dirstate.copy(f2, fd)
382 repo.dirstate.copy(f2, fd)
379 else:
383 else:
380 # We've update-merged a locally modified file, so
384 # We've update-merged a locally modified file, so
381 # we set the dirstate to emulate a normal checkout
385 # we set the dirstate to emulate a normal checkout
382 # of that file some time in the past. Thus our
386 # of that file some time in the past. Thus our
383 # merge will appear as a normal local file
387 # merge will appear as a normal local file
384 # modification.
388 # modification.
385 repo.dirstate.normallookup(fd)
389 repo.dirstate.normallookup(fd)
386 if move:
390 if move:
387 repo.dirstate.forget(f)
391 repo.dirstate.forget(f)
388 elif m == "d": # directory rename
392 elif m == "d": # directory rename
389 f2, fd, flag = a[2:]
393 f2, fd, flag = a[2:]
390 if not f2 and f not in repo.dirstate:
394 if not f2 and f not in repo.dirstate:
391 # untracked file moved
395 # untracked file moved
392 continue
396 continue
393 if branchmerge:
397 if branchmerge:
394 repo.dirstate.add(fd)
398 repo.dirstate.add(fd)
395 if f:
399 if f:
396 repo.dirstate.remove(f)
400 repo.dirstate.remove(f)
397 repo.dirstate.copy(f, fd)
401 repo.dirstate.copy(f, fd)
398 if f2:
402 if f2:
399 repo.dirstate.copy(f2, fd)
403 repo.dirstate.copy(f2, fd)
400 else:
404 else:
401 repo.dirstate.normal(fd)
405 repo.dirstate.normal(fd)
402 if f:
406 if f:
403 repo.dirstate.forget(f)
407 repo.dirstate.forget(f)
404
408
405 def update(repo, node, branchmerge, force, partial):
409 def update(repo, node, branchmerge, force, partial):
406 """
410 """
407 Perform a merge between the working directory and the given node
411 Perform a merge between the working directory and the given node
408
412
409 node = the node to update to, or None if unspecified
413 node = the node to update to, or None if unspecified
410 branchmerge = whether to merge between branches
414 branchmerge = whether to merge between branches
411 force = whether to force branch merging or file overwriting
415 force = whether to force branch merging or file overwriting
412 partial = a function to filter file lists (dirstate not updated)
416 partial = a function to filter file lists (dirstate not updated)
413
417
414 The table below shows all the behaviors of the update command
418 The table below shows all the behaviors of the update command
415 given the -c and -C or no options, whether the working directory
419 given the -c and -C or no options, whether the working directory
416 is dirty, whether a revision is specified, and the relationship of
420 is dirty, whether a revision is specified, and the relationship of
417 the parent rev to the target rev (linear, on the same named
421 the parent rev to the target rev (linear, on the same named
418 branch, or on another named branch).
422 branch, or on another named branch).
419
423
420 This logic is tested by test-update-branches.
424 This logic is tested by test-update-branches.
421
425
422 -c -C dirty rev | linear same cross
426 -c -C dirty rev | linear same cross
423 n n n n | ok (1) x
427 n n n n | ok (1) x
424 n n n y | ok ok ok
428 n n n y | ok ok ok
425 n n y * | merge (2) (2)
429 n n y * | merge (2) (2)
426 n y * * | --- discard ---
430 n y * * | --- discard ---
427 y n y * | --- (3) ---
431 y n y * | --- (3) ---
428 y n n * | --- ok ---
432 y n n * | --- ok ---
429 y y * * | --- (4) ---
433 y y * * | --- (4) ---
430
434
431 x = can't happen
435 x = can't happen
432 * = don't-care
436 * = don't-care
433 1 = abort: crosses branches (use 'hg merge' or 'hg update -c')
437 1 = abort: crosses branches (use 'hg merge' or 'hg update -c')
434 2 = abort: crosses branches (use 'hg merge' to merge or
438 2 = abort: crosses branches (use 'hg merge' to merge or
435 use 'hg update -C' to discard changes)
439 use 'hg update -C' to discard changes)
436 3 = abort: uncommitted local changes
440 3 = abort: uncommitted local changes
437 4 = incompatible options (checked in commands.py)
441 4 = incompatible options (checked in commands.py)
438 """
442 """
439
443
440 onode = node
444 onode = node
441 wlock = repo.wlock()
445 wlock = repo.wlock()
442 try:
446 try:
443 wc = repo[None]
447 wc = repo[None]
444 if node is None:
448 if node is None:
445 # tip of current branch
449 # tip of current branch
446 try:
450 try:
447 node = repo.branchtags()[wc.branch()]
451 node = repo.branchtags()[wc.branch()]
448 except KeyError:
452 except KeyError:
449 if wc.branch() == "default": # no default branch!
453 if wc.branch() == "default": # no default branch!
450 node = repo.lookup("tip") # update to tip
454 node = repo.lookup("tip") # update to tip
451 else:
455 else:
452 raise util.Abort(_("branch %s not found") % wc.branch())
456 raise util.Abort(_("branch %s not found") % wc.branch())
453 overwrite = force and not branchmerge
457 overwrite = force and not branchmerge
454 pl = wc.parents()
458 pl = wc.parents()
455 p1, p2 = pl[0], repo[node]
459 p1, p2 = pl[0], repo[node]
456 pa = p1.ancestor(p2)
460 pa = p1.ancestor(p2)
457 fp1, fp2, xp1, xp2 = p1.node(), p2.node(), str(p1), str(p2)
461 fp1, fp2, xp1, xp2 = p1.node(), p2.node(), str(p1), str(p2)
458 fastforward = False
462 fastforward = False
459
463
460 ### check phase
464 ### check phase
461 if not overwrite and len(pl) > 1:
465 if not overwrite and len(pl) > 1:
462 raise util.Abort(_("outstanding uncommitted merges"))
466 raise util.Abort(_("outstanding uncommitted merges"))
463 if branchmerge:
467 if branchmerge:
464 if pa == p2:
468 if pa == p2:
465 raise util.Abort(_("can't merge with ancestor"))
469 raise util.Abort(_("can't merge with ancestor"))
466 elif pa == p1:
470 elif pa == p1:
467 if p1.branch() != p2.branch():
471 if p1.branch() != p2.branch():
468 fastforward = True
472 fastforward = True
469 else:
473 else:
470 raise util.Abort(_("nothing to merge (use 'hg update'"
474 raise util.Abort(_("nothing to merge (use 'hg update'"
471 " or check 'hg heads')"))
475 " or check 'hg heads')"))
472 if not force and (wc.files() or wc.deleted()):
476 if not force and (wc.files() or wc.deleted()):
473 raise util.Abort(_("outstanding uncommitted changes "
477 raise util.Abort(_("outstanding uncommitted changes "
474 "(use 'hg status' to list changes)"))
478 "(use 'hg status' to list changes)"))
475 elif not overwrite:
479 elif not overwrite:
476 if pa == p1 or pa == p2: # linear
480 if pa == p1 or pa == p2: # linear
477 pass # all good
481 pass # all good
478 elif wc.files() or wc.deleted():
482 elif wc.files() or wc.deleted():
479 raise util.Abort(_("crosses branches (use 'hg merge' to merge "
483 raise util.Abort(_("crosses branches (use 'hg merge' to merge "
480 "or use 'hg update -C' to discard changes)"))
484 "or use 'hg update -C' to discard changes)"))
481 elif onode is None:
485 elif onode is None:
482 raise util.Abort(_("crosses branches (use 'hg merge' or use "
486 raise util.Abort(_("crosses branches (use 'hg merge' or use "
483 "'hg update -c')"))
487 "'hg update -c')"))
484 else:
488 else:
485 # Allow jumping branches if clean and specific rev given
489 # Allow jumping branches if clean and specific rev given
486 overwrite = True
490 overwrite = True
487
491
488 ### calculate phase
492 ### calculate phase
489 action = []
493 action = []
490 if not force:
494 if not force:
491 _checkunknown(wc, p2)
495 _checkunknown(wc, p2)
492 if not util.checkcase(repo.path):
496 if not util.checkcase(repo.path):
493 _checkcollision(p2)
497 _checkcollision(p2)
494 action += _forgetremoved(wc, p2, branchmerge)
498 action += _forgetremoved(wc, p2, branchmerge)
495 action += manifestmerge(repo, wc, p2, pa, overwrite, partial)
499 action += manifestmerge(repo, wc, p2, pa, overwrite, partial)
496
500
497 ### apply phase
501 ### apply phase
498 if not branchmerge: # just jump to the new rev
502 if not branchmerge: # just jump to the new rev
499 fp1, fp2, xp1, xp2 = fp2, nullid, xp2, ''
503 fp1, fp2, xp1, xp2 = fp2, nullid, xp2, ''
500 if not partial:
504 if not partial:
501 repo.hook('preupdate', throw=True, parent1=xp1, parent2=xp2)
505 repo.hook('preupdate', throw=True, parent1=xp1, parent2=xp2)
502
506
503 stats = applyupdates(repo, action, wc, p2)
507 stats = applyupdates(repo, action, wc, p2)
504
508
505 if not partial:
509 if not partial:
506 recordupdates(repo, action, branchmerge)
510 recordupdates(repo, action, branchmerge)
507 repo.dirstate.setparents(fp1, fp2)
511 repo.dirstate.setparents(fp1, fp2)
508 if not branchmerge and not fastforward:
512 if not branchmerge and not fastforward:
509 repo.dirstate.setbranch(p2.branch())
513 repo.dirstate.setbranch(p2.branch())
510 repo.hook('update', parent1=xp1, parent2=xp2, error=stats[3])
514 repo.hook('update', parent1=xp1, parent2=xp2, error=stats[3])
511
515
512 return stats
516 return stats
513 finally:
517 finally:
514 wlock.release()
518 wlock.release()
@@ -1,35 +1,37 b''
1 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
2 searching for copies back to rev 1
2 searching for copies back to rev 1
3 unmatched files in other:
3 unmatched files in other:
4 b
4 b
5 c
5 c
6 all copies found (* = to merge, ! = divergent):
6 all copies found (* = to merge, ! = divergent):
7 c -> a *
7 c -> a *
8 b -> a *
8 b -> a *
9 checking for directory renames
9 checking for directory renames
10 resolving manifests
10 resolving manifests
11 overwrite None partial False
11 overwrite None partial False
12 ancestor 583c7b748052 local fb3948d97f07+ remote 40da226db0f0
12 ancestor 583c7b748052 local fb3948d97f07+ remote 40da226db0f0
13 a: remote moved to c -> m
13 a: remote moved to c -> m
14 a: remote moved to b -> m
14 a: remote moved to b -> m
15 preserving a for resolve of b
15 preserving a for resolve of b
16 preserving a for resolve of c
16 preserving a for resolve of c
17 removing a
17 removing a
18 update: a 1/2 files (50.00%)
18 picked tool 'internal:merge' for b (binary False symlink False)
19 picked tool 'internal:merge' for b (binary False symlink False)
19 merging a and b to b
20 merging a and b to b
20 my b@fb3948d97f07+ other b@40da226db0f0 ancestor a@583c7b748052
21 my b@fb3948d97f07+ other b@40da226db0f0 ancestor a@583c7b748052
21 premerge successful
22 premerge successful
23 update: a 2/2 files (100.00%)
22 picked tool 'internal:merge' for c (binary False symlink False)
24 picked tool 'internal:merge' for c (binary False symlink False)
23 merging a and c to c
25 merging a and c to c
24 my c@fb3948d97f07+ other c@40da226db0f0 ancestor a@583c7b748052
26 my c@fb3948d97f07+ other c@40da226db0f0 ancestor a@583c7b748052
25 premerge successful
27 premerge successful
26 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
28 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
27 (branch merge, don't forget to commit)
29 (branch merge, don't forget to commit)
28 -- b --
30 -- b --
29 0
31 0
30 1
32 1
31 2
33 2
32 -- c --
34 -- c --
33 0
35 0
34 1
36 1
35 2
37 2
@@ -1,37 +1,39 b''
1 created new head
1 created new head
2 changeset: 1:7731dad1c2b9
2 changeset: 1:7731dad1c2b9
3 user: test
3 user: test
4 date: Mon Jan 12 13:46:40 1970 +0000
4 date: Mon Jan 12 13:46:40 1970 +0000
5 summary: cp foo bar; change both
5 summary: cp foo bar; change both
6
6
7 searching for copies back to rev 1
7 searching for copies back to rev 1
8 unmatched files in other:
8 unmatched files in other:
9 bar
9 bar
10 all copies found (* = to merge, ! = divergent):
10 all copies found (* = to merge, ! = divergent):
11 bar -> foo *
11 bar -> foo *
12 checking for directory renames
12 checking for directory renames
13 resolving manifests
13 resolving manifests
14 overwrite None partial False
14 overwrite None partial False
15 ancestor 310fd17130da local 2092631ce82b+ remote 7731dad1c2b9
15 ancestor 310fd17130da local 2092631ce82b+ remote 7731dad1c2b9
16 foo: versions differ -> m
16 foo: versions differ -> m
17 foo: remote copied to bar -> m
17 foo: remote copied to bar -> m
18 preserving foo for resolve of bar
18 preserving foo for resolve of bar
19 preserving foo for resolve of foo
19 preserving foo for resolve of foo
20 update: foo 1/2 files (50.00%)
20 picked tool 'internal:merge' for bar (binary False symlink False)
21 picked tool 'internal:merge' for bar (binary False symlink False)
21 merging foo and bar to bar
22 merging foo and bar to bar
22 my bar@2092631ce82b+ other bar@7731dad1c2b9 ancestor foo@310fd17130da
23 my bar@2092631ce82b+ other bar@7731dad1c2b9 ancestor foo@310fd17130da
23 premerge successful
24 premerge successful
25 update: foo 2/2 files (100.00%)
24 picked tool 'internal:merge' for foo (binary False symlink False)
26 picked tool 'internal:merge' for foo (binary False symlink False)
25 merging foo
27 merging foo
26 my foo@2092631ce82b+ other foo@7731dad1c2b9 ancestor foo@310fd17130da
28 my foo@2092631ce82b+ other foo@7731dad1c2b9 ancestor foo@310fd17130da
27 premerge successful
29 premerge successful
28 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
30 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
29 (branch merge, don't forget to commit)
31 (branch merge, don't forget to commit)
30 -- foo --
32 -- foo --
31 line 0
33 line 0
32 line 1
34 line 1
33 line 2-1
35 line 2-1
34 -- bar --
36 -- bar --
35 line 0
37 line 0
36 line 1
38 line 1
37 line 2-2
39 line 2-2
@@ -1,20 +1,21 b''
1 reverting foo
1 reverting foo
2 changeset 2:4d9e78aaceee backs out changeset 1:b515023e500e
2 changeset 2:4d9e78aaceee backs out changeset 1:b515023e500e
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 searching for copies back to rev 1
4 searching for copies back to rev 1
5 unmatched files in local:
5 unmatched files in local:
6 bar
6 bar
7 resolving manifests
7 resolving manifests
8 overwrite None partial False
8 overwrite None partial False
9 ancestor bbd179dfa0a7 local 71766447bdbb+ remote 4d9e78aaceee
9 ancestor bbd179dfa0a7 local 71766447bdbb+ remote 4d9e78aaceee
10 foo: remote is newer -> g
10 foo: remote is newer -> g
11 update: foo 1/1 files (100.00%)
11 getting foo
12 getting foo
12 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
13 (branch merge, don't forget to commit)
14 (branch merge, don't forget to commit)
14 n 0 -2 unset foo
15 n 0 -2 unset foo
15 M foo
16 M foo
16 c6fc755d7e68f49f880599da29f15add41f42f5a 644 foo
17 c6fc755d7e68f49f880599da29f15add41f42f5a 644 foo
17 rev offset length base linkrev nodeid p1 p2
18 rev offset length base linkrev nodeid p1 p2
18 0 0 5 0 0 2ed2a3912a0b 000000000000 000000000000
19 0 0 5 0 0 2ed2a3912a0b 000000000000 000000000000
19 1 5 9 1 1 6f4310b00b9a 2ed2a3912a0b 000000000000
20 1 5 9 1 1 6f4310b00b9a 2ed2a3912a0b 000000000000
20 2 14 5 2 2 c6fc755d7e68 6f4310b00b9a 000000000000
21 2 14 5 2 2 c6fc755d7e68 6f4310b00b9a 000000000000
@@ -1,58 +1,62 b''
1 adding 1
1 adding 1
2 adding 2
2 adding 2
3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
4 created new head
4 created new head
5 searching for copies back to rev 1
5 searching for copies back to rev 1
6 unmatched files in other:
6 unmatched files in other:
7 1a
7 1a
8 all copies found (* = to merge, ! = divergent):
8 all copies found (* = to merge, ! = divergent):
9 1a -> 1
9 1a -> 1
10 checking for directory renames
10 checking for directory renames
11 resolving manifests
11 resolving manifests
12 overwrite None partial False
12 overwrite None partial False
13 ancestor 81f4b099af3d local c64f439569a9+ remote 2f8037f47a5c
13 ancestor 81f4b099af3d local c64f439569a9+ remote 2f8037f47a5c
14 1: other deleted -> r
14 1: other deleted -> r
15 1a: remote created -> g
15 1a: remote created -> g
16 update: 1 1/2 files (50.00%)
16 removing 1
17 removing 1
18 update: 1a 2/2 files (100.00%)
17 getting 1a
19 getting 1a
18 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
20 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
19 (branch merge, don't forget to commit)
21 (branch merge, don't forget to commit)
20 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
22 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
21 created new head
23 created new head
22 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
24 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
23 searching for copies back to rev 1
25 searching for copies back to rev 1
24 unmatched files in local:
26 unmatched files in local:
25 1a
27 1a
26 all copies found (* = to merge, ! = divergent):
28 all copies found (* = to merge, ! = divergent):
27 1a -> 1 *
29 1a -> 1 *
28 checking for directory renames
30 checking for directory renames
29 resolving manifests
31 resolving manifests
30 overwrite None partial False
32 overwrite None partial False
31 ancestor c64f439569a9 local ac7575e3c052+ remote 746e9549ea96
33 ancestor c64f439569a9 local ac7575e3c052+ remote 746e9549ea96
32 1a: local copied/moved to 1 -> m
34 1a: local copied/moved to 1 -> m
33 preserving 1a for resolve of 1a
35 preserving 1a for resolve of 1a
36 update: 1a 1/1 files (100.00%)
34 picked tool 'internal:merge' for 1a (binary False symlink False)
37 picked tool 'internal:merge' for 1a (binary False symlink False)
35 merging 1a and 1 to 1a
38 merging 1a and 1 to 1a
36 my 1a@ac7575e3c052+ other 1@746e9549ea96 ancestor 1@81f4b099af3d
39 my 1a@ac7575e3c052+ other 1@746e9549ea96 ancestor 1@81f4b099af3d
37 premerge successful
40 premerge successful
38 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
41 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
39 (branch merge, don't forget to commit)
42 (branch merge, don't forget to commit)
40 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
43 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
41 searching for copies back to rev 1
44 searching for copies back to rev 1
42 unmatched files in other:
45 unmatched files in other:
43 1a
46 1a
44 all copies found (* = to merge, ! = divergent):
47 all copies found (* = to merge, ! = divergent):
45 1a -> 1 *
48 1a -> 1 *
46 checking for directory renames
49 checking for directory renames
47 resolving manifests
50 resolving manifests
48 overwrite None partial False
51 overwrite None partial False
49 ancestor c64f439569a9 local 746e9549ea96+ remote ac7575e3c052
52 ancestor c64f439569a9 local 746e9549ea96+ remote ac7575e3c052
50 1: remote moved to 1a -> m
53 1: remote moved to 1a -> m
51 preserving 1 for resolve of 1a
54 preserving 1 for resolve of 1a
52 removing 1
55 removing 1
56 update: 1 1/1 files (100.00%)
53 picked tool 'internal:merge' for 1a (binary False symlink False)
57 picked tool 'internal:merge' for 1a (binary False symlink False)
54 merging 1 and 1a to 1a
58 merging 1 and 1a to 1a
55 my 1a@746e9549ea96+ other 1a@ac7575e3c052 ancestor 1@81f4b099af3d
59 my 1a@746e9549ea96+ other 1a@ac7575e3c052 ancestor 1@81f4b099af3d
56 premerge successful
60 premerge successful
57 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
58 (branch merge, don't forget to commit)
62 (branch merge, don't forget to commit)
@@ -1,94 +1,96 b''
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 created new head
2 created new head
3 merging bar and foo to bar
3 merging bar and foo to bar
4 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
4 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
5 (branch merge, don't forget to commit)
5 (branch merge, don't forget to commit)
6 % contents of bar should be line0 line1 line2
6 % contents of bar should be line0 line1 line2
7 line0
7 line0
8 line1
8 line1
9 line2
9 line2
10 rev offset length base linkrev nodeid p1 p2
10 rev offset length base linkrev nodeid p1 p2
11 0 0 77 0 2 da78c0659611 000000000000 000000000000
11 0 0 77 0 2 da78c0659611 000000000000 000000000000
12 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
12 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
13 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
13 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
14 rev offset length base linkrev nodeid p1 p2
14 rev offset length base linkrev nodeid p1 p2
15 0 0 7 0 0 690b295714ae 000000000000 000000000000
15 0 0 7 0 0 690b295714ae 000000000000 000000000000
16 1 7 13 1 1 9e25c27b8757 690b295714ae 000000000000
16 1 7 13 1 1 9e25c27b8757 690b295714ae 000000000000
17 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
17 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
18 created new head
18 created new head
19 4:2d2f9a22c82b 2:0a3ab4856510
19 4:2d2f9a22c82b 2:0a3ab4856510
20 3:7d3b554bfdf1 2:0a3ab4856510 1:5cd961e4045d
20 3:7d3b554bfdf1 2:0a3ab4856510 1:5cd961e4045d
21 2:0a3ab4856510 0:2665aaee66e9
21 2:0a3ab4856510 0:2665aaee66e9
22 1:5cd961e4045d
22 1:5cd961e4045d
23 0:2665aaee66e9
23 0:2665aaee66e9
24 % this should use bar@rev2 as the ancestor
24 % this should use bar@rev2 as the ancestor
25 searching for copies back to rev 1
25 searching for copies back to rev 1
26 resolving manifests
26 resolving manifests
27 overwrite None partial False
27 overwrite None partial False
28 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 7d3b554bfdf1
28 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 7d3b554bfdf1
29 bar: versions differ -> m
29 bar: versions differ -> m
30 preserving bar for resolve of bar
30 preserving bar for resolve of bar
31 update: bar 1/1 files (100.00%)
31 picked tool 'internal:merge' for bar (binary False symlink False)
32 picked tool 'internal:merge' for bar (binary False symlink False)
32 merging bar
33 merging bar
33 my bar@2d2f9a22c82b+ other bar@7d3b554bfdf1 ancestor bar@0a3ab4856510
34 my bar@2d2f9a22c82b+ other bar@7d3b554bfdf1 ancestor bar@0a3ab4856510
34 premerge successful
35 premerge successful
35 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
36 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
36 (branch merge, don't forget to commit)
37 (branch merge, don't forget to commit)
37 % contents of bar should be line1 line2
38 % contents of bar should be line1 line2
38 line1
39 line1
39 line2
40 line2
40 rev offset length base linkrev nodeid p1 p2
41 rev offset length base linkrev nodeid p1 p2
41 0 0 77 0 2 da78c0659611 000000000000 000000000000
42 0 0 77 0 2 da78c0659611 000000000000 000000000000
42 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
43 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
43 2 153 7 2 4 4defe5eec418 da78c0659611 000000000000
44 2 153 7 2 4 4defe5eec418 da78c0659611 000000000000
44 3 160 13 3 5 4663501da27b 4defe5eec418 4b358025380b
45 3 160 13 3 5 4663501da27b 4defe5eec418 4b358025380b
45
46
46
47
47 requesting all changes
48 requesting all changes
48 adding changesets
49 adding changesets
49 adding manifests
50 adding manifests
50 adding file changes
51 adding file changes
51 added 3 changesets with 3 changes to 2 files (+1 heads)
52 added 3 changesets with 3 changes to 2 files (+1 heads)
52 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
53 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
53 merging foo and bar to bar
54 merging foo and bar to bar
54 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
55 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
55 (branch merge, don't forget to commit)
56 (branch merge, don't forget to commit)
56 % contents of bar should be line0 line1 line2
57 % contents of bar should be line0 line1 line2
57 line0
58 line0
58 line1
59 line1
59 line2
60 line2
60 rev offset length base linkrev nodeid p1 p2
61 rev offset length base linkrev nodeid p1 p2
61 0 0 77 0 2 da78c0659611 000000000000 000000000000
62 0 0 77 0 2 da78c0659611 000000000000 000000000000
62 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
63 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
63 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
64 bar renamed from foo:9e25c27b87571a1edee5ae4dddee5687746cc8e2
64 rev offset length base linkrev nodeid p1 p2
65 rev offset length base linkrev nodeid p1 p2
65 0 0 7 0 0 690b295714ae 000000000000 000000000000
66 0 0 7 0 0 690b295714ae 000000000000 000000000000
66 1 7 13 1 1 9e25c27b8757 690b295714ae 000000000000
67 1 7 13 1 1 9e25c27b8757 690b295714ae 000000000000
67 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
68 created new head
69 created new head
69 4:2d2f9a22c82b 2:0a3ab4856510
70 4:2d2f9a22c82b 2:0a3ab4856510
70 3:96ab80c60897 1:5cd961e4045d 2:0a3ab4856510
71 3:96ab80c60897 1:5cd961e4045d 2:0a3ab4856510
71 2:0a3ab4856510 0:2665aaee66e9
72 2:0a3ab4856510 0:2665aaee66e9
72 1:5cd961e4045d
73 1:5cd961e4045d
73 0:2665aaee66e9
74 0:2665aaee66e9
74 % this should use bar@rev2 as the ancestor
75 % this should use bar@rev2 as the ancestor
75 searching for copies back to rev 1
76 searching for copies back to rev 1
76 resolving manifests
77 resolving manifests
77 overwrite None partial False
78 overwrite None partial False
78 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 96ab80c60897
79 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 96ab80c60897
79 bar: versions differ -> m
80 bar: versions differ -> m
80 preserving bar for resolve of bar
81 preserving bar for resolve of bar
82 update: bar 1/1 files (100.00%)
81 picked tool 'internal:merge' for bar (binary False symlink False)
83 picked tool 'internal:merge' for bar (binary False symlink False)
82 merging bar
84 merging bar
83 my bar@2d2f9a22c82b+ other bar@96ab80c60897 ancestor bar@0a3ab4856510
85 my bar@2d2f9a22c82b+ other bar@96ab80c60897 ancestor bar@0a3ab4856510
84 premerge successful
86 premerge successful
85 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
87 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
86 (branch merge, don't forget to commit)
88 (branch merge, don't forget to commit)
87 % contents of bar should be line1 line2
89 % contents of bar should be line1 line2
88 line1
90 line1
89 line2
91 line2
90 rev offset length base linkrev nodeid p1 p2
92 rev offset length base linkrev nodeid p1 p2
91 0 0 77 0 2 da78c0659611 000000000000 000000000000
93 0 0 77 0 2 da78c0659611 000000000000 000000000000
92 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
94 1 77 76 0 3 4b358025380b 000000000000 da78c0659611
93 2 153 7 2 4 4defe5eec418 da78c0659611 000000000000
95 2 153 7 2 4 4defe5eec418 da78c0659611 000000000000
94 3 160 13 3 5 4663501da27b 4defe5eec418 4b358025380b
96 3 160 13 3 5 4663501da27b 4defe5eec418 4b358025380b
@@ -1,27 +1,29 b''
1 adding a
1 adding a
2 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 created new head
3 created new head
4 searching for copies back to rev 1
4 searching for copies back to rev 1
5 resolving manifests
5 resolving manifests
6 overwrite None partial False
6 overwrite None partial False
7 ancestor c334dc3be0da local 521a1e40188f+ remote 3574f3e69b1c
7 ancestor c334dc3be0da local 521a1e40188f+ remote 3574f3e69b1c
8 conflicting flags for a
8 conflicting flags for a
9 (n)one, e(x)ec or sym(l)ink? n
9 (n)one, e(x)ec or sym(l)ink? n
10 a: update permissions -> e
10 a: update permissions -> e
11 update: a 1/1 files (100.00%)
11 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
12 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
12 (branch merge, don't forget to commit)
13 (branch merge, don't forget to commit)
13 % symlink is local parent, executable is other
14 % symlink is local parent, executable is other
14 a has no flags (default for conflicts)
15 a has no flags (default for conflicts)
15 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 searching for copies back to rev 1
17 searching for copies back to rev 1
17 resolving manifests
18 resolving manifests
18 overwrite None partial False
19 overwrite None partial False
19 ancestor c334dc3be0da local 3574f3e69b1c+ remote 521a1e40188f
20 ancestor c334dc3be0da local 3574f3e69b1c+ remote 521a1e40188f
20 conflicting flags for a
21 conflicting flags for a
21 (n)one, e(x)ec or sym(l)ink? n
22 (n)one, e(x)ec or sym(l)ink? n
22 a: remote is newer -> g
23 a: remote is newer -> g
24 update: a 1/1 files (100.00%)
23 getting a
25 getting a
24 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
26 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
25 (branch merge, don't forget to commit)
27 (branch merge, don't forget to commit)
26 % symlink is other parent, executable is local
28 % symlink is other parent, executable is local
27 a has no flags (default for conflicts)
29 a has no flags (default for conflicts)
@@ -1,77 +1,78 b''
1 updating to branch default
1 updating to branch default
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 pulling from ../test-a
3 pulling from ../test-a
4 searching for changes
4 searching for changes
5 adding changesets
5 adding changesets
6 adding manifests
6 adding manifests
7 adding file changes
7 adding file changes
8 added 1 changesets with 1 changes to 1 files (+1 heads)
8 added 1 changesets with 1 changes to 1 files (+1 heads)
9 (run 'hg heads' to see heads, 'hg merge' to merge)
9 (run 'hg heads' to see heads, 'hg merge' to merge)
10 merging test.txt
10 merging test.txt
11 warning: conflicts during merge.
11 warning: conflicts during merge.
12 merging test.txt failed!
12 merging test.txt failed!
13 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
13 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
14 use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
14 use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
15 pulling from ../test-a
15 pulling from ../test-a
16 searching for changes
16 searching for changes
17 adding changesets
17 adding changesets
18 adding manifests
18 adding manifests
19 adding file changes
19 adding file changes
20 added 1 changesets with 1 changes to 1 files (+1 heads)
20 added 1 changesets with 1 changes to 1 files (+1 heads)
21 (run 'hg heads' to see heads, 'hg merge' to merge)
21 (run 'hg heads' to see heads, 'hg merge' to merge)
22 searching for copies back to rev 1
22 searching for copies back to rev 1
23 resolving manifests
23 resolving manifests
24 overwrite None partial False
24 overwrite None partial False
25 ancestor faaea63e63a9 local 451c744aabcc+ remote a070d41e8360
25 ancestor faaea63e63a9 local 451c744aabcc+ remote a070d41e8360
26 test.txt: versions differ -> m
26 test.txt: versions differ -> m
27 preserving test.txt for resolve of test.txt
27 preserving test.txt for resolve of test.txt
28 update: test.txt 1/1 files (100.00%)
28 picked tool 'internal:merge' for test.txt (binary False symlink False)
29 picked tool 'internal:merge' for test.txt (binary False symlink False)
29 merging test.txt
30 merging test.txt
30 my test.txt@451c744aabcc+ other test.txt@a070d41e8360 ancestor test.txt@faaea63e63a9
31 my test.txt@451c744aabcc+ other test.txt@a070d41e8360 ancestor test.txt@faaea63e63a9
31 warning: conflicts during merge.
32 warning: conflicts during merge.
32 merging test.txt failed!
33 merging test.txt failed!
33 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
34 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
34 use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
35 use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
35 one
36 one
36 <<<<<<< local
37 <<<<<<< local
37 two-point-five
38 two-point-five
38 =======
39 =======
39 two-point-one
40 two-point-one
40 >>>>>>> other
41 >>>>>>> other
41 three
42 three
42 rev offset length base linkrev nodeid p1 p2
43 rev offset length base linkrev nodeid p1 p2
43 0 0 7 0 0 01365c4cca56 000000000000 000000000000
44 0 0 7 0 0 01365c4cca56 000000000000 000000000000
44 1 7 9 1 1 7b013192566a 01365c4cca56 000000000000
45 1 7 9 1 1 7b013192566a 01365c4cca56 000000000000
45 2 16 15 2 2 8fe46a3eb557 01365c4cca56 000000000000
46 2 16 15 2 2 8fe46a3eb557 01365c4cca56 000000000000
46 3 31 27 2 3 fc3148072371 7b013192566a 8fe46a3eb557
47 3 31 27 2 3 fc3148072371 7b013192566a 8fe46a3eb557
47 4 58 25 4 4 d40249267ae3 8fe46a3eb557 000000000000
48 4 58 25 4 4 d40249267ae3 8fe46a3eb557 000000000000
48 changeset: 4:a070d41e8360
49 changeset: 4:a070d41e8360
49 tag: tip
50 tag: tip
50 parent: 2:faaea63e63a9
51 parent: 2:faaea63e63a9
51 user: test
52 user: test
52 date: Mon Jan 12 13:46:40 1970 +0000
53 date: Mon Jan 12 13:46:40 1970 +0000
53 summary: two -> two-point-one
54 summary: two -> two-point-one
54
55
55 changeset: 3:451c744aabcc
56 changeset: 3:451c744aabcc
56 parent: 1:e409be6afcc0
57 parent: 1:e409be6afcc0
57 parent: 2:faaea63e63a9
58 parent: 2:faaea63e63a9
58 user: test
59 user: test
59 date: Mon Jan 12 13:46:40 1970 +0000
60 date: Mon Jan 12 13:46:40 1970 +0000
60 summary: Merge 1
61 summary: Merge 1
61
62
62 changeset: 2:faaea63e63a9
63 changeset: 2:faaea63e63a9
63 parent: 0:095c92b91f1a
64 parent: 0:095c92b91f1a
64 user: test
65 user: test
65 date: Mon Jan 12 13:46:40 1970 +0000
66 date: Mon Jan 12 13:46:40 1970 +0000
66 summary: Numbers as words
67 summary: Numbers as words
67
68
68 changeset: 1:e409be6afcc0
69 changeset: 1:e409be6afcc0
69 user: test
70 user: test
70 date: Mon Jan 12 13:46:40 1970 +0000
71 date: Mon Jan 12 13:46:40 1970 +0000
71 summary: 2 -> 2.5
72 summary: 2 -> 2.5
72
73
73 changeset: 0:095c92b91f1a
74 changeset: 0:095c92b91f1a
74 user: test
75 user: test
75 date: Mon Jan 12 13:46:40 1970 +0000
76 date: Mon Jan 12 13:46:40 1970 +0000
76 summary: Initial
77 summary: Initial
77
78
@@ -1,75 +1,82 b''
1 adding a/a
1 adding a/a
2 adding a/b
2 adding a/b
3 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 moving a/a to b/a
4 moving a/a to b/a
5 moving a/b to b/b
5 moving a/b to b/b
6 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
6 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
7 created new head
7 created new head
8 searching for copies back to rev 1
8 searching for copies back to rev 1
9 unmatched files in local:
9 unmatched files in local:
10 a/c
10 a/c
11 a/d
11 a/d
12 unmatched files in other:
12 unmatched files in other:
13 b/a
13 b/a
14 b/b
14 b/b
15 all copies found (* = to merge, ! = divergent):
15 all copies found (* = to merge, ! = divergent):
16 b/a -> a/a
16 b/a -> a/a
17 b/b -> a/b
17 b/b -> a/b
18 checking for directory renames
18 checking for directory renames
19 dir a/ -> b/
19 dir a/ -> b/
20 file a/c -> b/c
20 file a/c -> b/c
21 file a/d -> b/d
21 file a/d -> b/d
22 resolving manifests
22 resolving manifests
23 overwrite None partial False
23 overwrite None partial False
24 ancestor f9b20c0d4c51 local ce36d17b18fb+ remote 55119e611c80
24 ancestor f9b20c0d4c51 local ce36d17b18fb+ remote 55119e611c80
25 a/d: remote renamed directory to b/d -> d
25 a/d: remote renamed directory to b/d -> d
26 a/c: remote renamed directory to b/c -> d
26 a/c: remote renamed directory to b/c -> d
27 a/b: other deleted -> r
27 a/b: other deleted -> r
28 a/a: other deleted -> r
28 a/a: other deleted -> r
29 b/a: remote created -> g
29 b/a: remote created -> g
30 b/b: remote created -> g
30 b/b: remote created -> g
31 update: a/a 1/6 files (16.67%)
31 removing a/a
32 removing a/a
33 update: a/b 2/6 files (33.33%)
32 removing a/b
34 removing a/b
35 update: a/c 3/6 files (50.00%)
33 moving a/c to b/c
36 moving a/c to b/c
37 update: a/d 4/6 files (66.67%)
34 moving a/d to b/d
38 moving a/d to b/d
39 update: b/a 5/6 files (83.33%)
35 getting b/a
40 getting b/a
41 update: b/b 6/6 files (100.00%)
36 getting b/b
42 getting b/b
37 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
43 4 files updated, 0 files merged, 2 files removed, 0 files unresolved
38 (branch merge, don't forget to commit)
44 (branch merge, don't forget to commit)
39 a/* b/a b/b b/c b/d
45 a/* b/a b/b b/c b/d
40 M b/a
46 M b/a
41 M b/b
47 M b/b
42 A b/c
48 A b/c
43 a/c
49 a/c
44 R a/a
50 R a/a
45 R a/b
51 R a/b
46 R a/c
52 R a/c
47 ? b/d
53 ? b/d
48 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
54 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
49 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
55 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
50 searching for copies back to rev 1
56 searching for copies back to rev 1
51 unmatched files in local:
57 unmatched files in local:
52 b/a
58 b/a
53 b/b
59 b/b
54 b/d
60 b/d
55 unmatched files in other:
61 unmatched files in other:
56 a/c
62 a/c
57 all copies found (* = to merge, ! = divergent):
63 all copies found (* = to merge, ! = divergent):
58 b/a -> a/a
64 b/a -> a/a
59 b/b -> a/b
65 b/b -> a/b
60 checking for directory renames
66 checking for directory renames
61 dir a/ -> b/
67 dir a/ -> b/
62 file a/c -> b/c
68 file a/c -> b/c
63 resolving manifests
69 resolving manifests
64 overwrite None partial False
70 overwrite None partial False
65 ancestor f9b20c0d4c51 local 55119e611c80+ remote ce36d17b18fb
71 ancestor f9b20c0d4c51 local 55119e611c80+ remote ce36d17b18fb
66 None: local renamed directory to b/c -> d
72 None: local renamed directory to b/c -> d
73 update:None 1/1 files (100.00%)
67 getting a/c to b/c
74 getting a/c to b/c
68 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
69 (branch merge, don't forget to commit)
76 (branch merge, don't forget to commit)
70 a/* b/a b/b b/c b/d
77 a/* b/a b/b b/c b/d
71 A b/c
78 A b/c
72 a/c
79 a/c
73 ? b/d
80 ? b/d
74 created new head
81 created new head
75 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
82 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88
@@ -1,43 +1,46 b''
1 checkout
1 checkout
2 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
2 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
3 created new head
3 created new head
4 merge
4 merge
5 searching for copies back to rev 1
5 searching for copies back to rev 1
6 unmatched files in local:
6 unmatched files in local:
7 c2
7 c2
8 unmatched files in other:
8 unmatched files in other:
9 b
9 b
10 b2
10 b2
11 all copies found (* = to merge, ! = divergent):
11 all copies found (* = to merge, ! = divergent):
12 c2 -> a2 !
12 c2 -> a2 !
13 b -> a *
13 b -> a *
14 b2 -> a2 !
14 b2 -> a2 !
15 checking for directory renames
15 checking for directory renames
16 a2: divergent renames -> dr
16 a2: divergent renames -> dr
17 resolving manifests
17 resolving manifests
18 overwrite None partial False
18 overwrite None partial False
19 ancestor af1939970a1c local f26ec4fc3fa3+ remote 8e765a822af2
19 ancestor af1939970a1c local f26ec4fc3fa3+ remote 8e765a822af2
20 a: remote moved to b -> m
20 a: remote moved to b -> m
21 b2: remote created -> g
21 b2: remote created -> g
22 preserving a for resolve of b
22 preserving a for resolve of b
23 removing a
23 removing a
24 update: a 1/3 files (33.33%)
24 picked tool 'internal:merge' for b (binary False symlink False)
25 picked tool 'internal:merge' for b (binary False symlink False)
25 merging a and b to b
26 merging a and b to b
26 my b@f26ec4fc3fa3+ other b@8e765a822af2 ancestor a@af1939970a1c
27 my b@f26ec4fc3fa3+ other b@8e765a822af2 ancestor a@af1939970a1c
27 premerge successful
28 premerge successful
29 update: a2 2/3 files (66.67%)
28 warning: detected divergent renames of a2 to:
30 warning: detected divergent renames of a2 to:
29 c2
31 c2
30 b2
32 b2
33 update: b2 3/3 files (100.00%)
31 getting b2
34 getting b2
32 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
35 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
33 (branch merge, don't forget to commit)
36 (branch merge, don't forget to commit)
34 M b
37 M b
35 a
38 a
36 M b2
39 M b2
37 R a
40 R a
38 C c2
41 C c2
39 blahblah
42 blahblah
40 rev offset length base linkrev nodeid p1 p2
43 rev offset length base linkrev nodeid p1 p2
41 0 0 67 0 1 dc51707dfc98 000000000000 000000000000
44 0 0 67 0 1 dc51707dfc98 000000000000 000000000000
42 1 67 72 1 3 b2494a44f0a9 000000000000 dc51707dfc98
45 1 67 72 1 3 b2494a44f0a9 000000000000 dc51707dfc98
43 b renamed from a:dd03b83622e78778b403775d0d074b9ac7387a66
46 b renamed from a:dd03b83622e78778b403775d0d074b9ac7387a66
@@ -1,601 +1,651 b''
1 created new head
1 created new head
2 --------------
2 --------------
3 test L:up a R:nc a b W: - 1 get local a to b
3 test L:up a R:nc a b W: - 1 get local a to b
4 --------------
4 --------------
5 searching for copies back to rev 1
5 searching for copies back to rev 1
6 unmatched files in other:
6 unmatched files in other:
7 b
7 b
8 all copies found (* = to merge, ! = divergent):
8 all copies found (* = to merge, ! = divergent):
9 b -> a *
9 b -> a *
10 checking for directory renames
10 checking for directory renames
11 resolving manifests
11 resolving manifests
12 overwrite None partial False
12 overwrite None partial False
13 ancestor 924404dff337 local e300d1c794ec+ remote 735846fee2d7
13 ancestor 924404dff337 local e300d1c794ec+ remote 735846fee2d7
14 rev: versions differ -> m
14 rev: versions differ -> m
15 a: remote copied to b -> m
15 a: remote copied to b -> m
16 preserving a for resolve of b
16 preserving a for resolve of b
17 preserving rev for resolve of rev
17 preserving rev for resolve of rev
18 update: a 1/2 files (50.00%)
18 picked tool 'python ../merge' for b (binary False symlink False)
19 picked tool 'python ../merge' for b (binary False symlink False)
19 merging a and b to b
20 merging a and b to b
20 my b@e300d1c794ec+ other b@735846fee2d7 ancestor a@924404dff337
21 my b@e300d1c794ec+ other b@735846fee2d7 ancestor a@924404dff337
21 premerge successful
22 premerge successful
23 update: rev 2/2 files (100.00%)
22 picked tool 'python ../merge' for rev (binary False symlink False)
24 picked tool 'python ../merge' for rev (binary False symlink False)
23 merging rev
25 merging rev
24 my rev@e300d1c794ec+ other rev@735846fee2d7 ancestor rev@924404dff337
26 my rev@e300d1c794ec+ other rev@735846fee2d7 ancestor rev@924404dff337
25 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
27 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
26 (branch merge, don't forget to commit)
28 (branch merge, don't forget to commit)
27 --------------
29 --------------
28 M b
30 M b
29 a
31 a
30 C a
32 C a
31 --------------
33 --------------
32
34
33 created new head
35 created new head
34 --------------
36 --------------
35 test L:nc a b R:up a W: - 2 get rem change to a and b
37 test L:nc a b R:up a W: - 2 get rem change to a and b
36 --------------
38 --------------
37 searching for copies back to rev 1
39 searching for copies back to rev 1
38 unmatched files in local:
40 unmatched files in local:
39 b
41 b
40 all copies found (* = to merge, ! = divergent):
42 all copies found (* = to merge, ! = divergent):
41 b -> a *
43 b -> a *
42 checking for directory renames
44 checking for directory renames
43 resolving manifests
45 resolving manifests
44 overwrite None partial False
46 overwrite None partial False
45 ancestor 924404dff337 local ac809aeed39a+ remote f4db7e329e71
47 ancestor 924404dff337 local ac809aeed39a+ remote f4db7e329e71
46 a: remote is newer -> g
48 a: remote is newer -> g
47 b: local copied/moved to a -> m
49 b: local copied/moved to a -> m
48 rev: versions differ -> m
50 rev: versions differ -> m
49 preserving b for resolve of b
51 preserving b for resolve of b
50 preserving rev for resolve of rev
52 preserving rev for resolve of rev
53 update: a 1/3 files (33.33%)
51 getting a
54 getting a
55 update: b 2/3 files (66.67%)
52 picked tool 'python ../merge' for b (binary False symlink False)
56 picked tool 'python ../merge' for b (binary False symlink False)
53 merging b and a to b
57 merging b and a to b
54 my b@ac809aeed39a+ other a@f4db7e329e71 ancestor a@924404dff337
58 my b@ac809aeed39a+ other a@f4db7e329e71 ancestor a@924404dff337
55 premerge successful
59 premerge successful
60 update: rev 3/3 files (100.00%)
56 picked tool 'python ../merge' for rev (binary False symlink False)
61 picked tool 'python ../merge' for rev (binary False symlink False)
57 merging rev
62 merging rev
58 my rev@ac809aeed39a+ other rev@f4db7e329e71 ancestor rev@924404dff337
63 my rev@ac809aeed39a+ other rev@f4db7e329e71 ancestor rev@924404dff337
59 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
64 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
60 (branch merge, don't forget to commit)
65 (branch merge, don't forget to commit)
61 --------------
66 --------------
62 M a
67 M a
63 M b
68 M b
64 a
69 a
65 --------------
70 --------------
66
71
67 created new head
72 created new head
68 --------------
73 --------------
69 test L:up a R:nm a b W: - 3 get local a change to b, remove a
74 test L:up a R:nm a b W: - 3 get local a change to b, remove a
70 --------------
75 --------------
71 searching for copies back to rev 1
76 searching for copies back to rev 1
72 unmatched files in other:
77 unmatched files in other:
73 b
78 b
74 all copies found (* = to merge, ! = divergent):
79 all copies found (* = to merge, ! = divergent):
75 b -> a *
80 b -> a *
76 checking for directory renames
81 checking for directory renames
77 resolving manifests
82 resolving manifests
78 overwrite None partial False
83 overwrite None partial False
79 ancestor 924404dff337 local e300d1c794ec+ remote e03727d2d66b
84 ancestor 924404dff337 local e300d1c794ec+ remote e03727d2d66b
80 rev: versions differ -> m
85 rev: versions differ -> m
81 a: remote moved to b -> m
86 a: remote moved to b -> m
82 preserving a for resolve of b
87 preserving a for resolve of b
83 preserving rev for resolve of rev
88 preserving rev for resolve of rev
84 removing a
89 removing a
90 update: a 1/2 files (50.00%)
85 picked tool 'python ../merge' for b (binary False symlink False)
91 picked tool 'python ../merge' for b (binary False symlink False)
86 merging a and b to b
92 merging a and b to b
87 my b@e300d1c794ec+ other b@e03727d2d66b ancestor a@924404dff337
93 my b@e300d1c794ec+ other b@e03727d2d66b ancestor a@924404dff337
88 premerge successful
94 premerge successful
95 update: rev 2/2 files (100.00%)
89 picked tool 'python ../merge' for rev (binary False symlink False)
96 picked tool 'python ../merge' for rev (binary False symlink False)
90 merging rev
97 merging rev
91 my rev@e300d1c794ec+ other rev@e03727d2d66b ancestor rev@924404dff337
98 my rev@e300d1c794ec+ other rev@e03727d2d66b ancestor rev@924404dff337
92 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
99 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
93 (branch merge, don't forget to commit)
100 (branch merge, don't forget to commit)
94 --------------
101 --------------
95 M b
102 M b
96 a
103 a
97 --------------
104 --------------
98
105
99 created new head
106 created new head
100 --------------
107 --------------
101 test L:nm a b R:up a W: - 4 get remote change to b
108 test L:nm a b R:up a W: - 4 get remote change to b
102 --------------
109 --------------
103 searching for copies back to rev 1
110 searching for copies back to rev 1
104 unmatched files in local:
111 unmatched files in local:
105 b
112 b
106 all copies found (* = to merge, ! = divergent):
113 all copies found (* = to merge, ! = divergent):
107 b -> a *
114 b -> a *
108 checking for directory renames
115 checking for directory renames
109 resolving manifests
116 resolving manifests
110 overwrite None partial False
117 overwrite None partial False
111 ancestor 924404dff337 local ecf3cb2a4219+ remote f4db7e329e71
118 ancestor 924404dff337 local ecf3cb2a4219+ remote f4db7e329e71
112 b: local copied/moved to a -> m
119 b: local copied/moved to a -> m
113 rev: versions differ -> m
120 rev: versions differ -> m
114 preserving b for resolve of b
121 preserving b for resolve of b
115 preserving rev for resolve of rev
122 preserving rev for resolve of rev
123 update: b 1/2 files (50.00%)
116 picked tool 'python ../merge' for b (binary False symlink False)
124 picked tool 'python ../merge' for b (binary False symlink False)
117 merging b and a to b
125 merging b and a to b
118 my b@ecf3cb2a4219+ other a@f4db7e329e71 ancestor a@924404dff337
126 my b@ecf3cb2a4219+ other a@f4db7e329e71 ancestor a@924404dff337
119 premerge successful
127 premerge successful
128 update: rev 2/2 files (100.00%)
120 picked tool 'python ../merge' for rev (binary False symlink False)
129 picked tool 'python ../merge' for rev (binary False symlink False)
121 merging rev
130 merging rev
122 my rev@ecf3cb2a4219+ other rev@f4db7e329e71 ancestor rev@924404dff337
131 my rev@ecf3cb2a4219+ other rev@f4db7e329e71 ancestor rev@924404dff337
123 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
132 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
124 (branch merge, don't forget to commit)
133 (branch merge, don't forget to commit)
125 --------------
134 --------------
126 M b
135 M b
127 a
136 a
128 --------------
137 --------------
129
138
130 created new head
139 created new head
131 --------------
140 --------------
132 test L: R:nc a b W: - 5 get b
141 test L: R:nc a b W: - 5 get b
133 --------------
142 --------------
134 searching for copies back to rev 1
143 searching for copies back to rev 1
135 unmatched files in other:
144 unmatched files in other:
136 b
145 b
137 all copies found (* = to merge, ! = divergent):
146 all copies found (* = to merge, ! = divergent):
138 b -> a
147 b -> a
139 checking for directory renames
148 checking for directory renames
140 resolving manifests
149 resolving manifests
141 overwrite None partial False
150 overwrite None partial False
142 ancestor 924404dff337 local 94b33a1b7f2d+ remote 735846fee2d7
151 ancestor 924404dff337 local 94b33a1b7f2d+ remote 735846fee2d7
143 rev: versions differ -> m
152 rev: versions differ -> m
144 b: remote created -> g
153 b: remote created -> g
145 preserving rev for resolve of rev
154 preserving rev for resolve of rev
155 update: b 1/2 files (50.00%)
146 getting b
156 getting b
157 update: rev 2/2 files (100.00%)
147 picked tool 'python ../merge' for rev (binary False symlink False)
158 picked tool 'python ../merge' for rev (binary False symlink False)
148 merging rev
159 merging rev
149 my rev@94b33a1b7f2d+ other rev@735846fee2d7 ancestor rev@924404dff337
160 my rev@94b33a1b7f2d+ other rev@735846fee2d7 ancestor rev@924404dff337
150 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
161 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
151 (branch merge, don't forget to commit)
162 (branch merge, don't forget to commit)
152 --------------
163 --------------
153 M b
164 M b
154 C a
165 C a
155 --------------
166 --------------
156
167
157 created new head
168 created new head
158 --------------
169 --------------
159 test L:nc a b R: W: - 6 nothing
170 test L:nc a b R: W: - 6 nothing
160 --------------
171 --------------
161 searching for copies back to rev 1
172 searching for copies back to rev 1
162 unmatched files in local:
173 unmatched files in local:
163 b
174 b
164 all copies found (* = to merge, ! = divergent):
175 all copies found (* = to merge, ! = divergent):
165 b -> a
176 b -> a
166 checking for directory renames
177 checking for directory renames
167 resolving manifests
178 resolving manifests
168 overwrite None partial False
179 overwrite None partial False
169 ancestor 924404dff337 local ac809aeed39a+ remote 97c705ade336
180 ancestor 924404dff337 local ac809aeed39a+ remote 97c705ade336
170 rev: versions differ -> m
181 rev: versions differ -> m
171 preserving rev for resolve of rev
182 preserving rev for resolve of rev
183 update: rev 1/1 files (100.00%)
172 picked tool 'python ../merge' for rev (binary False symlink False)
184 picked tool 'python ../merge' for rev (binary False symlink False)
173 merging rev
185 merging rev
174 my rev@ac809aeed39a+ other rev@97c705ade336 ancestor rev@924404dff337
186 my rev@ac809aeed39a+ other rev@97c705ade336 ancestor rev@924404dff337
175 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
187 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
176 (branch merge, don't forget to commit)
188 (branch merge, don't forget to commit)
177 --------------
189 --------------
178 C a
190 C a
179 C b
191 C b
180 --------------
192 --------------
181
193
182 created new head
194 created new head
183 --------------
195 --------------
184 test L: R:nm a b W: - 7 get b
196 test L: R:nm a b W: - 7 get b
185 --------------
197 --------------
186 searching for copies back to rev 1
198 searching for copies back to rev 1
187 unmatched files in other:
199 unmatched files in other:
188 b
200 b
189 all copies found (* = to merge, ! = divergent):
201 all copies found (* = to merge, ! = divergent):
190 b -> a
202 b -> a
191 checking for directory renames
203 checking for directory renames
192 resolving manifests
204 resolving manifests
193 overwrite None partial False
205 overwrite None partial False
194 ancestor 924404dff337 local 94b33a1b7f2d+ remote e03727d2d66b
206 ancestor 924404dff337 local 94b33a1b7f2d+ remote e03727d2d66b
195 a: other deleted -> r
207 a: other deleted -> r
196 rev: versions differ -> m
208 rev: versions differ -> m
197 b: remote created -> g
209 b: remote created -> g
198 preserving rev for resolve of rev
210 preserving rev for resolve of rev
211 update: a 1/3 files (33.33%)
199 removing a
212 removing a
213 update: b 2/3 files (66.67%)
200 getting b
214 getting b
215 update: rev 3/3 files (100.00%)
201 picked tool 'python ../merge' for rev (binary False symlink False)
216 picked tool 'python ../merge' for rev (binary False symlink False)
202 merging rev
217 merging rev
203 my rev@94b33a1b7f2d+ other rev@e03727d2d66b ancestor rev@924404dff337
218 my rev@94b33a1b7f2d+ other rev@e03727d2d66b ancestor rev@924404dff337
204 1 files updated, 1 files merged, 1 files removed, 0 files unresolved
219 1 files updated, 1 files merged, 1 files removed, 0 files unresolved
205 (branch merge, don't forget to commit)
220 (branch merge, don't forget to commit)
206 --------------
221 --------------
207 M b
222 M b
208 --------------
223 --------------
209
224
210 created new head
225 created new head
211 --------------
226 --------------
212 test L:nm a b R: W: - 8 nothing
227 test L:nm a b R: W: - 8 nothing
213 --------------
228 --------------
214 searching for copies back to rev 1
229 searching for copies back to rev 1
215 unmatched files in local:
230 unmatched files in local:
216 b
231 b
217 all copies found (* = to merge, ! = divergent):
232 all copies found (* = to merge, ! = divergent):
218 b -> a
233 b -> a
219 checking for directory renames
234 checking for directory renames
220 resolving manifests
235 resolving manifests
221 overwrite None partial False
236 overwrite None partial False
222 ancestor 924404dff337 local ecf3cb2a4219+ remote 97c705ade336
237 ancestor 924404dff337 local ecf3cb2a4219+ remote 97c705ade336
223 rev: versions differ -> m
238 rev: versions differ -> m
224 preserving rev for resolve of rev
239 preserving rev for resolve of rev
240 update: rev 1/1 files (100.00%)
225 picked tool 'python ../merge' for rev (binary False symlink False)
241 picked tool 'python ../merge' for rev (binary False symlink False)
226 merging rev
242 merging rev
227 my rev@ecf3cb2a4219+ other rev@97c705ade336 ancestor rev@924404dff337
243 my rev@ecf3cb2a4219+ other rev@97c705ade336 ancestor rev@924404dff337
228 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
244 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
229 (branch merge, don't forget to commit)
245 (branch merge, don't forget to commit)
230 --------------
246 --------------
231 C b
247 C b
232 --------------
248 --------------
233
249
234 created new head
250 created new head
235 --------------
251 --------------
236 test L:um a b R:um a b W: - 9 do merge with ancestor in a
252 test L:um a b R:um a b W: - 9 do merge with ancestor in a
237 --------------
253 --------------
238 searching for copies back to rev 1
254 searching for copies back to rev 1
239 resolving manifests
255 resolving manifests
240 overwrite None partial False
256 overwrite None partial False
241 ancestor 924404dff337 local ec03c2ca8642+ remote 79cc6877a3b7
257 ancestor 924404dff337 local ec03c2ca8642+ remote 79cc6877a3b7
242 b: versions differ -> m
258 b: versions differ -> m
243 rev: versions differ -> m
259 rev: versions differ -> m
244 preserving b for resolve of b
260 preserving b for resolve of b
245 preserving rev for resolve of rev
261 preserving rev for resolve of rev
262 update: b 1/2 files (50.00%)
246 picked tool 'python ../merge' for b (binary False symlink False)
263 picked tool 'python ../merge' for b (binary False symlink False)
247 merging b
264 merging b
248 my b@ec03c2ca8642+ other b@79cc6877a3b7 ancestor a@924404dff337
265 my b@ec03c2ca8642+ other b@79cc6877a3b7 ancestor a@924404dff337
266 update: rev 2/2 files (100.00%)
249 picked tool 'python ../merge' for rev (binary False symlink False)
267 picked tool 'python ../merge' for rev (binary False symlink False)
250 merging rev
268 merging rev
251 my rev@ec03c2ca8642+ other rev@79cc6877a3b7 ancestor rev@924404dff337
269 my rev@ec03c2ca8642+ other rev@79cc6877a3b7 ancestor rev@924404dff337
252 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
270 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
253 (branch merge, don't forget to commit)
271 (branch merge, don't forget to commit)
254 --------------
272 --------------
255 M b
273 M b
256 --------------
274 --------------
257
275
258 created new head
276 created new head
259 --------------
277 --------------
260 test L:nm a b R:nm a c W: - 11 get c, keep b
278 test L:nm a b R:nm a c W: - 11 get c, keep b
261 --------------
279 --------------
262 searching for copies back to rev 1
280 searching for copies back to rev 1
263 unmatched files in local:
281 unmatched files in local:
264 b
282 b
265 unmatched files in other:
283 unmatched files in other:
266 c
284 c
267 all copies found (* = to merge, ! = divergent):
285 all copies found (* = to merge, ! = divergent):
268 c -> a !
286 c -> a !
269 b -> a !
287 b -> a !
270 checking for directory renames
288 checking for directory renames
271 a: divergent renames -> dr
289 a: divergent renames -> dr
272 resolving manifests
290 resolving manifests
273 overwrite None partial False
291 overwrite None partial False
274 ancestor 924404dff337 local ecf3cb2a4219+ remote e6abcc1a30c2
292 ancestor 924404dff337 local ecf3cb2a4219+ remote e6abcc1a30c2
275 rev: versions differ -> m
293 rev: versions differ -> m
276 c: remote created -> g
294 c: remote created -> g
277 preserving rev for resolve of rev
295 preserving rev for resolve of rev
296 update: a 1/3 files (33.33%)
278 warning: detected divergent renames of a to:
297 warning: detected divergent renames of a to:
279 b
298 b
280 c
299 c
300 update: c 2/3 files (66.67%)
281 getting c
301 getting c
302 update: rev 3/3 files (100.00%)
282 picked tool 'python ../merge' for rev (binary False symlink False)
303 picked tool 'python ../merge' for rev (binary False symlink False)
283 merging rev
304 merging rev
284 my rev@ecf3cb2a4219+ other rev@e6abcc1a30c2 ancestor rev@924404dff337
305 my rev@ecf3cb2a4219+ other rev@e6abcc1a30c2 ancestor rev@924404dff337
285 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
306 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
286 (branch merge, don't forget to commit)
307 (branch merge, don't forget to commit)
287 --------------
308 --------------
288 M c
309 M c
289 C b
310 C b
290 --------------
311 --------------
291
312
292 created new head
313 created new head
293 --------------
314 --------------
294 test L:nc a b R:up b W: - 12 merge b no ancestor
315 test L:nc a b R:up b W: - 12 merge b no ancestor
295 --------------
316 --------------
296 searching for copies back to rev 1
317 searching for copies back to rev 1
297 resolving manifests
318 resolving manifests
298 overwrite None partial False
319 overwrite None partial False
299 ancestor 924404dff337 local ac809aeed39a+ remote af30c7647fc7
320 ancestor 924404dff337 local ac809aeed39a+ remote af30c7647fc7
300 b: versions differ -> m
321 b: versions differ -> m
301 rev: versions differ -> m
322 rev: versions differ -> m
302 preserving b for resolve of b
323 preserving b for resolve of b
303 preserving rev for resolve of rev
324 preserving rev for resolve of rev
325 update: b 1/2 files (50.00%)
304 picked tool 'python ../merge' for b (binary False symlink False)
326 picked tool 'python ../merge' for b (binary False symlink False)
305 merging b
327 merging b
306 my b@ac809aeed39a+ other b@af30c7647fc7 ancestor b@000000000000
328 my b@ac809aeed39a+ other b@af30c7647fc7 ancestor b@000000000000
329 update: rev 2/2 files (100.00%)
307 picked tool 'python ../merge' for rev (binary False symlink False)
330 picked tool 'python ../merge' for rev (binary False symlink False)
308 merging rev
331 merging rev
309 my rev@ac809aeed39a+ other rev@af30c7647fc7 ancestor rev@924404dff337
332 my rev@ac809aeed39a+ other rev@af30c7647fc7 ancestor rev@924404dff337
310 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
333 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
311 (branch merge, don't forget to commit)
334 (branch merge, don't forget to commit)
312 --------------
335 --------------
313 M b
336 M b
314 C a
337 C a
315 --------------
338 --------------
316
339
317 created new head
340 created new head
318 --------------
341 --------------
319 test L:up b R:nm a b W: - 13 merge b no ancestor
342 test L:up b R:nm a b W: - 13 merge b no ancestor
320 --------------
343 --------------
321 searching for copies back to rev 1
344 searching for copies back to rev 1
322 resolving manifests
345 resolving manifests
323 overwrite None partial False
346 overwrite None partial False
324 ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
347 ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
325 a: other deleted -> r
348 a: other deleted -> r
326 b: versions differ -> m
349 b: versions differ -> m
327 rev: versions differ -> m
350 rev: versions differ -> m
328 preserving b for resolve of b
351 preserving b for resolve of b
329 preserving rev for resolve of rev
352 preserving rev for resolve of rev
353 update: a 1/3 files (33.33%)
330 removing a
354 removing a
355 update: b 2/3 files (66.67%)
331 picked tool 'python ../merge' for b (binary False symlink False)
356 picked tool 'python ../merge' for b (binary False symlink False)
332 merging b
357 merging b
333 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
358 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
359 update: rev 3/3 files (100.00%)
334 picked tool 'python ../merge' for rev (binary False symlink False)
360 picked tool 'python ../merge' for rev (binary False symlink False)
335 merging rev
361 merging rev
336 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
362 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
337 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
363 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
338 (branch merge, don't forget to commit)
364 (branch merge, don't forget to commit)
339 --------------
365 --------------
340 M b
366 M b
341 --------------
367 --------------
342
368
343 created new head
369 created new head
344 --------------
370 --------------
345 test L:nc a b R:up a b W: - 14 merge b no ancestor
371 test L:nc a b R:up a b W: - 14 merge b no ancestor
346 --------------
372 --------------
347 searching for copies back to rev 1
373 searching for copies back to rev 1
348 resolving manifests
374 resolving manifests
349 overwrite None partial False
375 overwrite None partial False
350 ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
376 ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
351 a: remote is newer -> g
377 a: remote is newer -> g
352 b: versions differ -> m
378 b: versions differ -> m
353 rev: versions differ -> m
379 rev: versions differ -> m
354 preserving b for resolve of b
380 preserving b for resolve of b
355 preserving rev for resolve of rev
381 preserving rev for resolve of rev
382 update: a 1/3 files (33.33%)
356 getting a
383 getting a
384 update: b 2/3 files (66.67%)
357 picked tool 'python ../merge' for b (binary False symlink False)
385 picked tool 'python ../merge' for b (binary False symlink False)
358 merging b
386 merging b
359 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
387 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
388 update: rev 3/3 files (100.00%)
360 picked tool 'python ../merge' for rev (binary False symlink False)
389 picked tool 'python ../merge' for rev (binary False symlink False)
361 merging rev
390 merging rev
362 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
391 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
363 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
392 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
364 (branch merge, don't forget to commit)
393 (branch merge, don't forget to commit)
365 --------------
394 --------------
366 M a
395 M a
367 M b
396 M b
368 --------------
397 --------------
369
398
370 created new head
399 created new head
371 --------------
400 --------------
372 test L:up b R:nm a b W: - 15 merge b no ancestor, remove a
401 test L:up b R:nm a b W: - 15 merge b no ancestor, remove a
373 --------------
402 --------------
374 searching for copies back to rev 1
403 searching for copies back to rev 1
375 resolving manifests
404 resolving manifests
376 overwrite None partial False
405 overwrite None partial False
377 ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
406 ancestor 924404dff337 local 59318016310c+ remote e03727d2d66b
378 a: other deleted -> r
407 a: other deleted -> r
379 b: versions differ -> m
408 b: versions differ -> m
380 rev: versions differ -> m
409 rev: versions differ -> m
381 preserving b for resolve of b
410 preserving b for resolve of b
382 preserving rev for resolve of rev
411 preserving rev for resolve of rev
412 update: a 1/3 files (33.33%)
383 removing a
413 removing a
414 update: b 2/3 files (66.67%)
384 picked tool 'python ../merge' for b (binary False symlink False)
415 picked tool 'python ../merge' for b (binary False symlink False)
385 merging b
416 merging b
386 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
417 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
418 update: rev 3/3 files (100.00%)
387 picked tool 'python ../merge' for rev (binary False symlink False)
419 picked tool 'python ../merge' for rev (binary False symlink False)
388 merging rev
420 merging rev
389 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
421 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
390 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
422 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
391 (branch merge, don't forget to commit)
423 (branch merge, don't forget to commit)
392 --------------
424 --------------
393 M b
425 M b
394 --------------
426 --------------
395
427
396 created new head
428 created new head
397 --------------
429 --------------
398 test L:nc a b R:up a b W: - 16 get a, merge b no ancestor
430 test L:nc a b R:up a b W: - 16 get a, merge b no ancestor
399 --------------
431 --------------
400 searching for copies back to rev 1
432 searching for copies back to rev 1
401 resolving manifests
433 resolving manifests
402 overwrite None partial False
434 overwrite None partial False
403 ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
435 ancestor 924404dff337 local ac809aeed39a+ remote 8dbce441892a
404 a: remote is newer -> g
436 a: remote is newer -> g
405 b: versions differ -> m
437 b: versions differ -> m
406 rev: versions differ -> m
438 rev: versions differ -> m
407 preserving b for resolve of b
439 preserving b for resolve of b
408 preserving rev for resolve of rev
440 preserving rev for resolve of rev
441 update: a 1/3 files (33.33%)
409 getting a
442 getting a
443 update: b 2/3 files (66.67%)
410 picked tool 'python ../merge' for b (binary False symlink False)
444 picked tool 'python ../merge' for b (binary False symlink False)
411 merging b
445 merging b
412 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
446 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
447 update: rev 3/3 files (100.00%)
413 picked tool 'python ../merge' for rev (binary False symlink False)
448 picked tool 'python ../merge' for rev (binary False symlink False)
414 merging rev
449 merging rev
415 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
450 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
416 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
451 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
417 (branch merge, don't forget to commit)
452 (branch merge, don't forget to commit)
418 --------------
453 --------------
419 M a
454 M a
420 M b
455 M b
421 --------------
456 --------------
422
457
423 created new head
458 created new head
424 --------------
459 --------------
425 test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor
460 test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor
426 --------------
461 --------------
427 searching for copies back to rev 1
462 searching for copies back to rev 1
428 resolving manifests
463 resolving manifests
429 overwrite None partial False
464 overwrite None partial False
430 ancestor 924404dff337 local 0b76e65c8289+ remote 735846fee2d7
465 ancestor 924404dff337 local 0b76e65c8289+ remote 735846fee2d7
431 b: versions differ -> m
466 b: versions differ -> m
432 rev: versions differ -> m
467 rev: versions differ -> m
433 preserving b for resolve of b
468 preserving b for resolve of b
434 preserving rev for resolve of rev
469 preserving rev for resolve of rev
470 update: b 1/2 files (50.00%)
435 picked tool 'python ../merge' for b (binary False symlink False)
471 picked tool 'python ../merge' for b (binary False symlink False)
436 merging b
472 merging b
437 my b@0b76e65c8289+ other b@735846fee2d7 ancestor b@000000000000
473 my b@0b76e65c8289+ other b@735846fee2d7 ancestor b@000000000000
474 update: rev 2/2 files (100.00%)
438 picked tool 'python ../merge' for rev (binary False symlink False)
475 picked tool 'python ../merge' for rev (binary False symlink False)
439 merging rev
476 merging rev
440 my rev@0b76e65c8289+ other rev@735846fee2d7 ancestor rev@924404dff337
477 my rev@0b76e65c8289+ other rev@735846fee2d7 ancestor rev@924404dff337
441 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
478 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
442 (branch merge, don't forget to commit)
479 (branch merge, don't forget to commit)
443 --------------
480 --------------
444 M b
481 M b
445 C a
482 C a
446 --------------
483 --------------
447
484
448 created new head
485 created new head
449 --------------
486 --------------
450 test L:nm a b R:up a b W: - 18 merge b no ancestor
487 test L:nm a b R:up a b W: - 18 merge b no ancestor
451 --------------
488 --------------
452 searching for copies back to rev 1
489 searching for copies back to rev 1
453 resolving manifests
490 resolving manifests
454 overwrite None partial False
491 overwrite None partial False
455 ancestor 924404dff337 local ecf3cb2a4219+ remote 8dbce441892a
492 ancestor 924404dff337 local ecf3cb2a4219+ remote 8dbce441892a
456 b: versions differ -> m
493 b: versions differ -> m
457 rev: versions differ -> m
494 rev: versions differ -> m
458 remote changed a which local deleted
495 remote changed a which local deleted
459 use (c)hanged version or leave (d)eleted? c
496 use (c)hanged version or leave (d)eleted? c
460 a: prompt recreating -> g
497 a: prompt recreating -> g
461 preserving b for resolve of b
498 preserving b for resolve of b
462 preserving rev for resolve of rev
499 preserving rev for resolve of rev
500 update: a 1/3 files (33.33%)
463 getting a
501 getting a
502 update: b 2/3 files (66.67%)
464 picked tool 'python ../merge' for b (binary False symlink False)
503 picked tool 'python ../merge' for b (binary False symlink False)
465 merging b
504 merging b
466 my b@ecf3cb2a4219+ other b@8dbce441892a ancestor b@000000000000
505 my b@ecf3cb2a4219+ other b@8dbce441892a ancestor b@000000000000
506 update: rev 3/3 files (100.00%)
467 picked tool 'python ../merge' for rev (binary False symlink False)
507 picked tool 'python ../merge' for rev (binary False symlink False)
468 merging rev
508 merging rev
469 my rev@ecf3cb2a4219+ other rev@8dbce441892a ancestor rev@924404dff337
509 my rev@ecf3cb2a4219+ other rev@8dbce441892a ancestor rev@924404dff337
470 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
510 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
471 (branch merge, don't forget to commit)
511 (branch merge, don't forget to commit)
472 --------------
512 --------------
473 M a
513 M a
474 M b
514 M b
475 --------------
515 --------------
476
516
477 created new head
517 created new head
478 --------------
518 --------------
479 test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a
519 test L:up a b R:nm a b W: - 19 merge b no ancestor, prompt remove a
480 --------------
520 --------------
481 searching for copies back to rev 1
521 searching for copies back to rev 1
482 resolving manifests
522 resolving manifests
483 overwrite None partial False
523 overwrite None partial False
484 ancestor 924404dff337 local 0b76e65c8289+ remote e03727d2d66b
524 ancestor 924404dff337 local 0b76e65c8289+ remote e03727d2d66b
485 local changed a which remote deleted
525 local changed a which remote deleted
486 use (c)hanged version or (d)elete? c
526 use (c)hanged version or (d)elete? c
487 a: prompt keep -> a
527 a: prompt keep -> a
488 b: versions differ -> m
528 b: versions differ -> m
489 rev: versions differ -> m
529 rev: versions differ -> m
490 preserving b for resolve of b
530 preserving b for resolve of b
491 preserving rev for resolve of rev
531 preserving rev for resolve of rev
532 update: a 1/3 files (33.33%)
533 update: b 2/3 files (66.67%)
492 picked tool 'python ../merge' for b (binary False symlink False)
534 picked tool 'python ../merge' for b (binary False symlink False)
493 merging b
535 merging b
494 my b@0b76e65c8289+ other b@e03727d2d66b ancestor b@000000000000
536 my b@0b76e65c8289+ other b@e03727d2d66b ancestor b@000000000000
537 update: rev 3/3 files (100.00%)
495 picked tool 'python ../merge' for rev (binary False symlink False)
538 picked tool 'python ../merge' for rev (binary False symlink False)
496 merging rev
539 merging rev
497 my rev@0b76e65c8289+ other rev@e03727d2d66b ancestor rev@924404dff337
540 my rev@0b76e65c8289+ other rev@e03727d2d66b ancestor rev@924404dff337
498 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
541 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
499 (branch merge, don't forget to commit)
542 (branch merge, don't forget to commit)
500 --------------
543 --------------
501 M b
544 M b
502 C a
545 C a
503 --------------
546 --------------
504
547
505 created new head
548 created new head
506 --------------
549 --------------
507 test L:up a R:um a b W: - 20 merge a and b to b, remove a
550 test L:up a R:um a b W: - 20 merge a and b to b, remove a
508 --------------
551 --------------
509 searching for copies back to rev 1
552 searching for copies back to rev 1
510 unmatched files in other:
553 unmatched files in other:
511 b
554 b
512 all copies found (* = to merge, ! = divergent):
555 all copies found (* = to merge, ! = divergent):
513 b -> a *
556 b -> a *
514 checking for directory renames
557 checking for directory renames
515 resolving manifests
558 resolving manifests
516 overwrite None partial False
559 overwrite None partial False
517 ancestor 924404dff337 local e300d1c794ec+ remote 79cc6877a3b7
560 ancestor 924404dff337 local e300d1c794ec+ remote 79cc6877a3b7
518 rev: versions differ -> m
561 rev: versions differ -> m
519 a: remote moved to b -> m
562 a: remote moved to b -> m
520 preserving a for resolve of b
563 preserving a for resolve of b
521 preserving rev for resolve of rev
564 preserving rev for resolve of rev
522 removing a
565 removing a
566 update: a 1/2 files (50.00%)
523 picked tool 'python ../merge' for b (binary False symlink False)
567 picked tool 'python ../merge' for b (binary False symlink False)
524 merging a and b to b
568 merging a and b to b
525 my b@e300d1c794ec+ other b@79cc6877a3b7 ancestor a@924404dff337
569 my b@e300d1c794ec+ other b@79cc6877a3b7 ancestor a@924404dff337
570 update: rev 2/2 files (100.00%)
526 picked tool 'python ../merge' for rev (binary False symlink False)
571 picked tool 'python ../merge' for rev (binary False symlink False)
527 merging rev
572 merging rev
528 my rev@e300d1c794ec+ other rev@79cc6877a3b7 ancestor rev@924404dff337
573 my rev@e300d1c794ec+ other rev@79cc6877a3b7 ancestor rev@924404dff337
529 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
574 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
530 (branch merge, don't forget to commit)
575 (branch merge, don't forget to commit)
531 --------------
576 --------------
532 M b
577 M b
533 a
578 a
534 --------------
579 --------------
535
580
536 created new head
581 created new head
537 --------------
582 --------------
538 test L:um a b R:up a W: - 21 merge a and b to b
583 test L:um a b R:up a W: - 21 merge a and b to b
539 --------------
584 --------------
540 searching for copies back to rev 1
585 searching for copies back to rev 1
541 unmatched files in local:
586 unmatched files in local:
542 b
587 b
543 all copies found (* = to merge, ! = divergent):
588 all copies found (* = to merge, ! = divergent):
544 b -> a *
589 b -> a *
545 checking for directory renames
590 checking for directory renames
546 resolving manifests
591 resolving manifests
547 overwrite None partial False
592 overwrite None partial False
548 ancestor 924404dff337 local ec03c2ca8642+ remote f4db7e329e71
593 ancestor 924404dff337 local ec03c2ca8642+ remote f4db7e329e71
549 b: local copied/moved to a -> m
594 b: local copied/moved to a -> m
550 rev: versions differ -> m
595 rev: versions differ -> m
551 preserving b for resolve of b
596 preserving b for resolve of b
552 preserving rev for resolve of rev
597 preserving rev for resolve of rev
598 update: b 1/2 files (50.00%)
553 picked tool 'python ../merge' for b (binary False symlink False)
599 picked tool 'python ../merge' for b (binary False symlink False)
554 merging b and a to b
600 merging b and a to b
555 my b@ec03c2ca8642+ other a@f4db7e329e71 ancestor a@924404dff337
601 my b@ec03c2ca8642+ other a@f4db7e329e71 ancestor a@924404dff337
602 update: rev 2/2 files (100.00%)
556 picked tool 'python ../merge' for rev (binary False symlink False)
603 picked tool 'python ../merge' for rev (binary False symlink False)
557 merging rev
604 merging rev
558 my rev@ec03c2ca8642+ other rev@f4db7e329e71 ancestor rev@924404dff337
605 my rev@ec03c2ca8642+ other rev@f4db7e329e71 ancestor rev@924404dff337
559 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
606 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
560 (branch merge, don't forget to commit)
607 (branch merge, don't forget to commit)
561 --------------
608 --------------
562 M b
609 M b
563 a
610 a
564 --------------
611 --------------
565
612
566 created new head
613 created new head
567 --------------
614 --------------
568 test L:nm a b R:up a c W: - 23 get c, keep b
615 test L:nm a b R:up a c W: - 23 get c, keep b
569 --------------
616 --------------
570 searching for copies back to rev 1
617 searching for copies back to rev 1
571 unmatched files in local:
618 unmatched files in local:
572 b
619 b
573 unmatched files in other:
620 unmatched files in other:
574 c
621 c
575 all copies found (* = to merge, ! = divergent):
622 all copies found (* = to merge, ! = divergent):
576 b -> a *
623 b -> a *
577 checking for directory renames
624 checking for directory renames
578 resolving manifests
625 resolving manifests
579 overwrite None partial False
626 overwrite None partial False
580 ancestor 924404dff337 local ecf3cb2a4219+ remote 2b958612230f
627 ancestor 924404dff337 local ecf3cb2a4219+ remote 2b958612230f
581 b: local copied/moved to a -> m
628 b: local copied/moved to a -> m
582 rev: versions differ -> m
629 rev: versions differ -> m
583 c: remote created -> g
630 c: remote created -> g
584 preserving b for resolve of b
631 preserving b for resolve of b
585 preserving rev for resolve of rev
632 preserving rev for resolve of rev
633 update: b 1/3 files (33.33%)
586 picked tool 'python ../merge' for b (binary False symlink False)
634 picked tool 'python ../merge' for b (binary False symlink False)
587 merging b and a to b
635 merging b and a to b
588 my b@ecf3cb2a4219+ other a@2b958612230f ancestor a@924404dff337
636 my b@ecf3cb2a4219+ other a@2b958612230f ancestor a@924404dff337
589 premerge successful
637 premerge successful
638 update: c 2/3 files (66.67%)
590 getting c
639 getting c
640 update: rev 3/3 files (100.00%)
591 picked tool 'python ../merge' for rev (binary False symlink False)
641 picked tool 'python ../merge' for rev (binary False symlink False)
592 merging rev
642 merging rev
593 my rev@ecf3cb2a4219+ other rev@2b958612230f ancestor rev@924404dff337
643 my rev@ecf3cb2a4219+ other rev@2b958612230f ancestor rev@924404dff337
594 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
644 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
595 (branch merge, don't forget to commit)
645 (branch merge, don't forget to commit)
596 --------------
646 --------------
597 M b
647 M b
598 a
648 a
599 M c
649 M c
600 --------------
650 --------------
601
651
@@ -1,257 +1,261 b''
1 % first revision, no sub
1 % first revision, no sub
2 adding a
2 adding a
3 % add first sub
3 % add first sub
4 adding a
4 adding a
5 committing subrepository s
5 committing subrepository s
6 % add sub sub
6 % add sub sub
7 committing subrepository s
7 committing subrepository s
8 committing subrepository ss
8 committing subrepository ss
9 % bump sub rev
9 % bump sub rev
10 committing subrepository s
10 committing subrepository s
11 % leave sub dirty
11 % leave sub dirty
12 committing subrepository s
12 committing subrepository s
13 changeset: 3:1c833a7a9e3a
13 changeset: 3:1c833a7a9e3a
14 tag: tip
14 tag: tip
15 user: test
15 user: test
16 date: Thu Jan 01 00:00:00 1970 +0000
16 date: Thu Jan 01 00:00:00 1970 +0000
17 summary: 4
17 summary: 4
18
18
19 % check caching
19 % check caching
20 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
20 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
21 % restore
21 % restore
22 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
22 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
23 path s
23 path s
24 source s
24 source s
25 revision 1c833a7a9e3a4445c711aaf0f012379cd0d4034e
25 revision 1c833a7a9e3a4445c711aaf0f012379cd0d4034e
26 % new branch for merge tests
26 % new branch for merge tests
27 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
27 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
28 adding t/t
28 adding t/t
29 % 5
29 % 5
30 committing subrepository t
30 committing subrepository t
31 created new head
31 created new head
32 % 6
32 % 6
33 committing subrepository t
33 committing subrepository t
34 path s
34 path s
35 source s
35 source s
36 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
36 revision e4ece1bf43360ddc8f6a96432201a37b7cd27ae4
37 path t
37 path t
38 source t
38 source t
39 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
39 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
40 % 7
40 % 7
41 committing subrepository t
41 committing subrepository t
42 % 8
42 % 8
43 % merge tests
43 % merge tests
44 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
44 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
45 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
45 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 (branch merge, don't forget to commit)
46 (branch merge, don't forget to commit)
47 path s
47 path s
48 source s
48 source s
49 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
49 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
50 path t
50 path t
51 source t
51 source t
52 revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
52 revision 60ca1237c19474e7a3978b0dc1ca4e6f36d51382
53 created new head
53 created new head
54 searching for copies back to rev 2
54 searching for copies back to rev 2
55 resolving manifests
55 resolving manifests
56 overwrite None partial False
56 overwrite None partial False
57 ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4
57 ancestor 1f14a2e2d3ec local f0d2028bf86d+ remote 1831e14459c4
58 .hgsubstate: versions differ -> m
58 .hgsubstate: versions differ -> m
59 update: .hgsubstate 1/1 files (100.00%)
59 subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
60 subrepo merge f0d2028bf86d+ 1831e14459c4 1f14a2e2d3ec
60 subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
61 subrepo t: other changed, get t:6747d179aa9a688023c4b0cad32e4c92bb7f34ad:hg
61 getting subrepo t
62 getting subrepo t
62 resolving manifests
63 resolving manifests
63 overwrite True partial False
64 overwrite True partial False
64 ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a
65 ancestor 60ca1237c194+ local 60ca1237c194+ remote 6747d179aa9a
65 t: remote is newer -> g
66 t: remote is newer -> g
67 update: t 1/1 files (100.00%)
66 getting t
68 getting t
67 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
69 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
68 (branch merge, don't forget to commit)
70 (branch merge, don't forget to commit)
69 path s
71 path s
70 source s
72 source s
71 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
73 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
72 path t
74 path t
73 source t
75 source t
74 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
76 revision 6747d179aa9a688023c4b0cad32e4c92bb7f34ad
75 committing subrepository t
77 committing subrepository t
76 searching for copies back to rev 2
78 searching for copies back to rev 2
77 resolving manifests
79 resolving manifests
78 overwrite None partial False
80 overwrite None partial False
79 ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf
81 ancestor 1831e14459c4 local e45c8b14af55+ remote f94576341bcf
80 .hgsubstate: versions differ -> m
82 .hgsubstate: versions differ -> m
83 update: .hgsubstate 1/1 files (100.00%)
81 subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
84 subrepo merge e45c8b14af55+ f94576341bcf 1831e14459c4
82 subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
85 subrepo t: both sides changed, merge with t:7af322bc1198a32402fe903e0b7ebcfc5c9bf8f4:hg
83 merging subrepo t
86 merging subrepo t
84 searching for copies back to rev 2
87 searching for copies back to rev 2
85 resolving manifests
88 resolving manifests
86 overwrite None partial False
89 overwrite None partial False
87 ancestor 6747d179aa9a local 20a0db6fbf6c+ remote 7af322bc1198
90 ancestor 6747d179aa9a local 20a0db6fbf6c+ remote 7af322bc1198
88 t: versions differ -> m
91 t: versions differ -> m
89 preserving t for resolve of t
92 preserving t for resolve of t
93 update: t 1/1 files (100.00%)
90 picked tool 'internal:merge' for t (binary False symlink False)
94 picked tool 'internal:merge' for t (binary False symlink False)
91 merging t
95 merging t
92 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
96 my t@20a0db6fbf6c+ other t@7af322bc1198 ancestor t@6747d179aa9a
93 warning: conflicts during merge.
97 warning: conflicts during merge.
94 merging t failed!
98 merging t failed!
95 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
99 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
96 use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
100 use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
97 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
101 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
98 (branch merge, don't forget to commit)
102 (branch merge, don't forget to commit)
99 % should conflict
103 % should conflict
100 <<<<<<< local
104 <<<<<<< local
101 conflict
105 conflict
102 =======
106 =======
103 t3
107 t3
104 >>>>>>> other
108 >>>>>>> other
105 % clone
109 % clone
106 updating to branch default
110 updating to branch default
107 pulling subrepo s
111 pulling subrepo s
108 requesting all changes
112 requesting all changes
109 adding changesets
113 adding changesets
110 adding manifests
114 adding manifests
111 adding file changes
115 adding file changes
112 added 4 changesets with 5 changes to 3 files
116 added 4 changesets with 5 changes to 3 files
113 pulling subrepo ss
117 pulling subrepo ss
114 requesting all changes
118 requesting all changes
115 adding changesets
119 adding changesets
116 adding manifests
120 adding manifests
117 adding file changes
121 adding file changes
118 added 1 changesets with 1 changes to 1 files
122 added 1 changesets with 1 changes to 1 files
119 pulling subrepo t
123 pulling subrepo t
120 requesting all changes
124 requesting all changes
121 adding changesets
125 adding changesets
122 adding manifests
126 adding manifests
123 adding file changes
127 adding file changes
124 added 4 changesets with 4 changes to 1 files (+1 heads)
128 added 4 changesets with 4 changes to 1 files (+1 heads)
125 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
129 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
126 path s
130 path s
127 source s
131 source s
128 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
132 revision fc627a69481fcbe5f1135069e8a3881c023e4cf5
129 path t
133 path t
130 source t
134 source t
131 revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
135 revision 20a0db6fbf6c3d2836e6519a642ae929bfc67c0e
132 % push
136 % push
133 committing subrepository t
137 committing subrepository t
134 pushing ...sub/t
138 pushing ...sub/t
135 pushing ...subrepo ss
139 pushing ...subrepo ss
136 searching for changes
140 searching for changes
137 no changes found
141 no changes found
138 pushing ...subrepo s
142 pushing ...subrepo s
139 searching for changes
143 searching for changes
140 no changes found
144 no changes found
141 pushing ...subrepo t
145 pushing ...subrepo t
142 searching for changes
146 searching for changes
143 adding changesets
147 adding changesets
144 adding manifests
148 adding manifests
145 adding file changes
149 adding file changes
146 added 1 changesets with 1 changes to 1 files
150 added 1 changesets with 1 changes to 1 files
147 searching for changes
151 searching for changes
148 adding changesets
152 adding changesets
149 adding manifests
153 adding manifests
150 adding file changes
154 adding file changes
151 added 1 changesets with 1 changes to 1 files
155 added 1 changesets with 1 changes to 1 files
152 % push -f
156 % push -f
153 committing subrepository s
157 committing subrepository s
154 abort: push creates new remote heads on branch 'default'!
158 abort: push creates new remote heads on branch 'default'!
155 pushing ...sub/t
159 pushing ...sub/t
156 pushing ...subrepo ss
160 pushing ...subrepo ss
157 searching for changes
161 searching for changes
158 no changes found
162 no changes found
159 pushing ...subrepo s
163 pushing ...subrepo s
160 searching for changes
164 searching for changes
161 (did you forget to merge? use push -f to force)
165 (did you forget to merge? use push -f to force)
162 pushing ...subrepo t
166 pushing ...subrepo t
163 searching for changes
167 searching for changes
164 no changes found
168 no changes found
165 searching for changes
169 searching for changes
166 adding changesets
170 adding changesets
167 adding manifests
171 adding manifests
168 adding file changes
172 adding file changes
169 added 1 changesets with 1 changes to 1 files
173 added 1 changesets with 1 changes to 1 files
170 pushing ...sub/t
174 pushing ...sub/t
171 pushing ...subrepo ss
175 pushing ...subrepo ss
172 searching for changes
176 searching for changes
173 no changes found
177 no changes found
174 pushing ...subrepo s
178 pushing ...subrepo s
175 searching for changes
179 searching for changes
176 adding changesets
180 adding changesets
177 adding manifests
181 adding manifests
178 adding file changes
182 adding file changes
179 added 1 changesets with 1 changes to 1 files (+1 heads)
183 added 1 changesets with 1 changes to 1 files (+1 heads)
180 pushing ...subrepo t
184 pushing ...subrepo t
181 searching for changes
185 searching for changes
182 no changes found
186 no changes found
183 searching for changes
187 searching for changes
184 no changes found
188 no changes found
185 % update
189 % update
186 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
187 committing subrepository t
191 committing subrepository t
188 % pull
192 % pull
189 pulling ...sub/t
193 pulling ...sub/t
190 searching for changes
194 searching for changes
191 adding changesets
195 adding changesets
192 adding manifests
196 adding manifests
193 adding file changes
197 adding file changes
194 added 1 changesets with 1 changes to 1 files
198 added 1 changesets with 1 changes to 1 files
195 (run 'hg update' to get a working copy)
199 (run 'hg update' to get a working copy)
196 pulling subrepo t
200 pulling subrepo t
197 searching for changes
201 searching for changes
198 adding changesets
202 adding changesets
199 adding manifests
203 adding manifests
200 adding file changes
204 adding file changes
201 added 1 changesets with 1 changes to 1 files
205 added 1 changesets with 1 changes to 1 files
202 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
206 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
203 blah
207 blah
204 % bogus subrepo path aborts
208 % bogus subrepo path aborts
205 abort: missing ] in subrepo source
209 abort: missing ] in subrepo source
206 % issue 1986
210 % issue 1986
207 adding a
211 adding a
208 marked working directory as branch br
212 marked working directory as branch br
209 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
213 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
210 adding b
214 adding b
211 created new head
215 created new head
212 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
216 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
213 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
217 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
214 (branch merge, don't forget to commit)
218 (branch merge, don't forget to commit)
215 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
219 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
216 adding c
220 adding c
217 created new head
221 created new head
218 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
222 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
219 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
220 (branch merge, don't forget to commit)
224 (branch merge, don't forget to commit)
221 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
225 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
222 adding .hgsub
226 adding .hgsub
223 committing subrepository s
227 committing subrepository s
224 marked working directory as branch br
228 marked working directory as branch br
225 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
226 adding b
230 adding b
227 committing subrepository s
231 committing subrepository s
228 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
232 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
229 adding c
233 adding c
230 created new head
234 created new head
231 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
235 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
232 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
236 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
233 (branch merge, don't forget to commit)
237 (branch merge, don't forget to commit)
234 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
238 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
235 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
239 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
236 adding d
240 adding d
237 committing subrepository s
241 committing subrepository s
238 created new head
242 created new head
239 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
243 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
240 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
244 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
241 adding e
245 adding e
242 committing subrepository s
246 committing subrepository s
243 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
247 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
244 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
248 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
245 (branch merge, don't forget to commit)
249 (branch merge, don't forget to commit)
246 % test repository cloning
250 % test repository cloning
247 adding nested_absolute/foo
251 adding nested_absolute/foo
248 adding nested_relative/foo2
252 adding nested_relative/foo2
249 adding main/.hgsub
253 adding main/.hgsub
250 committing subrepository nested_relative
254 committing subrepository nested_relative
251 committing subrepository nested_absolute
255 committing subrepository nested_absolute
252 updating to branch default
256 updating to branch default
253 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
257 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
254 [paths]
258 [paths]
255 default = /tmp/mercurial/main/nested_absolute
259 default = /tmp/mercurial/main/nested_absolute
256 [paths]
260 [paths]
257 default = /tmp/mercurial/main/nested_relative
261 default = /tmp/mercurial/main/nested_relative
@@ -1,159 +1,167 b''
1 adding a
1 adding a
2 updating to branch default
2 updating to branch default
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
4 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
5 diff -r 33aaa84a386b a
5 diff -r 33aaa84a386b a
6 --- a/a
6 --- a/a
7 +++ b/a
7 +++ b/a
8 @@ -1,1 +1,1 @@
8 @@ -1,1 +1,1 @@
9 -a
9 -a
10 +abc
10 +abc
11 adding b
11 adding b
12 M a
12 M a
13 changeset: 0:33aaa84a386b
13 changeset: 0:33aaa84a386b
14 user: test
14 user: test
15 date: Mon Jan 12 13:46:40 1970 +0000
15 date: Mon Jan 12 13:46:40 1970 +0000
16 summary: 1
16 summary: 1
17
17
18 searching for copies back to rev 1
18 searching for copies back to rev 1
19 unmatched files in other:
19 unmatched files in other:
20 b
20 b
21 resolving manifests
21 resolving manifests
22 overwrite False partial False
22 overwrite False partial False
23 ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
23 ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
24 a: versions differ -> m
24 a: versions differ -> m
25 b: remote created -> g
25 b: remote created -> g
26 preserving a for resolve of a
26 preserving a for resolve of a
27 update: a 1/2 files (50.00%)
27 picked tool 'true' for a (binary False symlink False)
28 picked tool 'true' for a (binary False symlink False)
28 merging a
29 merging a
29 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
30 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
31 update: b 2/2 files (100.00%)
30 getting b
32 getting b
31 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
33 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
32 changeset: 1:802f095af299
34 changeset: 1:802f095af299
33 tag: tip
35 tag: tip
34 user: test
36 user: test
35 date: Mon Jan 12 13:46:40 1970 +0000
37 date: Mon Jan 12 13:46:40 1970 +0000
36 summary: 2
38 summary: 2
37
39
38 resolving manifests
40 resolving manifests
39 overwrite False partial False
41 overwrite False partial False
40 ancestor 802f095af299 local 802f095af299+ remote 33aaa84a386b
42 ancestor 802f095af299 local 802f095af299+ remote 33aaa84a386b
41 a: versions differ -> m
43 a: versions differ -> m
42 b: other deleted -> r
44 b: other deleted -> r
43 preserving a for resolve of a
45 preserving a for resolve of a
46 update: b 1/2 files (50.00%)
44 removing b
47 removing b
48 update: a 2/2 files (100.00%)
45 picked tool 'true' for a (binary False symlink False)
49 picked tool 'true' for a (binary False symlink False)
46 merging a
50 merging a
47 my a@802f095af299+ other a@33aaa84a386b ancestor a@33aaa84a386b
51 my a@802f095af299+ other a@33aaa84a386b ancestor a@33aaa84a386b
48 premerge successful
52 premerge successful
49 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
53 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
50 changeset: 0:33aaa84a386b
54 changeset: 0:33aaa84a386b
51 user: test
55 user: test
52 date: Mon Jan 12 13:46:40 1970 +0000
56 date: Mon Jan 12 13:46:40 1970 +0000
53 summary: 1
57 summary: 1
54
58
55 abort: there is nothing to merge - use "hg update" instead
59 abort: there is nothing to merge - use "hg update" instead
56 failed
60 failed
57 changeset: 0:33aaa84a386b
61 changeset: 0:33aaa84a386b
58 user: test
62 user: test
59 date: Mon Jan 12 13:46:40 1970 +0000
63 date: Mon Jan 12 13:46:40 1970 +0000
60 summary: 1
64 summary: 1
61
65
62 searching for copies back to rev 1
66 searching for copies back to rev 1
63 unmatched files in other:
67 unmatched files in other:
64 b
68 b
65 resolving manifests
69 resolving manifests
66 overwrite False partial False
70 overwrite False partial False
67 ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
71 ancestor 33aaa84a386b local 33aaa84a386b+ remote 802f095af299
68 a: versions differ -> m
72 a: versions differ -> m
69 b: remote created -> g
73 b: remote created -> g
70 preserving a for resolve of a
74 preserving a for resolve of a
75 update: a 1/2 files (50.00%)
71 picked tool 'true' for a (binary False symlink False)
76 picked tool 'true' for a (binary False symlink False)
72 merging a
77 merging a
73 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
78 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
79 update: b 2/2 files (100.00%)
74 getting b
80 getting b
75 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
81 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
76 changeset: 1:802f095af299
82 changeset: 1:802f095af299
77 tag: tip
83 tag: tip
78 user: test
84 user: test
79 date: Mon Jan 12 13:46:40 1970 +0000
85 date: Mon Jan 12 13:46:40 1970 +0000
80 summary: 2
86 summary: 2
81
87
82 changeset: 1:802f095af299
88 changeset: 1:802f095af299
83 tag: tip
89 tag: tip
84 user: test
90 user: test
85 date: Mon Jan 12 13:46:40 1970 +0000
91 date: Mon Jan 12 13:46:40 1970 +0000
86 files: a b
92 files: a b
87 description:
93 description:
88 2
94 2
89
95
90
96
91 changeset: 0:33aaa84a386b
97 changeset: 0:33aaa84a386b
92 user: test
98 user: test
93 date: Mon Jan 12 13:46:40 1970 +0000
99 date: Mon Jan 12 13:46:40 1970 +0000
94 files: a
100 files: a
95 description:
101 description:
96 1
102 1
97
103
98
104
99 diff -r 802f095af299 a
105 diff -r 802f095af299 a
100 --- a/a
106 --- a/a
101 +++ b/a
107 +++ b/a
102 @@ -1,1 +1,1 @@
108 @@ -1,1 +1,1 @@
103 -a2
109 -a2
104 +abc
110 +abc
105 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
111 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
106 adding b
112 adding b
107 created new head
113 created new head
108 M a
114 M a
109 changeset: 1:802f095af299
115 changeset: 1:802f095af299
110 user: test
116 user: test
111 date: Mon Jan 12 13:46:40 1970 +0000
117 date: Mon Jan 12 13:46:40 1970 +0000
112 summary: 2
118 summary: 2
113
119
114 abort: crosses branches (use 'hg merge' to merge or use 'hg update -C' to discard changes)
120 abort: crosses branches (use 'hg merge' to merge or use 'hg update -C' to discard changes)
115 failed
121 failed
116 abort: outstanding uncommitted changes (use 'hg status' to list changes)
122 abort: outstanding uncommitted changes (use 'hg status' to list changes)
117 failed
123 failed
118 searching for copies back to rev 1
124 searching for copies back to rev 1
119 resolving manifests
125 resolving manifests
120 overwrite False partial False
126 overwrite False partial False
121 ancestor 33aaa84a386b local 802f095af299+ remote 030602aee63d
127 ancestor 33aaa84a386b local 802f095af299+ remote 030602aee63d
122 a: versions differ -> m
128 a: versions differ -> m
123 b: versions differ -> m
129 b: versions differ -> m
124 preserving a for resolve of a
130 preserving a for resolve of a
125 preserving b for resolve of b
131 preserving b for resolve of b
132 update: a 1/2 files (50.00%)
126 picked tool 'true' for a (binary False symlink False)
133 picked tool 'true' for a (binary False symlink False)
127 merging a
134 merging a
128 my a@802f095af299+ other a@030602aee63d ancestor a@33aaa84a386b
135 my a@802f095af299+ other a@030602aee63d ancestor a@33aaa84a386b
136 update: b 2/2 files (100.00%)
129 picked tool 'true' for b (binary False symlink False)
137 picked tool 'true' for b (binary False symlink False)
130 merging b
138 merging b
131 my b@802f095af299+ other b@030602aee63d ancestor b@000000000000
139 my b@802f095af299+ other b@030602aee63d ancestor b@000000000000
132 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
140 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
133 (branch merge, don't forget to commit)
141 (branch merge, don't forget to commit)
134 changeset: 1:802f095af299
142 changeset: 1:802f095af299
135 user: test
143 user: test
136 date: Mon Jan 12 13:46:40 1970 +0000
144 date: Mon Jan 12 13:46:40 1970 +0000
137 summary: 2
145 summary: 2
138
146
139 changeset: 2:030602aee63d
147 changeset: 2:030602aee63d
140 tag: tip
148 tag: tip
141 parent: 0:33aaa84a386b
149 parent: 0:33aaa84a386b
142 user: test
150 user: test
143 date: Mon Jan 12 13:46:40 1970 +0000
151 date: Mon Jan 12 13:46:40 1970 +0000
144 summary: 3
152 summary: 3
145
153
146 diff -r 802f095af299 a
154 diff -r 802f095af299 a
147 --- a/a
155 --- a/a
148 +++ b/a
156 +++ b/a
149 @@ -1,1 +1,1 @@
157 @@ -1,1 +1,1 @@
150 -a2
158 -a2
151 +abc
159 +abc
152 adding a
160 adding a
153 pulling from ../a
161 pulling from ../a
154 requesting all changes
162 requesting all changes
155 adding changesets
163 adding changesets
156 adding manifests
164 adding manifests
157 adding file changes
165 adding file changes
158 added 1 changesets with 1 changes to 1 files
166 added 1 changesets with 1 changes to 1 files
159 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
@@ -1,55 +1,58 b''
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
1 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
2 Main should be gone
2 Main should be gone
3 a
3 a
4 created new head
4 created new head
5 changeset: 3:ded32b0db104
5 changeset: 3:ded32b0db104
6 tag: tip
6 tag: tip
7 user: test
7 user: test
8 date: Mon Jan 12 13:46:40 1970 +0000
8 date: Mon Jan 12 13:46:40 1970 +0000
9 summary: Added side2
9 summary: Added side2
10
10
11 changeset: 2:92a816cea698
11 changeset: 2:92a816cea698
12 parent: 0:537353581d3d
12 parent: 0:537353581d3d
13 user: test
13 user: test
14 date: Mon Jan 12 13:46:40 1970 +0000
14 date: Mon Jan 12 13:46:40 1970 +0000
15 summary: Added side1
15 summary: Added side1
16
16
17 changeset: 1:221226fb2bd8
17 changeset: 1:221226fb2bd8
18 user: test
18 user: test
19 date: Mon Jan 12 13:46:40 1970 +0000
19 date: Mon Jan 12 13:46:40 1970 +0000
20 summary: Added main
20 summary: Added main
21
21
22 changeset: 0:537353581d3d
22 changeset: 0:537353581d3d
23 user: test
23 user: test
24 date: Mon Jan 12 13:46:40 1970 +0000
24 date: Mon Jan 12 13:46:40 1970 +0000
25 summary: Added a
25 summary: Added a
26
26
27 Should have two heads, side2 and main
27 Should have two heads, side2 and main
28 changeset: 3:ded32b0db104
28 changeset: 3:ded32b0db104
29 tag: tip
29 tag: tip
30 user: test
30 user: test
31 date: Mon Jan 12 13:46:40 1970 +0000
31 date: Mon Jan 12 13:46:40 1970 +0000
32 summary: Added side2
32 summary: Added side2
33
33
34 changeset: 1:221226fb2bd8
34 changeset: 1:221226fb2bd8
35 user: test
35 user: test
36 date: Mon Jan 12 13:46:40 1970 +0000
36 date: Mon Jan 12 13:46:40 1970 +0000
37 summary: Added main
37 summary: Added main
38
38
39 Should show a side1 side2
39 Should show a side1 side2
40 a
40 a
41 side1
41 side1
42 side2
42 side2
43 resolving manifests
43 resolving manifests
44 overwrite True partial False
44 overwrite True partial False
45 ancestor ded32b0db104+ local ded32b0db104+ remote 221226fb2bd8
45 ancestor ded32b0db104+ local ded32b0db104+ remote 221226fb2bd8
46 side2: other deleted -> r
46 side2: other deleted -> r
47 side1: other deleted -> r
47 side1: other deleted -> r
48 main: remote created -> g
48 main: remote created -> g
49 update: side1 1/3 files (33.33%)
49 removing side1
50 removing side1
51 update: side2 2/3 files (66.67%)
50 removing side2
52 removing side2
53 update: main 3/3 files (100.00%)
51 getting main
54 getting main
52 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
55 1 files updated, 0 files merged, 2 files removed, 0 files unresolved
53 Should only show a main
56 Should only show a main
54 a
57 a
55 main
58 main
General Comments 0
You need to be logged in to leave comments. Login now