--- a/hgext/largefiles/overrides.py Thu Aug 14 15:21:48 2014 -0500
+++ b/hgext/largefiles/overrides.py Thu Aug 14 16:25:47 2014 -0500
@@ -267,6 +267,11 @@
matchandpats = oldmatchandpats(ctx, pats, opts, globbed, default)
m, p = copy.copy(matchandpats)
+ if m.always():
+ # We want to match everything anyway, so there's no benefit trying
+ # to add standins.
+ return matchandpats
+
pats = set(p)
# TODO: handling of patterns in both cases below
if m._cwd:
@@ -299,13 +304,25 @@
return m, pats
+ # For hg log --patch, the match object is used in two different senses:
+ # (1) to determine what revisions should be printed out, and
+ # (2) to determine what files to print out diffs for.
+ # The magic matchandpats override should be used for case (1) but not for
+ # case (2).
+ def overridemakelogfilematcher(repo, pats, opts):
+ pctx = repo[None]
+ match, pats = oldmatchandpats(pctx, pats, opts)
+ return lambda rev: match
+
oldmatchandpats = installmatchandpatsfn(overridematchandpats)
+ oldmakelogfilematcher = cmdutil._makenofollowlogfilematcher
+ setattr(cmdutil, '_makenofollowlogfilematcher', overridemakelogfilematcher)
+
try:
- repo.lfstatus = True
return orig(ui, repo, *pats, **opts)
finally:
- repo.lfstatus = False
restorematchandpatsfn()
+ setattr(cmdutil, '_makenofollowlogfilematcher', oldmakelogfilematcher)
def overrideverify(orig, ui, repo, *pats, **opts):
large = opts.pop('large', False)
--- a/mercurial/cmdutil.py Thu Aug 14 15:21:48 2014 -0500
+++ b/mercurial/cmdutil.py Thu Aug 14 16:25:47 2014 -0500
@@ -1500,7 +1500,7 @@
return iterate()
-def _makelogfilematcher(repo, files, followfirst):
+def _makefollowlogfilematcher(repo, files, followfirst):
# When displaying a revision with --patch --follow FILE, we have
# to know which file of the revision must be diffed. With
# --follow, we want the names of the ancestors of FILE in the
@@ -1527,6 +1527,10 @@
return filematcher
+def _makenofollowlogfilematcher(repo, pats, opts):
+ '''hook for extensions to override the filematcher for non-follow cases'''
+ return None
+
def _makelogrevset(repo, pats, opts, revs):
"""Return (expr, filematcher) where expr is a revset string built
from log options and file patterns or None. If --stat or --patch
@@ -1646,9 +1650,12 @@
if follow and not match.always() and not slowpath:
# _makelogfilematcher expects its files argument to be relative to
# the repo root, so use match.files(), not pats.
- filematcher = _makelogfilematcher(repo, match.files(), followfirst)
+ filematcher = _makefollowlogfilematcher(repo, match.files(),
+ followfirst)
else:
- filematcher = lambda rev: match
+ filematcher = _makenofollowlogfilematcher(repo, pats, opts)
+ if filematcher is None:
+ filematcher = lambda rev: match
expr = []
for op, val in opts.iteritems():
--- a/tests/test-largefiles.t Thu Aug 14 15:21:48 2014 -0500
+++ b/tests/test-largefiles.t Thu Aug 14 16:25:47 2014 -0500
@@ -724,6 +724,197 @@
|
o 0:30d30fe6a5be add files
+
+Test log with --patch
+
+ $ hg log --patch -r 6::7
+ changeset: 6:4355d653f84f
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: edit files yet again
+
+ diff -r 9d5af5072dbd -r 4355d653f84f .hglf/large3
+ --- a/.hglf/large3 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/large3 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -baaf12afde9d8d67f25dab6dced0d2bf77dba47c
+ +7838695e10da2bb75ac1156565f40a2595fa2fa0
+ diff -r 9d5af5072dbd -r 4355d653f84f .hglf/sub/large4
+ --- a/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -aeb2210d19f02886dde00dac279729a48471e2f9
+ +971fb41e78fea4f8e0ba5244784239371cb00591
+ diff -r 9d5af5072dbd -r 4355d653f84f normal3
+ --- a/normal3 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/normal3 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -normal3
+ +normal33
+ diff -r 9d5af5072dbd -r 4355d653f84f sub/normal4
+ --- a/sub/normal4 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/sub/normal4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -normal4
+ +normal44
+
+ changeset: 7:daea875e9014
+ tag: tip
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: add/edit more largefiles
+
+ diff -r 4355d653f84f -r daea875e9014 .hglf/large3
+ --- a/.hglf/large3 Thu Jan 01 00:00:00 1970 +0000
+ +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +0,0 @@
+ -7838695e10da2bb75ac1156565f40a2595fa2fa0
+ diff -r 4355d653f84f -r daea875e9014 .hglf/sub2/large6
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub2/large6 Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +0d6d75887db61b2c7e6c74b5dd8fc6ad50c0cc30
+ diff -r 4355d653f84f -r daea875e9014 .hglf/sub2/large7
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub2/large7 Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +bb3151689acb10f0c3125c560d5e63df914bc1af
+
+
+ $ hg log --patch -r 6::7 sub/
+ changeset: 6:4355d653f84f
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: edit files yet again
+
+ diff -r 9d5af5072dbd -r 4355d653f84f .hglf/sub/large4
+ --- a/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -aeb2210d19f02886dde00dac279729a48471e2f9
+ +971fb41e78fea4f8e0ba5244784239371cb00591
+ diff -r 9d5af5072dbd -r 4355d653f84f sub/normal4
+ --- a/sub/normal4 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/sub/normal4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -normal4
+ +normal44
+
+
+log with both --follow and --patch
+
+ $ hg log --follow --patch --limit 2
+ changeset: 7:daea875e9014
+ tag: tip
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: add/edit more largefiles
+
+ diff -r 4355d653f84f -r daea875e9014 .hglf/large3
+ --- a/.hglf/large3 Thu Jan 01 00:00:00 1970 +0000
+ +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +0,0 @@
+ -7838695e10da2bb75ac1156565f40a2595fa2fa0
+ diff -r 4355d653f84f -r daea875e9014 .hglf/sub2/large6
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub2/large6 Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +0d6d75887db61b2c7e6c74b5dd8fc6ad50c0cc30
+ diff -r 4355d653f84f -r daea875e9014 .hglf/sub2/large7
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub2/large7 Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +bb3151689acb10f0c3125c560d5e63df914bc1af
+
+ changeset: 6:4355d653f84f
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: edit files yet again
+
+ diff -r 9d5af5072dbd -r 4355d653f84f .hglf/large3
+ --- a/.hglf/large3 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/large3 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -baaf12afde9d8d67f25dab6dced0d2bf77dba47c
+ +7838695e10da2bb75ac1156565f40a2595fa2fa0
+ diff -r 9d5af5072dbd -r 4355d653f84f .hglf/sub/large4
+ --- a/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -aeb2210d19f02886dde00dac279729a48471e2f9
+ +971fb41e78fea4f8e0ba5244784239371cb00591
+ diff -r 9d5af5072dbd -r 4355d653f84f normal3
+ --- a/normal3 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/normal3 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -normal3
+ +normal33
+ diff -r 9d5af5072dbd -r 4355d653f84f sub/normal4
+ --- a/sub/normal4 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/sub/normal4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -normal4
+ +normal44
+
+ $ hg log --follow --patch sub/large4
+ changeset: 6:4355d653f84f
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: edit files yet again
+
+ diff -r 9d5af5072dbd -r 4355d653f84f .hglf/sub/large4
+ --- a/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -aeb2210d19f02886dde00dac279729a48471e2f9
+ +971fb41e78fea4f8e0ba5244784239371cb00591
+
+ changeset: 5:9d5af5072dbd
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: edit files again
+
+ diff -r 74c02385b94c -r 9d5af5072dbd .hglf/sub/large4
+ --- a/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
+ +aeb2210d19f02886dde00dac279729a48471e2f9
+
+ changeset: 4:74c02385b94c
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: move files
+
+ diff -r 9e8fbc4bce62 -r 74c02385b94c .hglf/sub/large4
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub/large4 Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
+
+ changeset: 1:ce8896473775
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: edit files
+
+ diff -r 30d30fe6a5be -r ce8896473775 .hglf/sub/large2
+ --- a/.hglf/sub/large2 Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub/large2 Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -1deebade43c8c498a3c8daddac0244dc55d1331d
+ +eb7338044dc27f9bc59b8dd5a246b065ead7a9c4
+
+ changeset: 0:30d30fe6a5be
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: add files
+
+ diff -r 000000000000 -r 30d30fe6a5be .hglf/sub/large2
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+ +++ b/.hglf/sub/large2 Thu Jan 01 00:00:00 1970 +0000
+ @@ -0,0 +1,1 @@
+ +1deebade43c8c498a3c8daddac0244dc55d1331d
+
$ cat sub/normal4
normal44
$ cat sub/large4
--- a/tests/test-run-tests.t Thu Aug 14 15:21:48 2014 -0500
+++ b/tests/test-run-tests.t Thu Aug 14 16:25:47 2014 -0500
@@ -33,8 +33,8 @@
$ $TESTDIR/run-tests.py --with-hg=`which hg`
- --- $TESTTMP/test-failure.t
- +++ $TESTTMP/test-failure.t.err
+ --- $TESTTMP/test-failure.t (glob)
+ +++ $TESTTMP/test-failure.t.err (glob)
@@ -1,4 +1,4 @@
$ echo babar
- rataxes
@@ -87,8 +87,8 @@
$ $TESTDIR/run-tests.py --with-hg=`which hg` --retest
- --- $TESTTMP/test-failure.t
- +++ $TESTTMP/test-failure.t.err
+ --- $TESTTMP/test-failure.t (glob)
+ +++ $TESTTMP/test-failure.t.err (glob)
@@ -1,4 +1,4 @@
$ echo babar
- rataxes
@@ -121,8 +121,8 @@
$ $TESTDIR/run-tests.py --with-hg=`which hg` test-failure.t
- --- $TESTTMP/test-failure.t
- +++ $TESTTMP/test-failure.t.err
+ --- $TESTTMP/test-failure.t (glob)
+ +++ $TESTTMP/test-failure.t.err (glob)
@@ -1,4 +1,4 @@
$ echo babar
- rataxes