D7828: rebase: remove some redundant setting of dirstate parents
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Sat Jan 11 06:48:05 UTC 2020
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Since we're now setting the dirstate parents to its correct values
from the beginning (right after `merge.update()`), we usually don't
need to set them again before committing. The only case we need to
care about is when committing collapsed commits. So we can remove the
`setparents()` calls just before committing and add one only for the
collapse case.
The test impact in test-copytrace-heuristics.t is because we now don't
call repo.setparents() as late and repo.setparents() does some
filtering of invalid copies that we're now missing out on. I'll
address that later (we already have that warning in lots of places).
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D7828
AFFECTED FILES
hgext/rebase.py
tests/test-copytrace-heuristics.t
CHANGE DETAILS
diff --git a/tests/test-copytrace-heuristics.t b/tests/test-copytrace-heuristics.t
--- a/tests/test-copytrace-heuristics.t
+++ b/tests/test-copytrace-heuristics.t
@@ -290,6 +290,7 @@
$ hg rebase -s 1 -d 2
rebasing 1:472e38d57782 "mv a b"
+ warning: can't find ancestor for 'b' copied from 'a'!
saved backup bundle to $TESTTMP/repo/.hg/strip-backup/472e38d57782-17d50e29-rebase.hg
$ hg up -q c492ed3c7e35dcd1dc938053b8adf56e2cfbd062
$ ls
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -696,6 +696,7 @@
editor = cmdutil.getcommiteditor(edit=editopt, editform=editform)
revtoreuse = max(self.state)
+ self.wctx.setparents(repo[p1].node(), repo[self.external].node())
newnode = self._concludenode(
revtoreuse, p1, self.external, editor, commitmsg=commitmsg
)
@@ -1433,7 +1434,6 @@
if b'branch' in extra:
branch = extra[b'branch']
- wctx.setparents(repo[p1].node(), repo[p2].node())
memctx = wctx.tomemctx(
commitmsg,
date=date,
@@ -1454,8 +1454,6 @@
if not repo.ui.configbool(b'rebase', b'singletransaction'):
dsguard = dirstateguard.dirstateguard(repo, b'rebase')
with dsguard:
- repo.setparents(repo[p1].node(), repo[p2].node())
-
# Commit might fail if unresolved files exist
newnode = repo.commit(
text=commitmsg, user=user, date=date, extra=extra, editor=editor
To: martinvonz, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list