Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/filemerge.py @ 6025:f2335246e5c7
filemerge: wrap quotes around tool path
author | Steve Borho <steve@borho.org> |
---|---|
date | Mon, 04 Feb 2008 19:38:34 -0600 |
parents | 288ec2f6faa2 |
children | 63e0e57ab157 |
comparison
equal
deleted
inserted
replaced
6024:3121f0feefb4 | 6025:f2335246e5c7 |
---|---|
41 else: | 41 else: |
42 return True | 42 return True |
43 return False | 43 return False |
44 | 44 |
45 # HGMERGE takes precedence | 45 # HGMERGE takes precedence |
46 if os.environ.get("HGMERGE"): | 46 hgmerge = os.environ.get("HGMERGE") |
47 return os.environ.get("HGMERGE") | 47 if hgmerge: |
48 return (hgmerge, hgmerge) | |
48 | 49 |
49 # then patterns | 50 # then patterns |
50 for pat, tool in ui.configitems("merge-patterns"): | 51 for pat, tool in ui.configitems("merge-patterns"): |
51 mf = util.matcher(repo.root, "", [pat], [], [])[1] | 52 mf = util.matcher(repo.root, "", [pat], [], [])[1] |
52 if mf(path) and check(tool, pat, symlink, False): | 53 if mf(path) and check(tool, pat, symlink, False): |
53 return tool | 54 toolpath = _findtool(ui, tool) |
55 return (tool, '"' + toolpath + '"') | |
54 | 56 |
55 # then merge tools | 57 # then merge tools |
56 tools = {} | 58 tools = {} |
57 for k,v in ui.configitems("merge-tools"): | 59 for k,v in ui.configitems("merge-tools"): |
58 t = k.split('.')[0] | 60 t = k.split('.')[0] |
61 tools = [(-p,t) for t,p in tools.items()] | 63 tools = [(-p,t) for t,p in tools.items()] |
62 tools.sort() | 64 tools.sort() |
63 if ui.config("ui", "merge"): | 65 if ui.config("ui", "merge"): |
64 tools.insert(0, (None, ui.config("ui", "merge"))) # highest priority | 66 tools.insert(0, (None, ui.config("ui", "merge"))) # highest priority |
65 tools.append((None, "hgmerge")) # the old default, if found | 67 tools.append((None, "hgmerge")) # the old default, if found |
66 tools.append((None, "internal:merge")) # internal merge as last resort | |
67 for p,t in tools: | 68 for p,t in tools: |
68 if _findtool(ui, t) and check(t, None, symlink, binary): | 69 toolpath = _findtool(ui, t) |
69 return t | 70 if toolpath and check(t, None, symlink, binary): |
71 return (t, '"' + toolpath + '"') | |
72 # internal merge as last resort | |
73 return (not (symlink or binary) and "internal:merge" or None, None) | |
70 | 74 |
71 def _eoltype(data): | 75 def _eoltype(data): |
72 "Guess the EOL type of a file" | 76 "Guess the EOL type of a file" |
73 if '\0' in data: # binary | 77 if '\0' in data: # binary |
74 return None | 78 return None |
122 ui = repo.ui | 126 ui = repo.ui |
123 fcm = wctx.filectx(fw) | 127 fcm = wctx.filectx(fw) |
124 fca = fcm.ancestor(fco) or repo.filectx(fw, fileid=nullrev) | 128 fca = fcm.ancestor(fco) or repo.filectx(fw, fileid=nullrev) |
125 binary = isbin(fcm) or isbin(fco) or isbin(fca) | 129 binary = isbin(fcm) or isbin(fco) or isbin(fca) |
126 symlink = fcm.islink() or fco.islink() | 130 symlink = fcm.islink() or fco.islink() |
127 tool = _picktool(repo, ui, fw, binary, symlink) | 131 tool, toolpath = _picktool(repo, ui, fw, binary, symlink) |
128 ui.debug(_("picked tool '%s' for %s (binary %s symlink %s)\n") % | 132 ui.debug(_("picked tool '%s' for %s (binary %s symlink %s)\n") % |
129 (tool, fw, binary, symlink)) | 133 (tool, fw, binary, symlink)) |
130 | 134 |
131 if not tool: | 135 if not tool: |
132 tool = "internal:local" | 136 tool = "internal:local" |
175 HG_BASE_ISLINK=fca.islink()) | 179 HG_BASE_ISLINK=fca.islink()) |
176 | 180 |
177 if tool == "internal:merge": | 181 if tool == "internal:merge": |
178 r = simplemerge.simplemerge(a, b, c, label=['local', 'other']) | 182 r = simplemerge.simplemerge(a, b, c, label=['local', 'other']) |
179 else: | 183 else: |
180 toolpath = _findtool(ui, tool) | |
181 args = _toolstr(ui, tool, "args", '$local $base $other') | 184 args = _toolstr(ui, tool, "args", '$local $base $other') |
182 if "$output" in args: | 185 if "$output" in args: |
183 out, a = a, back # read input from backup, write to original | 186 out, a = a, back # read input from backup, write to original |
184 replace = dict(local=a, base=b, other=c, output=out) | 187 replace = dict(local=a, base=b, other=c, output=out) |
185 args = re.sub("\$(local|base|other|output)", | 188 args = re.sub("\$(local|base|other|output)", |