Patchwork D7828: rebase: remove some redundant setting of dirstate parents

login
register
mail settings
Submitter phabricator
Date Jan. 11, 2020, 6:48 a.m.
Message ID <differential-rev-PHID-DREV-xa53hirzoisssrjlx2ze-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/44253/
State New
Headers show

Comments

phabricator - Jan. 11, 2020, 6:48 a.m.
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




To: martinvonz, #hg-reviewers
Cc: mercurial-devel
phabricator - Jan. 14, 2020, 5:35 p.m.
martinvonz added a comment.
martinvonz planned changes to this revision.


  I'll rebase this on top of the series with D7859 <https://phab.mercurial-scm.org/D7859>, which should make the test impact go away.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7828/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7828

To: martinvonz, #hg-reviewers
Cc: mercurial-devel

Patch

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