changeset 26025:ba8089433090 stable

largefiles: ensure lfutil.getstandinmatcher() only matches standins Previously, simply having the largefiles extension loaded without any largefiles added would crash when amending with -I. The problem was with no files in the matcher, the pattern list of files joined with 'standindir' was empty, and scmutil.match() would match everything. In lfutil.composestandinmatcher(), the match function is used to test if the file is a standin, and after getting a false positive, proceeds to call lfutil.splitstandin(). This returns None because it isn't a standin, which blows up when passed to rmatcher.matchfn(). Manually overriding _always in getstandinmatcher() probably isn't necessary anymore, but we leave well enough alone on stable. This regressed in ab618e52788a.
author Matt Harbison <matt_harbison@yahoo.com>
date Wed, 12 Aug 2015 12:26:39 -0400
parents d815a5997576
children d08e7449ff27
files hgext/largefiles/lfutil.py tests/test-histedit-fold.t
diffstat 2 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/largefiles/lfutil.py	Sat Aug 08 14:50:03 2015 -0700
+++ b/hgext/largefiles/lfutil.py	Wed Aug 12 12:26:39 2015 -0400
@@ -247,6 +247,8 @@
 
     if rmatcher and not rmatcher.always():
         pats = [os.path.join(standindir, pat) for pat in rmatcher.files()]
+        if not pats:
+            pats = [standindir]
         match = scmutil.match(repo[None], pats, badfn=badfn)
         # if pats is empty, it would incorrectly always match, so clear _always
         match._always = False
--- a/tests/test-histedit-fold.t	Sat Aug 08 14:50:03 2015 -0700
+++ b/tests/test-histedit-fold.t	Wed Aug 12 12:26:39 2015 -0400
@@ -505,4 +505,8 @@
   1:9599899f62c0 a
   0:79b99e9c8e49 b
 
+  $ echo "foo" > amended.txt
+  $ hg add amended.txt
+  $ hg ci -q --config extensions.largefiles= --amend -I amended.txt
+
   $ cd ..