[PATCH STABLE] largefiles: avoid a crash when archiving a subrepo with largefiles disabled
Matt Harbison
mharbison72 at gmail.com
Wed Jun 14 04:29:15 UTC 2017
# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1497407081 14400
# Tue Jun 13 22:24:41 2017 -0400
# Branch stable
# Node ID ae904143fdc12bd46cac831ee20a666adc879339
# Parent efebc9f52ecbbbe90fcb83c6a6202f2ec948bbc5
largefiles: avoid a crash when archiving a subrepo with largefiles disabled
This path is also used for extdiff, which is how I crossed paths with it.
Without this, an AttributeError occurs looking for 'lfstatus' on
localrepository. See also d414c28db84d.
The other archive method is for the archival.py override, so it doesn't need to
be special cased like this. (It looks like it is only called for the top level
repo.) Likewise, the transplant override is also for commands.py. The other
overrides set lfstatus before examining it.
diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -1009,7 +1009,8 @@
archiver.done()
def hgsubrepoarchive(orig, repo, archiver, prefix, match=None, decode=True):
- if not repo._repo.lfstatus:
+ lfenabled = util.safehasattr(repo._repo, '_largefilesenabled')
+ if not lfenabled or not repo._repo.lfstatus:
return orig(repo, archiver, prefix, match, decode)
repo._get(repo._state + ('hg',))
diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t
--- a/tests/test-largefiles-misc.t
+++ b/tests/test-largefiles-misc.t
@@ -1075,6 +1075,10 @@
$ hg -R subrepo-root status -S
M large
M no-largefiles/normal1
+ $ hg -R subrepo-root extdiff -p echo -S --config extensions.extdiff=
+ "*\\no-largefiles\\normal1" "*\\no-largefiles\\normal1" (glob) (windows !)
+ */no-largefiles/normal1 */no-largefiles/normal1 (glob) (no-windows !)
+ [1]
$ hg -R subrepo-root revert --all
reverting subrepo-root/.hglf/large (glob)
reverting subrepo no-largefiles
More information about the Mercurial-devel
mailing list