changeset 32827: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 0ce2cbebd749 74930cf4a10e
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