hgext/largefiles/overrides.py
branchstable
changeset 18491 b7da9c042b9e
parent 18459 c9db897d5a43
child 18540 139529b0a191
child 18721 2dc7f63181b9
--- a/hgext/largefiles/overrides.py	Fri Jan 25 16:59:34 2013 +0100
+++ b/hgext/largefiles/overrides.py	Fri Jan 25 18:20:13 2013 +0100
@@ -1149,10 +1149,25 @@
 
 def overridecat(orig, ui, repo, file1, *pats, **opts):
     ctx = scmutil.revsingle(repo, opts.get('rev'))
-    if not lfutil.standin(file1) in ctx:
-        result = orig(ui, repo, file1, *pats, **opts)
-        return result
-    return lfcommands.catlfile(repo, file1, ctx.rev(), opts.get('output'))
+    err = 1
+    notbad = set()
+    m = scmutil.match(ctx, (file1,) + pats, opts)
+    origmatchfn = m.matchfn
+    def lfmatchfn(f):
+        lf = lfutil.splitstandin(f)
+        if lf is None:
+            return origmatchfn(f)
+        notbad.add(lf)
+        return origmatchfn(lf)
+    m.matchfn = lfmatchfn
+    m.bad = lambda f, msg: f not in notbad
+    for f in ctx.walk(m):
+        lf = lfutil.splitstandin(f)
+        if lf is None:
+            err = orig(ui, repo, f, **opts)
+        else:
+            err = lfcommands.catlfile(repo, lf, ctx.rev(), opts.get('output'))
+    return err
 
 def mercurialsinkbefore(orig, sink):
     sink.repo._isconverting = True