graftcopies: remove `skip` and `repo` arguments
authorMartin von Zweigbergk <martinvonz@google.com>
Fri, 27 Dec 2019 13:47:59 -0800
changeset 44092 833210fbd900
parent 44091 3df0bd706c40
child 44093 06e7e7652ac0
graftcopies: remove `skip` and `repo` arguments The `skip` argument was added in 2ba6c9b4e0eb (rebase: fix bug that caused transitive copy records to disappear (issue4192), 2014-06-07) in order to fix https://bz.mercurial-scm.org/show_bug.cgi?id=4192. I ran tests at that commit without the `skiprev` argument and the only difference I noticed was that `test-rebase-collapse.t` failed differently, in the call that is now on line 501. Without the `skiprev` argument, that call would end up creating another commit because it tried to record an invalid copy. With the previous patch in this series, such invalid copies are no longer recorded, so it seems we don't need the `skip` argument anymore. I also removed the `repo` argument since that also becomes unused with the removal of the `skip` argument. Differential Revision: https://phab.mercurial-scm.org/D7860
hgext/fix.py
hgext/rebase.py
mercurial/copies.py
mercurial/merge.py
relnotes/next
--- a/hgext/fix.py	Fri Dec 27 15:14:19 2019 -0800
+++ b/hgext/fix.py	Fri Dec 27 13:47:59 2019 -0800
@@ -734,8 +734,7 @@
     extra[b'fix_source'] = ctx.hex()
 
     wctx = context.overlayworkingctx(repo)
-    newp1ctx = repo[newp1node]
-    wctx.setbase(newp1ctx)
+    wctx.setbase(repo[newp1node])
     merge.update(
         repo,
         ctx.rev(),
@@ -745,7 +744,7 @@
         mergeancestor=False,
         wc=wctx,
     )
-    copies.graftcopies(repo, wctx, ctx, ctx.p1(), skip=newp1ctx)
+    copies.graftcopies(wctx, ctx, ctx.p1())
 
     for path in filedata.keys():
         fctx = ctx[path]
--- a/hgext/rebase.py	Fri Dec 27 15:14:19 2019 -0800
+++ b/hgext/rebase.py	Fri Dec 27 13:47:59 2019 -0800
@@ -1497,16 +1497,13 @@
         labels=[b'dest', b'source'],
         wc=wctx,
     )
-    destctx = repo[dest]
     if collapse:
-        copies.graftcopies(repo, wctx, ctx, destctx)
+        copies.graftcopies(wctx, ctx, repo[dest])
     else:
         # If we're not using --collapse, we need to
         # duplicate copies between the revision we're
-        # rebasing and its first parent, but *not*
-        # duplicate any copies that have already been
-        # performed in the destination.
-        copies.graftcopies(repo, wctx, ctx, ctx.p1(), skip=destctx)
+        # rebasing and its first parent.
+        copies.graftcopies(wctx, ctx, ctx.p1())
     return stats
 
 
--- a/mercurial/copies.py	Fri Dec 27 15:14:19 2019 -0800
+++ b/mercurial/copies.py	Fri Dec 27 13:47:59 2019 -0800
@@ -856,30 +856,11 @@
         return False
 
 
-def graftcopies(repo, wctx, ctx, base, skip=None):
-    """reproduce copies between base and ctx in the wctx
-
-    If skip is specified, it's a revision that should be used to
-    filter copy records. Any copies that occur between base and
-    skip will not be duplicated, even if they appear in the set of
-    copies between base and ctx.
-    """
-    exclude = {}
-    ctraceconfig = repo.ui.config(b'experimental', b'copytrace')
-    bctrace = stringutil.parsebool(ctraceconfig)
-    if skip is not None and (
-        ctraceconfig == b'heuristics' or bctrace or bctrace is None
-    ):
-        # copytrace='off' skips this line, but not the entire function because
-        # the line below is O(size of the repo) during a rebase, while the rest
-        # of the function is much faster (and is required for carrying copy
-        # metadata across the rebase anyway).
-        exclude = pathcopies(base, skip)
+def graftcopies(wctx, ctx, base):
+    """reproduce copies between base and ctx in the wctx"""
     new_copies = pathcopies(base, ctx)
     _filter(wctx.p1(), wctx, new_copies)
     for dst, src in pycompat.iteritems(new_copies):
-        if dst in exclude:
-            continue
         wctx[dst].markcopied(src)
 
 
--- a/mercurial/merge.py	Fri Dec 27 15:14:19 2019 -0800
+++ b/mercurial/merge.py	Fri Dec 27 13:47:59 2019 -0800
@@ -2635,7 +2635,7 @@
         repo.setparents(pctx.node(), pother)
         repo.dirstate.write(repo.currenttransaction())
         # fix up dirstate for copies and renames
-        copies.graftcopies(repo, wctx, ctx, base)
+        copies.graftcopies(wctx, ctx, base)
     return stats
 
 
--- a/relnotes/next	Fri Dec 27 15:14:19 2019 -0800
+++ b/relnotes/next	Fri Dec 27 13:47:59 2019 -0800
@@ -31,4 +31,5 @@
 
  * `copies.duplicatecopies()` was renamed to
    `copies.graftcopies()`. Its arguments changed from revision numbers
-   to context objects.
+   to context objects. It also lost its `repo` and `skip` arguments
+   (they should no longer be needed).