equal
deleted
inserted
replaced
174 |
174 |
175 actions = [] |
175 actions = [] |
176 state = branchmerge and 'r' or 'f' |
176 state = branchmerge and 'r' or 'f' |
177 for f in wctx.deleted(): |
177 for f in wctx.deleted(): |
178 if f not in mctx: |
178 if f not in mctx: |
179 actions.append((f, state, None)) |
179 actions.append((f, state, None, "forget deleted")) |
180 |
180 |
181 if not branchmerge: |
181 if not branchmerge: |
182 for f in wctx.removed(): |
182 for f in wctx.removed(): |
183 if f not in mctx: |
183 if f not in mctx: |
184 actions.append((f, "f", None)) |
184 actions.append((f, "f", None, "forget removed")) |
185 |
185 |
186 return actions |
186 return actions |
187 |
187 |
188 def manifestmerge(repo, p1, p2, pa, overwrite, partial): |
188 def manifestmerge(repo, p1, p2, pa, overwrite, partial): |
189 """ |
189 """ |
192 overwrite = whether we clobber working files |
192 overwrite = whether we clobber working files |
193 partial = function to filter file lists |
193 partial = function to filter file lists |
194 """ |
194 """ |
195 |
195 |
196 def act(msg, m, f, *args): |
196 def act(msg, m, f, *args): |
197 repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m)) |
197 actions.append((f, m, args, msg)) |
198 actions.append((f, m, args)) |
|
199 |
198 |
200 actions, copy, movewithdir = [], {}, {} |
199 actions, copy, movewithdir = [], {}, {} |
201 |
200 |
202 if overwrite: |
201 if overwrite: |
203 pa = p1 |
202 pa = p1 |
340 moves = [] |
339 moves = [] |
341 actions.sort(key=actionkey) |
340 actions.sort(key=actionkey) |
342 |
341 |
343 # prescan for merges |
342 # prescan for merges |
344 for a in actions: |
343 for a in actions: |
345 f, m, args = a |
344 f, m, args, msg = a |
|
345 repo.ui.debug(" %s: %s -> %s\n" % (f, msg, m)) |
346 if m == "m": # merge |
346 if m == "m": # merge |
347 f2, fd, move = args |
347 f2, fd, move = args |
348 if fd == '.hgsubstate': # merged internally |
348 if fd == '.hgsubstate': # merged internally |
349 continue |
349 continue |
350 repo.ui.debug("preserving %s for resolve of %s\n" % (f, fd)) |
350 repo.ui.debug(" preserving %s for resolve of %s\n" % (f, fd)) |
351 fcl = wctx[f] |
351 fcl = wctx[f] |
352 fco = mctx[f2] |
352 fco = mctx[f2] |
353 if mctx == actx: # backwards, use working dir parent as ancestor |
353 if mctx == actx: # backwards, use working dir parent as ancestor |
354 if fcl.parents(): |
354 if fcl.parents(): |
355 fca = fcl.p1() |
355 fca = fcl.p1() |
372 audit(f) |
372 audit(f) |
373 util.unlinkpath(repo.wjoin(f)) |
373 util.unlinkpath(repo.wjoin(f)) |
374 |
374 |
375 numupdates = len(actions) |
375 numupdates = len(actions) |
376 for i, a in enumerate(actions): |
376 for i, a in enumerate(actions): |
377 f, m, args = a |
377 f, m, args, msg = a |
378 repo.ui.progress(_('updating'), i + 1, item=f, total=numupdates, |
378 repo.ui.progress(_('updating'), i + 1, item=f, total=numupdates, |
379 unit=_('files')) |
379 unit=_('files')) |
380 if m == "r": # remove |
380 if m == "r": # remove |
381 repo.ui.note(_("removing %s\n") % f) |
381 repo.ui.note(_("removing %s\n") % f) |
382 audit(f) |
382 audit(f) |
466 |
466 |
467 def recordupdates(repo, actions, branchmerge): |
467 def recordupdates(repo, actions, branchmerge): |
468 "record merge actions to the dirstate" |
468 "record merge actions to the dirstate" |
469 |
469 |
470 for a in actions: |
470 for a in actions: |
471 f, m, args = a |
471 f, m, args, msg = a |
472 if m == "r": # remove |
472 if m == "r": # remove |
473 if branchmerge: |
473 if branchmerge: |
474 repo.dirstate.remove(f) |
474 repo.dirstate.remove(f) |
475 else: |
475 else: |
476 repo.dirstate.drop(f) |
476 repo.dirstate.drop(f) |