Mercurial > hg-stable
changeset 34574:05c2a9f37a1d
strip: factor out update target selection
The same algorithm was used in two places: one to find out which commit shall
become the parent of wdir, and the other to prepare the wdir when keeping
changes. Factoring it out prevents inconsistent changes in either occurrence.
author | Paul Morelle <paul.morelle@octobus.net> |
---|---|
date | Thu, 05 Oct 2017 15:11:34 +0200 |
parents | 3e4b7861c1c5 |
children | dc91580a0a88 |
files | hgext/strip.py |
diffstat | 1 files changed, 11 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/strip.py Wed Oct 11 03:48:11 2017 -0700 +++ b/hgext/strip.py Thu Oct 05 15:11:34 2017 +0200 @@ -58,16 +58,21 @@ raise error.Abort(_("local changed subrepos found" + excsuffix)) return s +def _findupdatetarget(repo, nodes): + unode, p2 = repo.changelog.parents(nodes[0]) + + if (util.safehasattr(repo, 'mq') and p2 != nullid + and p2 in [x.node for x in repo.mq.applied]): + unode = p2 + + return unode + def strip(ui, repo, revs, update=True, backup=True, force=None, bookmarks=None): with repo.wlock(), repo.lock(): if update: checklocalchanges(repo, force=force) - urev, p2 = repo.changelog.parents(revs[0]) - if (util.safehasattr(repo, 'mq') and - p2 != nullid - and p2 in [x.node for x in repo.mq.applied]): - urev = p2 + urev = _findupdatetarget(repo, revs) hg.clean(repo, urev) repo.dirstate.write(repo.currenttransaction()) @@ -196,10 +201,7 @@ revs = sorted(rootnodes) if update and opts.get('keep'): - urev, p2 = repo.changelog.parents(revs[0]) - if (util.safehasattr(repo, 'mq') and p2 != nullid - and p2 in [x.node for x in repo.mq.applied]): - urev = p2 + urev = _findupdatetarget(repo, revs) uctx = repo[urev] # only reset the dirstate for files that would actually change