Mercurial > public > mercurial-scm > hg
comparison mercurial/copies.py @ 6425:2d9328a2f81f
copies: skip directory rename checks when not merging
The directory rename checks are not meaningful unless we're moving or copying
files across a branch during a merge.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sat, 29 Mar 2008 12:39:47 -0500 |
parents | d8f44384c3ee |
children | e2c49ef2dd6e |
comparison
equal
deleted
inserted
replaced
6424:d8f44384c3ee | 6425:2d9328a2f81f |
---|---|
51 # return old names sorted by depth | 51 # return old names sorted by depth |
52 old = old.values() | 52 old = old.values() |
53 old.sort() | 53 old.sort() |
54 return [o[1] for o in old] | 54 return [o[1] for o in old] |
55 | 55 |
56 def copies(repo, c1, c2, ca): | 56 def copies(repo, c1, c2, ca, checkdirs=False): |
57 """ | 57 """ |
58 Find moves and copies between context c1 and c2 | 58 Find moves and copies between context c1 and c2 |
59 """ | 59 """ |
60 # avoid silly behavior for update from empty dir | 60 # avoid silly behavior for update from empty dir |
61 if not c1 or not c2: | 61 if not c1 or not c2: |
102 if c1 != ca or c2 != ca: # merge needed? | 102 if c1 != ca or c2 != ca: # merge needed? |
103 copy[f] = of | 103 copy[f] = of |
104 elif of in ma: | 104 elif of in ma: |
105 diverge.setdefault(of, []).append(f) | 105 diverge.setdefault(of, []).append(f) |
106 | 106 |
107 if not repo.ui.configbool("merge", "followcopies", True): | |
108 return {}, {} | |
109 | |
110 repo.ui.debug(_(" searching for copies back to rev %d\n") % limit) | 107 repo.ui.debug(_(" searching for copies back to rev %d\n") % limit) |
111 | 108 |
112 u1 = _nonoverlap(m1, m2, ma) | 109 u1 = _nonoverlap(m1, m2, ma) |
113 u2 = _nonoverlap(m2, m1, ma) | 110 u2 = _nonoverlap(m2, m1, ma) |
114 | 111 |
138 if f in copy: note += "*" | 135 if f in copy: note += "*" |
139 if f in diverge2: note += "!" | 136 if f in diverge2: note += "!" |
140 repo.ui.debug(_(" %s -> %s %s\n") % (f, fullcopy[f], note)) | 137 repo.ui.debug(_(" %s -> %s %s\n") % (f, fullcopy[f], note)) |
141 del diverge2 | 138 del diverge2 |
142 | 139 |
143 if not fullcopy or not repo.ui.configbool("merge", "followdirs", True): | 140 if not fullcopy or not checkdirs: |
144 return copy, diverge | 141 return copy, diverge |
145 | 142 |
146 repo.ui.debug(_(" checking for directory renames\n")) | 143 repo.ui.debug(_(" checking for directory renames\n")) |
147 | 144 |
148 # generate a directory move map | 145 # generate a directory move map |
185 for f in u1 + u2: | 182 for f in u1 + u2: |
186 if f not in fullcopy: | 183 if f not in fullcopy: |
187 for d in dirmove: | 184 for d in dirmove: |
188 if f.startswith(d): | 185 if f.startswith(d): |
189 # new file added in a directory that was moved, move it | 186 # new file added in a directory that was moved, move it |
190 copy[f] = dirmove[d] + f[len(d):] | 187 df = dirmove[d] + f[len(d):] |
188 copy[f] = df | |
191 repo.ui.debug(_(" file %s -> %s\n") % (f, copy[f])) | 189 repo.ui.debug(_(" file %s -> %s\n") % (f, copy[f])) |
192 break | 190 break |
193 | 191 |
194 return copy, diverge | 192 return copy, diverge |