largefiles: ensure lfutil.getstandinmatcher() only matches standins stable
authorMatt Harbison <matt_harbison@yahoo.com>
Wed, 12 Aug 2015 12:26:39 -0400
branchstable
changeset 26025 ba8089433090
parent 26012 d815a5997576
child 26026 d08e7449ff27
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.
hgext/largefiles/lfutil.py
tests/test-histedit-fold.t
--- 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 ..