##// END OF EJS Templates
merge: allow smarter tool configuration...
Matt Mackall -
r6004:5af5f0f9 default
parent child Browse files
Show More
@@ -813,40 +813,6 b' def debuginstall(ui):'
813 813 os.unlink(fa)
814 814 os.unlink(fd)
815 815
816 # merge helper
817 ui.status(_("Checking merge helper...\n"))
818 cmd = (os.environ.get("HGMERGE") or ui.config("ui", "merge")
819 or "hgmerge")
820 cmdpath = util.find_exe(cmd) or util.find_exe(cmd.split()[0])
821 if not cmdpath:
822 if cmd == 'hgmerge':
823 ui.write(_(" No merge helper set and can't find default"
824 " hgmerge script in PATH\n"))
825 ui.write(_(" (specify a merge helper in your .hgrc file)\n"))
826 else:
827 ui.write(_(" Can't find merge helper '%s' in PATH\n") % cmd)
828 ui.write(_(" (specify a merge helper in your .hgrc file)\n"))
829 problems += 1
830 else:
831 # actually attempt a patch here
832 fa = writetemp("1\n2\n3\n4\n")
833 fl = writetemp("1\n2\n3\ninsert\n4\n")
834 fr = writetemp("begin\n1\n2\n3\n4\n")
835 r = util.system('%s "%s" "%s" "%s"' % (cmd, fl, fa, fr))
836 if r:
837 ui.write(_(" Got unexpected merge error %d!\n") % r)
838 problems += 1
839 m = file(fl).read()
840 if m != "begin\n1\n2\n3\ninsert\n4\n":
841 ui.write(_(" Got unexpected merge results!\n"))
842 ui.write(_(" (your merge helper may have the"
843 " wrong argument order)\n"))
844 ui.write(_(" Result: %r\n") % m)
845 problems += 1
846 os.unlink(fa)
847 os.unlink(fl)
848 os.unlink(fr)
849
850 816 # editor
851 817 ui.status(_("Checking commit editor...\n"))
852 818 editor = ui.geteditor()
@@ -7,7 +7,57 b''
7 7
8 8 from node import *
9 9 from i18n import _
10 import util, os, tempfile, context
10 import util, os, tempfile, context, simplemerge, re
11
12 def _toolstr(ui, tool, part, default=None):
13 return ui.config("merge-tools", tool + "." + part, default)
14
15 def _toolbool(ui, tool, part, default=False):
16 return ui.configbool("merge-tools", tool + "." + part, default)
17
18 def _findtool(ui, tool):
19 return util.find_exe(_toolstr(ui, tool, "executable", tool))
20
21 def _picktool(repo, ui, path, binary, symlink):
22 def check(tool, pat, symlink, binary):
23 tmsg = tool
24 if pat:
25 tmsg += " specified for " + pat
26 if pat and not _findtool(ui, tool): # skip search if not matching
27 ui.warn(_("couldn't find merge tool %s\n") % tmsg)
28 elif symlink and not _toolbool(ui, tool, "symlink"):
29 ui.warn(_("tool %s can't handle symlinks\n") % tmsg)
30 elif binary and not _toolbool(ui, tool, "binary"):
31 ui.warn(_("tool %s can't handle binary\n") % tmsg)
32 else:
33 return True
34 return False
35
36 # HGMERGE takes precedence
37 if os.environ.get("HGMERGE"):
38 return os.environ.get("HGMERGE")
39
40 # then patterns
41 for pattern, tool in ui.configitems("merge-patterns"):
42 mf = util.matcher(repo.root, "", [pat], [], [])[1]
43 if mf(path) and check(tool, pat, symlink, False):
44 return tool
45
46 # then merge tools
47 tools = {}
48 for k,v in ui.configitems("merge-tools"):
49 t = k.split('.')[0]
50 if t not in tools:
51 tools[t] = int(_toolstr(ui, t, "priority", "0"))
52 tools = [(-p,t) for t,p in tools.items()]
53 tools.sort()
54 if ui.config("ui", "merge"):
55 tools.insert(0, (None, ui.config("ui", "merge"))) # highest priority
56 tools.append((None, "hgmerge")) # the old default, if found
57 tools.append((None, "internal:merge")) # internal merge as last resort
58 for p,t in tools:
59 if _findtool(ui, t) and check(t, None, symlink, binary):
60 return t
11 61
12 62 def filemerge(repo, fw, fd, fo, wctx, mctx):
13 63 """perform a 3-way merge in the working directory
@@ -27,38 +77,91 b' def filemerge(repo, fw, fd, fo, wctx, mc'
27 77 f.close()
28 78 return name
29 79
30 fcm = wctx.filectx(fw)
31 fcmdata = wctx.filectx(fd).data()
80 def isbin(ctx):
81 try:
82 return util.binary(ctx.data())
83 except IOError:
84 return False
85
32 86 fco = mctx.filectx(fo)
33
34 if not fco.cmp(fcmdata): # files identical?
87 if not fco.cmp(wctx.filectx(fd).data()): # files identical?
35 88 return None
36 89
37 fca = fcm.ancestor(fco)
38 if not fca:
39 fca = repo.filectx(fw, fileid=nullrev)
90 ui = repo.ui
91 fcm = wctx.filectx(fw)
92 fca = fcm.ancestor(fco) or repo.filectx(fw, fileid=nullrev)
93 binary = isbin(fcm) or isbin(fco) or isbin(fca)
94 symlink = fcm.islink() or fco.islink()
95 tool = _picktool(repo, ui, fw, binary, symlink)
96 ui.debug(_("picked tool '%s' for %s (binary %s symlink %s)\n") %
97 (tool, fw, binary, symlink))
98
99 if not tool:
100 tool = "internal:local"
101 if ui.prompt(_(" no tool found to merge %s\n"
102 "keep (l)ocal or take (o)ther?") % fw,
103 _("[lo]"), _("l")) != _("l"):
104 tool = "internal:other"
105 if tool == "internal:local":
106 return 0
107 if tool == "internal:other":
108 repo.wwrite(fd, fco.data(), fco.fileflags())
109 return 0
110 if tool == "internal:fail":
111 return 1
112
113 # do the actual merge
40 114 a = repo.wjoin(fd)
41 115 b = temp("base", fca)
42 116 c = temp("other", fco)
117 out = ""
118 back = a + ".orig"
119 util.copyfile(a, back)
43 120
44 121 if fw != fo:
45 122 repo.ui.status(_("merging %s and %s\n") % (fw, fo))
46 123 else:
47 124 repo.ui.status(_("merging %s\n") % fw)
48
49 125 repo.ui.debug(_("my %s other %s ancestor %s\n") % (fcm, fco, fca))
50 126
51 cmd = (os.environ.get("HGMERGE") or repo.ui.config("ui", "merge")
52 or "hgmerge")
53 r = util.system('%s "%s" "%s" "%s"' % (cmd, a, b, c), cwd=repo.root,
54 environ={'HG_FILE': fd,
55 'HG_MY_NODE': str(wctx.parents()[0]),
56 'HG_OTHER_NODE': str(mctx),
57 'HG_MY_ISLINK': fcm.islink(),
58 'HG_OTHER_ISLINK': fco.islink(),
59 'HG_BASE_ISLINK': fca.islink(),})
127 # do we attempt to simplemerge first?
128 if _toolbool(ui, tool, "premerge", not (binary or symlink)):
129 r = simplemerge.simplemerge(a, b, c, quiet=True)
130 if not r:
131 ui.debug(_(" premerge successful\n"))
132 os.unlink(back)
133 os.unlink(b)
134 os.unlink(c)
135 return 0
136 util.copyfile(back, a) # restore from backup and try again
137
138 env = dict(HG_FILE=fd,
139 HG_MY_NODE=str(wctx.parents()[0]),
140 HG_OTHER_NODE=str(mctx),
141 HG_MY_ISLINK=fcm.islink(),
142 HG_OTHER_ISLINK=fco.islink(),
143 HG_BASE_ISLINK=fca.islink())
144
145 if tool == "internal:merge":
146 r = simplemerge.simplemerge(a, b, c, label=['local', 'other'])
147 else:
148 toolpath = _findtool(ui, tool)
149 args = _toolstr(ui, tool, "args", '$local $base $other')
150 if "$output" in args:
151 out, a = a, back # read input from backup, write to original
152 replace = dict(local=a, base=b, other=c, output=out)
153 args = re.sub("\$(local|base|other|output)",
154 lambda x: '"%s"' % replace[x.group()[1:]], args)
155 r = util.system(toolpath + ' ' + args, cwd=repo.root, environ=env)
156
157 if not r and _toolbool(ui, tool, "checkconflicts"):
158 if re.match("^(<<<<<<< .*|=======|>>>>>>> .*)$", fcm.data()):
159 r = 1
160
60 161 if r:
61 162 repo.ui.warn(_("merging %s failed!\n") % fd)
163 else:
164 os.unlink(back)
62 165
63 166 os.unlink(b)
64 167 os.unlink(c)
@@ -420,9 +420,7 b' DAEMON_PIDS = None'
420 420 HGRCPATH = None
421 421
422 422 os.environ["HGEDITOR"] = sys.executable + ' -c "import sys; sys.exit(0)"'
423 os.environ["HGMERGE"] = ('python "%s" -L my -L other'
424 % os.path.join(TESTDIR, os.path.pardir,
425 'contrib', 'simplemerge'))
423 os.environ["HGMERGE"] = "internal:merge"
426 424 os.environ["HGUSER"] = "test"
427 425 os.environ["HGENCODING"] = "ascii"
428 426 os.environ["HGENCODINGMODE"] = "strict"
@@ -13,21 +13,26 b' A b'
13 13 % should fail
14 14 a already tracked!
15 15 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
16 merging a
16 17 warning: conflicts during merge.
17 merging a
18 18 merging a failed!
19 19 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
20 20 There are unresolved merges, you can redo the full merge using:
21 21 hg update -C 2
22 22 hg merge 1
23 23 M a
24 ? a.orig
24 25 % should fail
25 26 a already tracked!
26 27 M a
28 ? a.orig
27 29 % issue683
28 30 R a
31 ? a.orig
29 32 M a
33 ? a.orig
30 34 c does not exist!
31 35 d does not exist!
32 36 M a
33 37 A c
38 ? a.orig
@@ -1,15 +1,16 b''
1 1 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
2 merging a
2 3 warning: conflicts during merge.
3 merging a
4 4 merging a failed!
5 5 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
6 6 There are unresolved merges, you can redo the full merge using:
7 7 hg update -C 2
8 8 hg merge 1
9 9 e7fe8eb3e180+0d24b7662d3e+ tip
10 <<<<<<< my
10 <<<<<<< local
11 11 something else
12 12 =======
13 13 something
14 14 >>>>>>> other
15 15 M a
16 ? a.orig
@@ -260,8 +260,8 b' 1 files updated, 0 files merged, 2 files'
260 260 adding right-1
261 261 adding right-2
262 262 3 files updated, 0 files merged, 2 files removed, 0 files unresolved
263 merging b
263 264 warning: conflicts during merge.
264 merging b
265 265 merging b failed!
266 266 2 files updated, 0 files merged, 0 files removed, 1 files unresolved
267 267 There are unresolved merges, you can redo the full merge using:
@@ -14,11 +14,15 b' resolving manifests'
14 14 a: remote moved to b -> m
15 15 copying a to b
16 16 copying a to c
17 picked tool 'internal:merge' for a (binary False symlink False)
17 18 merging a and b
18 19 my a@fb3948d97f07+ other b@40da226db0f0 ancestor a@583c7b748052
20 premerge successful
19 21 removing a
22 picked tool 'internal:merge' for a (binary False symlink False)
20 23 merging a and c
21 24 my a@fb3948d97f07+ other c@40da226db0f0 ancestor a@583c7b748052
25 premerge successful
22 26 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
23 27 (branch merge, don't forget to commit)
24 28 -- b --
@@ -10,10 +10,14 b' resolving manifests'
10 10 foo: versions differ -> m
11 11 foo: remote copied to bar -> m
12 12 copying foo to bar
13 picked tool 'internal:merge' for foo (binary False symlink False)
13 14 merging foo and bar
14 15 my foo@2092631ce82b+ other bar@7731dad1c2b9 ancestor foo@310fd17130da
16 premerge successful
17 picked tool 'internal:merge' for foo (binary False symlink False)
15 18 merging foo
16 19 my foo@2092631ce82b+ other foo@7731dad1c2b9 ancestor foo@310fd17130da
20 premerge successful
17 21 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
18 22 (branch merge, don't forget to commit)
19 23 -- foo --
@@ -2,7 +2,6 b' Checking encoding (ascii)...'
2 2 Checking extensions...
3 3 Checking templates...
4 4 Checking patch...
5 Checking merge helper...
6 5 Checking commit editor...
7 6 Checking username...
8 7 No problems detected
@@ -28,8 +28,10 b' resolving manifests'
28 28 1a -> 1 *
29 29 checking for directory renames
30 30 1a: local moved to 1 -> m
31 picked tool 'internal:merge' for 1a (binary False symlink False)
31 32 merging 1a and 1
32 33 my 1a@ac7575e3c052+ other 1@746e9549ea96 ancestor 1@81f4b099af3d
34 premerge successful
33 35 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
34 36 (branch merge, don't forget to commit)
35 37 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -44,8 +46,10 b' resolving manifests'
44 46 checking for directory renames
45 47 1: remote moved to 1a -> m
46 48 copying 1 to 1a
49 picked tool 'internal:merge' for 1 (binary False symlink False)
47 50 merging 1 and 1a
48 51 my 1@746e9549ea96+ other 1a@ac7575e3c052 ancestor 1@81f4b099af3d
52 premerge successful
49 53 removing 1
50 54 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
51 55 (branch merge, don't forget to commit)
@@ -25,8 +25,10 b' resolving manifests'
25 25 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 7d3b554bfdf1
26 26 searching for copies back to rev 1
27 27 bar: versions differ -> m
28 picked tool 'internal:merge' for bar (binary False symlink False)
28 29 merging bar
29 30 my bar@2d2f9a22c82b+ other bar@7d3b554bfdf1 ancestor bar@0a3ab4856510
31 premerge successful
30 32 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
31 33 (branch merge, don't forget to commit)
32 34 % contents of bar should be line1 line2
@@ -71,8 +73,10 b' resolving manifests'
71 73 ancestor 0a3ab4856510 local 2d2f9a22c82b+ remote 96ab80c60897
72 74 searching for copies back to rev 1
73 75 bar: versions differ -> m
76 picked tool 'internal:merge' for bar (binary False symlink False)
74 77 merging bar
75 78 my bar@2d2f9a22c82b+ other bar@96ab80c60897 ancestor bar@0a3ab4856510
79 premerge successful
76 80 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
77 81 (branch merge, don't forget to commit)
78 82 % contents of bar should be line1 line2
@@ -18,27 +18,28 b' M zzz1_merge_ok'
18 18 M zzz2_merge_bad
19 19 # local merge with bad merge tool
20 20 merging zzz1_merge_ok
21 merging zzz1_merge_ok failed!
22 21 merging zzz2_merge_bad
23 22 merging zzz2_merge_bad failed!
24 3 files updated, 0 files merged, 2 files removed, 2 files unresolved
23 3 files updated, 1 files merged, 2 files removed, 1 files unresolved
25 24 There are unresolved merges with locally modified files.
26 You can redo the full merge using:
25 You can finish the partial merge using:
27 26 hg update 0
28 27 hg update 1
29 28 2 files updated, 0 files merged, 3 files removed, 0 files unresolved
30 29 --- a/zzz1_merge_ok
31 30 +++ b/zzz1_merge_ok
31 +new first line
32 32 +new last line
33 33 --- a/zzz2_merge_bad
34 34 +++ b/zzz2_merge_bad
35 35 +another last line
36 36 M zzz1_merge_ok
37 37 M zzz2_merge_bad
38 ? zzz2_merge_bad.orig
38 39 # local merge with conflicts
39 warning: conflicts during merge.
40 40 merging zzz1_merge_ok
41 41 merging zzz2_merge_bad
42 warning: conflicts during merge.
42 43 merging zzz2_merge_bad failed!
43 44 3 files updated, 1 files merged, 2 files removed, 1 files unresolved
44 45 There are unresolved merges with locally modified files.
@@ -57,6 +58,7 b' 2 files updated, 0 files merged, 3 files'
57 58 +new last line
58 59 M zzz1_merge_ok
59 60 M zzz2_merge_bad
61 ? zzz2_merge_bad.orig
60 62 # local merge without conflicts
61 63 merging zzz1_merge_ok
62 64 4 files updated, 1 files merged, 2 files removed, 0 files unresolved
@@ -9,8 +9,8 b' 9eca13a34789'
9 9 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
10 10 f248da0d4c3e tip
11 11 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
12 merging file1
12 13 warning: conflicts during merge.
13 merging file1
14 14 merging file1 failed!
15 15 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
16 16 There are unresolved merges with locally modified files.
@@ -23,15 +23,19 b' diff -r f248da0d4c3e file1'
23 23 @@ -1,3 +1,7 @@
24 24 added file1
25 25 another line of text
26 +<<<<<<< my
26 +<<<<<<< local
27 27 +changed file1 different
28 28 +=======
29 29 changed file1
30 30 +>>>>>>> other
31 31 M file1
32 ? file1.orig
32 33 f248da0d4c3e+ tip
33 34 reverting file1
35 ? file1.orig
34 36 f248da0d4c3e tip
37 ? file1.orig
35 38 f248da0d4c3e tip
36 39 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
40 ? file1.orig
37 41 f248da0d4c3e tip
@@ -6,8 +6,8 b' adding manifests'
6 6 adding file changes
7 7 added 1 changesets with 1 changes to 1 files (+1 heads)
8 8 (run 'hg heads' to see heads, 'hg merge' to merge)
9 merging test.txt
9 10 warning: conflicts during merge.
10 merging test.txt
11 11 merging test.txt failed!
12 12 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
13 13 There are unresolved merges, you can redo the full merge using:
@@ -20,21 +20,22 b' adding manifests'
20 20 adding file changes
21 21 added 1 changesets with 1 changes to 1 files (+1 heads)
22 22 (run 'hg heads' to see heads, 'hg merge' to merge)
23 warning: conflicts during merge.
24 23 resolving manifests
25 24 overwrite None partial False
26 25 ancestor faaea63e63a9 local 451c744aabcc+ remote a070d41e8360
27 26 searching for copies back to rev 1
28 27 test.txt: versions differ -> m
28 picked tool 'internal:merge' for test.txt (binary False symlink False)
29 29 merging test.txt
30 30 my test.txt@451c744aabcc+ other test.txt@a070d41e8360 ancestor test.txt@faaea63e63a9
31 warning: conflicts during merge.
31 32 merging test.txt failed!
32 33 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
33 34 There are unresolved merges, you can redo the full merge using:
34 35 hg update -C 3
35 36 hg merge 4
36 37 one
37 <<<<<<< my
38 <<<<<<< local
38 39 two-point-five
39 40 =======
40 41 two-point-one
@@ -5,8 +5,7 b' adding quux2'
5 5 merging bar
6 6 merging bar failed!
7 7 merging foo and baz
8 merging baz failed!
9 1 files updated, 0 files merged, 0 files removed, 2 files unresolved
8 1 files updated, 1 files merged, 0 files removed, 1 files unresolved
10 9 There are unresolved merges, you can redo the full merge using:
11 10 hg update -C 2
12 11 hg merge 1
@@ -14,8 +13,7 b' 3 files updated, 0 files merged, 1 files'
14 13 merging bar
15 14 merging bar failed!
16 15 merging baz and foo
17 merging baz failed!
18 1 files updated, 0 files merged, 0 files removed, 2 files unresolved
16 1 files updated, 1 files merged, 0 files removed, 1 files unresolved
19 17 There are unresolved merges, you can redo the full merge using:
20 18 hg update -C 1
21 19 hg merge 2
@@ -19,8 +19,10 b' resolving manifests'
19 19 a: remote moved to b -> m
20 20 b2: remote created -> g
21 21 copying a to b
22 picked tool 'internal:merge' for a (binary False symlink False)
22 23 merging a and b
23 24 my a@f26ec4fc3fa3+ other b@8e765a822af2 ancestor a@af1939970a1c
25 premerge successful
24 26 removing a
25 27 warning: detected divergent renames of a2 to:
26 28 c2
@@ -13,8 +13,11 b' resolving manifests'
13 13 rev: versions differ -> m
14 14 a: remote copied to b -> m
15 15 copying a to b
16 picked tool 'python ../merge' for a (binary False symlink False)
16 17 merging a and b
17 18 my a@e300d1c794ec+ other b@735846fee2d7 ancestor a@924404dff337
19 premerge successful
20 picked tool 'python ../merge' for rev (binary False symlink False)
18 21 merging rev
19 22 my rev@e300d1c794ec+ other rev@735846fee2d7 ancestor rev@924404dff337
20 23 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -41,8 +44,11 b' resolving manifests'
41 44 b: local copied to a -> m
42 45 rev: versions differ -> m
43 46 getting a
47 picked tool 'python ../merge' for b (binary False symlink False)
44 48 merging b and a
45 49 my b@ac809aeed39a+ other a@f4db7e329e71 ancestor a@924404dff337
50 premerge successful
51 picked tool 'python ../merge' for rev (binary False symlink False)
46 52 merging rev
47 53 my rev@ac809aeed39a+ other rev@f4db7e329e71 ancestor rev@924404dff337
48 54 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -68,9 +74,12 b' resolving manifests'
68 74 rev: versions differ -> m
69 75 a: remote moved to b -> m
70 76 copying a to b
77 picked tool 'python ../merge' for a (binary False symlink False)
71 78 merging a and b
72 79 my a@e300d1c794ec+ other b@e03727d2d66b ancestor a@924404dff337
80 premerge successful
73 81 removing a
82 picked tool 'python ../merge' for rev (binary False symlink False)
74 83 merging rev
75 84 my rev@e300d1c794ec+ other rev@e03727d2d66b ancestor rev@924404dff337
76 85 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -94,8 +103,11 b' resolving manifests'
94 103 checking for directory renames
95 104 b: local moved to a -> m
96 105 rev: versions differ -> m
106 picked tool 'python ../merge' for b (binary False symlink False)
97 107 merging b and a
98 108 my b@ecf3cb2a4219+ other a@f4db7e329e71 ancestor a@924404dff337
109 premerge successful
110 picked tool 'python ../merge' for rev (binary False symlink False)
99 111 merging rev
100 112 my rev@ecf3cb2a4219+ other rev@f4db7e329e71 ancestor rev@924404dff337
101 113 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -120,6 +132,7 b' resolving manifests'
120 132 rev: versions differ -> m
121 133 b: remote created -> g
122 134 getting b
135 picked tool 'python ../merge' for rev (binary False symlink False)
123 136 merging rev
124 137 my rev@94b33a1b7f2d+ other rev@735846fee2d7 ancestor rev@924404dff337
125 138 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
@@ -142,6 +155,7 b' resolving manifests'
142 155 b -> a
143 156 checking for directory renames
144 157 rev: versions differ -> m
158 picked tool 'python ../merge' for rev (binary False symlink False)
145 159 merging rev
146 160 my rev@ac809aeed39a+ other rev@97c705ade336 ancestor rev@924404dff337
147 161 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
@@ -168,6 +182,7 b' resolving manifests'
168 182 b: remote created -> g
169 183 removing a
170 184 getting b
185 picked tool 'python ../merge' for rev (binary False symlink False)
171 186 merging rev
172 187 my rev@94b33a1b7f2d+ other rev@e03727d2d66b ancestor rev@924404dff337
173 188 1 files updated, 1 files merged, 1 files removed, 0 files unresolved
@@ -189,6 +204,7 b' resolving manifests'
189 204 b -> a
190 205 checking for directory renames
191 206 rev: versions differ -> m
207 picked tool 'python ../merge' for rev (binary False symlink False)
192 208 merging rev
193 209 my rev@ecf3cb2a4219+ other rev@97c705ade336 ancestor rev@924404dff337
194 210 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
@@ -206,8 +222,10 b' resolving manifests'
206 222 searching for copies back to rev 1
207 223 b: versions differ -> m
208 224 rev: versions differ -> m
225 picked tool 'python ../merge' for b (binary False symlink False)
209 226 merging b
210 227 my b@ec03c2ca8642+ other b@79cc6877a3b7 ancestor a@924404dff337
228 picked tool 'python ../merge' for rev (binary False symlink False)
211 229 merging rev
212 230 my rev@ec03c2ca8642+ other rev@79cc6877a3b7 ancestor rev@924404dff337
213 231 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -238,6 +256,7 b' warning: detected divergent renames of a'
238 256 b
239 257 c
240 258 getting c
259 picked tool 'python ../merge' for rev (binary False symlink False)
241 260 merging rev
242 261 my rev@ecf3cb2a4219+ other rev@e6abcc1a30c2 ancestor rev@924404dff337
243 262 1 files updated, 1 files merged, 0 files removed, 0 files unresolved
@@ -256,8 +275,10 b' resolving manifests'
256 275 searching for copies back to rev 1
257 276 b: versions differ -> m
258 277 rev: versions differ -> m
278 picked tool 'python ../merge' for b (binary False symlink False)
259 279 merging b
260 280 my b@ac809aeed39a+ other b@af30c7647fc7 ancestor b@000000000000
281 picked tool 'python ../merge' for rev (binary False symlink False)
261 282 merging rev
262 283 my rev@ac809aeed39a+ other rev@af30c7647fc7 ancestor rev@924404dff337
263 284 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -278,8 +299,10 b' resolving manifests'
278 299 b: versions differ -> m
279 300 rev: versions differ -> m
280 301 removing a
302 picked tool 'python ../merge' for b (binary False symlink False)
281 303 merging b
282 304 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
305 picked tool 'python ../merge' for rev (binary False symlink False)
283 306 merging rev
284 307 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
285 308 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
@@ -299,8 +322,10 b' resolving manifests'
299 322 b: versions differ -> m
300 323 rev: versions differ -> m
301 324 getting a
325 picked tool 'python ../merge' for b (binary False symlink False)
302 326 merging b
303 327 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
328 picked tool 'python ../merge' for rev (binary False symlink False)
304 329 merging rev
305 330 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
306 331 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -321,8 +346,10 b' resolving manifests'
321 346 b: versions differ -> m
322 347 rev: versions differ -> m
323 348 removing a
349 picked tool 'python ../merge' for b (binary False symlink False)
324 350 merging b
325 351 my b@59318016310c+ other b@e03727d2d66b ancestor b@000000000000
352 picked tool 'python ../merge' for rev (binary False symlink False)
326 353 merging rev
327 354 my rev@59318016310c+ other rev@e03727d2d66b ancestor rev@924404dff337
328 355 0 files updated, 2 files merged, 1 files removed, 0 files unresolved
@@ -342,8 +369,10 b' resolving manifests'
342 369 b: versions differ -> m
343 370 rev: versions differ -> m
344 371 getting a
372 picked tool 'python ../merge' for b (binary False symlink False)
345 373 merging b
346 374 my b@ac809aeed39a+ other b@8dbce441892a ancestor b@000000000000
375 picked tool 'python ../merge' for rev (binary False symlink False)
347 376 merging rev
348 377 my rev@ac809aeed39a+ other rev@8dbce441892a ancestor rev@924404dff337
349 378 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -362,8 +391,10 b' resolving manifests'
362 391 searching for copies back to rev 1
363 392 b: versions differ -> m
364 393 rev: versions differ -> m
394 picked tool 'python ../merge' for b (binary False symlink False)
365 395 merging b
366 396 my b@0b76e65c8289+ other b@735846fee2d7 ancestor b@000000000000
397 picked tool 'python ../merge' for rev (binary False symlink False)
367 398 merging rev
368 399 my rev@0b76e65c8289+ other rev@735846fee2d7 ancestor rev@924404dff337
369 400 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -384,8 +415,10 b' resolving manifests'
384 415 rev: versions differ -> m
385 416 a: prompt recreating -> g
386 417 getting a
418 picked tool 'python ../merge' for b (binary False symlink False)
387 419 merging b
388 420 my b@ecf3cb2a4219+ other b@8dbce441892a ancestor b@000000000000
421 picked tool 'python ../merge' for rev (binary False symlink False)
389 422 merging rev
390 423 my rev@ecf3cb2a4219+ other rev@8dbce441892a ancestor rev@924404dff337
391 424 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -404,8 +437,10 b' resolving manifests'
404 437 searching for copies back to rev 1
405 438 b: versions differ -> m
406 439 rev: versions differ -> m
440 picked tool 'python ../merge' for b (binary False symlink False)
407 441 merging b
408 442 my b@0b76e65c8289+ other b@e03727d2d66b ancestor b@000000000000
443 picked tool 'python ../merge' for rev (binary False symlink False)
409 444 merging rev
410 445 my rev@0b76e65c8289+ other rev@e03727d2d66b ancestor rev@924404dff337
411 446 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -430,9 +465,11 b' resolving manifests'
430 465 rev: versions differ -> m
431 466 a: remote moved to b -> m
432 467 copying a to b
468 picked tool 'python ../merge' for a (binary False symlink False)
433 469 merging a and b
434 470 my a@e300d1c794ec+ other b@79cc6877a3b7 ancestor a@924404dff337
435 471 removing a
472 picked tool 'python ../merge' for rev (binary False symlink False)
436 473 merging rev
437 474 my rev@e300d1c794ec+ other rev@79cc6877a3b7 ancestor rev@924404dff337
438 475 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -456,8 +493,10 b' resolving manifests'
456 493 checking for directory renames
457 494 b: local moved to a -> m
458 495 rev: versions differ -> m
496 picked tool 'python ../merge' for b (binary False symlink False)
459 497 merging b and a
460 498 my b@ec03c2ca8642+ other a@f4db7e329e71 ancestor a@924404dff337
499 picked tool 'python ../merge' for rev (binary False symlink False)
461 500 merging rev
462 501 my rev@ec03c2ca8642+ other rev@f4db7e329e71 ancestor rev@924404dff337
463 502 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -484,9 +523,12 b' resolving manifests'
484 523 b: local moved to a -> m
485 524 rev: versions differ -> m
486 525 c: remote created -> g
526 picked tool 'python ../merge' for b (binary False symlink False)
487 527 merging b and a
488 528 my b@ecf3cb2a4219+ other a@2b958612230f ancestor a@924404dff337
529 premerge successful
489 530 getting c
531 picked tool 'python ../merge' for rev (binary False symlink False)
490 532 merging rev
491 533 my rev@ecf3cb2a4219+ other rev@2b958612230f ancestor rev@924404dff337
492 534 1 files updated, 2 files merged, 0 files removed, 0 files unresolved
@@ -22,6 +22,7 b' resolving manifests'
22 22 b
23 23 a: versions differ -> m
24 24 b: remote created -> g
25 picked tool 'true' for a (binary False symlink False)
25 26 merging a
26 27 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
27 28 getting b
@@ -58,6 +59,7 b' resolving manifests'
58 59 b
59 60 a: versions differ -> m
60 61 b: remote created -> g
62 picked tool 'true' for a (binary False symlink False)
61 63 merging a
62 64 my a@33aaa84a386b+ other a@802f095af299 ancestor a@33aaa84a386b
63 65 getting b
@@ -109,8 +111,10 b' resolving manifests'
109 111 searching for copies back to rev 1
110 112 a: versions differ -> m
111 113 b: versions differ -> m
114 picked tool 'true' for a (binary False symlink False)
112 115 merging a
113 116 my a@802f095af299+ other a@030602aee63d ancestor a@33aaa84a386b
117 picked tool 'true' for b (binary False symlink False)
114 118 merging b
115 119 my b@802f095af299+ other b@030602aee63d ancestor b@000000000000
116 120 0 files updated, 2 files merged, 0 files removed, 0 files unresolved
General Comments 0
You need to be logged in to leave comments. Login now