D7828: rebase: remove some redundant setting of dirstate parents

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Sat Jan 11 01:48:05 EST 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