largefiles: avoid redundant "updatelfiles" invocation in "overridetransplant"
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sat, 08 Nov 2014 00:48:38 +0900
changeset 23273 236c978bceca
parent 23272 394c79df66c3
child 23274 0ec2e124fcc0
largefiles: avoid redundant "updatelfiles" invocation in "overridetransplant" At "hg transplant --merge REV", largefiles newly coming from the 2nd parent (= REV) are marked as "a"(dded) by "patch.patch()", and have to be marked as "n"(ormal) after commit. But until changeset 3100d1cbce32, such largefiles were still marked as "a" unexpectedly even after commit, because no additional entry is added to filelog of such largefiles and they aren't listed in "repo[newnode].files()" in this case: "newnode" is one of newly committed changeset (= result of "repo.commit()"). "updatelfiles" invocation in "overridetransplant" shadows this problem by forcibly synchronizing lfdirstate to dirstate. Now, "updatelfiles" invocation in "overridetransplant" is redundant, because changeset 3100d1cbce32 made "markcommitted" use "ctx.files()" to get targets of "synclfdirstate" instead of "repo[newnode].files()".
hgext/largefiles/lfutil.py
hgext/largefiles/overrides.py
tests/test-largefiles.t
--- a/hgext/largefiles/lfutil.py	Wed Nov 12 15:18:30 2014 -0600
+++ b/hgext/largefiles/lfutil.py	Sat Nov 08 00:48:38 2014 +0900
@@ -392,6 +392,15 @@
 
     orig(node)
 
+    # ATTENTION: "ctx.files()" may differ from "repo[node].files()"
+    # because files coming from the 2nd parent are omitted in the latter.
+    #
+    # The former should be used to get targets of "synclfdirstate",
+    # because such files:
+    # - are marked as "a" by "patch.patch()" (e.g. via transplant), and
+    # - have to be marked as "n" after commit, but
+    # - aren't listed in "repo[node].files()"
+
     lfdirstate = openlfdirstate(repo.ui, repo)
     for f in ctx.files():
         if isstandin(f):
--- a/hgext/largefiles/overrides.py	Wed Nov 12 15:18:30 2014 -0600
+++ b/hgext/largefiles/overrides.py	Sat Nov 08 00:48:38 2014 +0900
@@ -1169,13 +1169,8 @@
 
 def overridetransplant(orig, ui, repo, *revs, **opts):
     try:
-        oldstandins = lfutil.getstandinsstate(repo)
         repo._istransplanting = True
         result = orig(ui, repo, *revs, **opts)
-        newstandins = lfutil.getstandinsstate(repo)
-        filelist = lfutil.getlfilestoupdate(oldstandins, newstandins)
-        lfcommands.updatelfiles(repo.ui, repo, filelist=filelist,
-                                printmessage=True)
     finally:
         repo._istransplanting = False
     return result
--- a/tests/test-largefiles.t	Wed Nov 12 15:18:30 2014 -0600
+++ b/tests/test-largefiles.t	Sat Nov 08 00:48:38 2014 +0900
@@ -1740,8 +1740,6 @@
   adding manifests
   adding file changes
   added 1 changesets with 2 changes to 2 files
-  getting changed largefiles
-  0 largefiles updated, 0 removed
   $ hg log --template '{rev}:{node|short}  {desc|firstline}\n'
   9:598410d3eb9a  modify normal file largefile in repo d
   8:a381d2c8c80e  modify normal file and largefile in repo b