comparison mercurial/merge.py @ 3163:a9e75b371315

merge: move partial filtering out of manifest merge
author Matt Mackall <mpm@selenic.com>
date Tue, 26 Sep 2006 16:21:52 -0500
parents 84561ea8711e
children e67c22bc8bba
comparison
equal deleted inserted replaced
3162:84561ea8711e 3163:a9e75b371315
169 for mf in match[of]: 169 for mf in match[of]:
170 checkpair(c, mf, m1) 170 checkpair(c, mf, m1)
171 171
172 return copy 172 return copy
173 173
174 def manifestmerge(ui, m1, m2, ma, overwrite, backwards, partial): 174 def filtermanifest(man, partial):
175 if partial:
176 for k in man.keys():
177 if not partial(k): del man[k]
178
179 def manifestmerge(ui, m1, m2, ma, overwrite, backwards):
175 """ 180 """
176 Merge manifest m1 with m2 using ancestor ma and generate merge action list 181 Merge manifest m1 with m2 using ancestor ma and generate merge action list
177 """ 182 """
178 183
179 def fmerge(f): 184 def fmerge(f):
184 action = [] 189 action = []
185 190
186 def act(msg, f, m, *args): 191 def act(msg, f, m, *args):
187 ui.debug(" %s: %s -> %s\n" % (f, msg, m)) 192 ui.debug(" %s: %s -> %s\n" % (f, msg, m))
188 action.append((f, m) + args) 193 action.append((f, m) + args)
189
190 # Filter manifests
191 if partial:
192 for f in m1.keys():
193 if not partial(f): del m1[f]
194 for f in m2.keys():
195 if not partial(f): del m2[f]
196 194
197 # Compare manifests 195 # Compare manifests
198 for f, n in m1.iteritems(): 196 for f, n in m1.iteritems():
199 if f in m2: 197 if f in m2:
200 # are files different? 198 # are files different?
361 359
362 action = [] 360 action = []
363 copy = {} 361 copy = {}
364 362
365 m1 = workingmanifest(repo, m1, status) 363 m1 = workingmanifest(repo, m1, status)
364 filtermanifest(m1, partial)
365 filtermanifest(m2, partial)
366 366
367 if not force: 367 if not force:
368 checkunknown(repo, m2, status) 368 checkunknown(repo, m2, status)
369 if not branchmerge: 369 if not branchmerge:
370 action += forgetremoved(m2, status) 370 action += forgetremoved(m2, status)
371 if not (backwards or overwrite): 371 if not (backwards or overwrite):
372 copy = findcopies(repo, m1, m2, repo.changelog.rev(pa)) 372 copy = findcopies(repo, m1, m2, repo.changelog.rev(pa))
373 373
374 action += manifestmerge(repo.ui, m1, m2, ma, overwrite, backwards, partial) 374 action += manifestmerge(repo.ui, m1, m2, ma, overwrite, backwards)
375 del m1, m2, ma 375 del m1, m2, ma
376 376
377 ### apply phase 377 ### apply phase
378 378
379 if not branchmerge: 379 if not branchmerge: