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()".
--- 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