##// END OF EJS Templates
merge: reduce manifest copying
Matt Mackall -
r3248:751840e7 default
parent child Browse files
Show More
@@ -164,12 +164,7 b' def findcopies(repo, m1, m2, limit):'
164 164
165 165 return copy
166 166
167 def filtermanifest(man, partial):
168 if partial:
169 for k in man.keys():
170 if not partial(k): del man[k]
171
172 def manifestmerge(ui, m1, m2, ma, overwrite, backwards):
167 def manifestmerge(ui, m1, m2, ma, overwrite, backwards, partial):
173 168 """
174 169 Merge manifest m1 with m2 using ancestor ma and generate merge action list
175 170 """
@@ -187,6 +182,8 b' def manifestmerge(ui, m1, m2, ma, overwr'
187 182
188 183 # Compare manifests
189 184 for f, n in m1.iteritems():
185 if partial and not partial(f):
186 continue
190 187 if f in m2:
191 188 # are files different?
192 189 if n != m2[f]:
@@ -206,7 +203,6 b' def manifestmerge(ui, m1, m2, ma, overwr'
206 203 elif m1.execf(f) != m2.execf(f):
207 204 if overwrite or fmerge(f) != m1.execf(f):
208 205 act("update permissions", f, "e", m2.execf(f))
209 del m2[f]
210 206 elif f in ma:
211 207 if n != ma[f] and not overwrite:
212 208 if ui.prompt(
@@ -221,6 +217,10 b' def manifestmerge(ui, m1, m2, ma, overwr'
221 217 act("remote deleted", f, "r")
222 218
223 219 for f, n in m2.iteritems():
220 if partial and not partial(f):
221 continue
222 if f in m1:
223 continue
224 224 if f in ma:
225 225 if overwrite or backwards:
226 226 act("recreating", f, "g", m2.execf(f), n)
@@ -337,8 +337,8 b' def update(repo, node, branchmerge=False'
337 337 if wc.modified() or wc.added() or wc.removed():
338 338 raise util.Abort(_("outstanding uncommitted changes"))
339 339
340 m1 = wc.manifest().copy()
341 m2 = p2.manifest().copy()
340 m1 = wc.manifest()
341 m2 = p2.manifest()
342 342 ma = pa.manifest()
343 343
344 344 # resolve the manifest to determine which files
@@ -351,9 +351,6 b' def update(repo, node, branchmerge=False'
351 351 action = []
352 352 copy = {}
353 353
354 filtermanifest(m1, partial)
355 filtermanifest(m2, partial)
356
357 354 if not force:
358 355 checkunknown(repo, m2, wc)
359 356 if not branchmerge:
@@ -361,8 +358,7 b' def update(repo, node, branchmerge=False'
361 358 if not (backwards or overwrite):
362 359 copy = findcopies(repo, m1, m2, pa.rev())
363 360
364 action += manifestmerge(repo.ui, m1, m2, ma, overwrite, backwards)
365 del m1, m2, ma
361 action += manifestmerge(repo.ui, m1, m2, ma, overwrite, backwards, partial)
366 362
367 363 ### apply phase
368 364
General Comments 0
You need to be logged in to leave comments. Login now