Mercurial > hg-stable
changeset 32145:d3ab31bf9c0e stable
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.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Tue, 13 Jun 2017 22:24:41 -0400 |
parents | efebc9f52ecb |
children | 74930cf4a10e 0ce2cbebd749 |
files | hgext/largefiles/overrides.py tests/test-largefiles-misc.t |
diffstat | 2 files changed, 6 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/largefiles/overrides.py Mon Jun 12 11:24:21 2017 -0700 +++ b/hgext/largefiles/overrides.py Tue Jun 13 22:24:41 2017 -0400 @@ -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',))
--- a/tests/test-largefiles-misc.t Mon Jun 12 11:24:21 2017 -0700 +++ b/tests/test-largefiles-misc.t Tue Jun 13 22:24:41 2017 -0400 @@ -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