diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py +++ b/hgext/largefiles/overrides.py @@ -304,17 +304,31 @@ def overridelog(orig, ui, repo, *pats, * return matchandpats pats = set(p) - # TODO: handling of patterns in both cases below + + def fixpats(pat, tostandin=lfutil.standin): + kindpat = match_._patsplit(pat, None) + + if kindpat[0] is not None: + return kindpat[0] + ':' + tostandin(kindpat[1]) + return tostandin(kindpat[1]) + if m._cwd: if os.path.isabs(m._cwd): # TODO: handle largefile magic when invoked from other cwd return matchandpats back = (m._cwd.count('/') + 1) * '../' - pats.update(back + lfutil.standin(m._cwd + '/' + f) for f in p) + + def tostandin(f): + return back + lfutil.standin(m._cwd + '/' + f) + + pats.update(fixpats(f, tostandin) for f in p) else: - pats.update(lfutil.standin(f) for f in p) + pats.update(fixpats(f) for f in p) for i in range(0, len(m._files)): + # Don't add '.hglf' to m.files, since that is already covered by '.' + if m._files[i] == '.': + continue standin = lfutil.standin(m._files[i]) # If the "standin" is a directory, append instead of replace to # support naming a directory on the command line with only @@ -325,7 +339,6 @@ def overridelog(orig, ui, repo, *pats, * elif m._files[i] not in repo[ctx.node()] \ and repo.wvfs.isdir(standin): m._files.append(standin) - pats.add(standin) m._fmap = set(m._files) m._always = False diff --git a/tests/test-largefiles-misc.t b/tests/test-largefiles-misc.t --- a/tests/test-largefiles-misc.t +++ b/tests/test-largefiles-misc.t @@ -458,6 +458,22 @@ Test actions on largefiles using relativ | date: Thu Jan 01 00:00:00 1970 +0000 | summary: anotherlarge | + + $ hg log glob:another* + changeset: 1:9627a577c5e9 + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: anotherlarge + + $ hg log -G glob:another* + @ changeset: 1:9627a577c5e9 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: anotherlarge + | + $ echo more >> anotherlarge $ hg st . M anotherlarge @@ -468,6 +484,22 @@ Test actions on largefiles using relativ ? sub/anotherlarge.orig $ cd .. +Test glob logging from the root dir + $ hg log glob:**another* + changeset: 1:9627a577c5e9 + tag: tip + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: anotherlarge + + $ hg log -G glob:**another* + @ changeset: 1:9627a577c5e9 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: anotherlarge + | + $ cd .. Check error message while exchange diff --git a/tests/test-log.t b/tests/test-log.t --- a/tests/test-log.t +++ b/tests/test-log.t @@ -58,6 +58,28 @@ Make sure largefiles doesn't interfere w date: Thu Jan 01 00:00:01 1970 +0000 summary: a + $ hg log glob:a* + changeset: 3:2ca5ba701980 + user: test + date: Thu Jan 01 00:00:04 1970 +0000 + summary: d + + changeset: 0:9161b9aeaf16 + user: test + date: Thu Jan 01 00:00:01 1970 +0000 + summary: a + + $ hg log glob:a* --config extensions.largefiles= + changeset: 3:2ca5ba701980 + user: test + date: Thu Jan 01 00:00:04 1970 +0000 + summary: d + + changeset: 0:9161b9aeaf16 + user: test + date: Thu Jan 01 00:00:01 1970 +0000 + summary: a + log on directory $ hg log dir