comparison mercurial/merge.py @ 4400:84cd52b48f94

merge: reorganize some hunks in findcopies
author Matt Mackall <mpm@selenic.com>
date Thu, 03 May 2007 17:24:43 -0500
parents 93652499bed3
children 47371e1c1db4 bb1800a7d7e1
comparison
equal deleted inserted replaced
4399:93652499bed3 4400:84cd52b48f94
99 99
100 def findcopies(repo, m1, m2, ma, limit): 100 def findcopies(repo, m1, m2, ma, limit):
101 """ 101 """
102 Find moves and copies between m1 and m2 back to limit linkrev 102 Find moves and copies between m1 and m2 back to limit linkrev
103 """ 103 """
104
105 def nonoverlap(d1, d2, d3):
106 "Return list of elements in d1 not in d2 or d3"
107 l = [d for d in d1 if d not in d3 and d not in d2]
108 l.sort()
109 return l
104 110
105 def dirname(f): 111 def dirname(f):
106 s = f.rfind("/") 112 s = f.rfind("/")
107 if s == -1: 113 if s == -1:
108 return "" 114 return ""
137 143
138 old = old.keys() 144 old = old.keys()
139 old.sort() 145 old.sort()
140 return old 146 return old
141 147
142 def nonoverlap(d1, d2, d3): 148 copy = {}
143 "Return list of elements in d1 not in d2 or d3" 149 fullcopy = {}
144 l = [d for d in d1 if d not in d3 and d not in d2]
145 l.sort()
146 return l
147 150
148 def checkcopies(c, man): 151 def checkcopies(c, man):
149 '''check possible copies for filectx c''' 152 '''check possible copies for filectx c'''
150 for of in findold(c): 153 for of in findold(c):
151 if of not in man: # original file not in other manifest? 154 if of not in man: # original file not in other manifest?
167 # avoid silly behavior for update from empty dir 170 # avoid silly behavior for update from empty dir
168 if not m1 or not m2 or not ma: 171 if not m1 or not m2 or not ma:
169 return {} 172 return {}
170 173
171 dcopies = repo.dirstate.copies() 174 dcopies = repo.dirstate.copies()
172 copy = {}
173 fullcopy = {}
174 u1 = nonoverlap(m1, m2, ma) 175 u1 = nonoverlap(m1, m2, ma)
175 u2 = nonoverlap(m2, m1, ma) 176 u2 = nonoverlap(m2, m1, ma)
176 ctx = util.cachefunc(lambda f, n: repo.filectx(f, fileid=n[:20])) 177 ctx = util.cachefunc(lambda f, n: repo.filectx(f, fileid=n[:20]))
177 178
178 for f in u1: 179 for f in u1: