Comments
Patch
@@ -47,6 +47,12 @@
if not rev:
raise util.Abort(_('must specify revision to censor'))
+ wctx = repo[None]
+
+ m = scmutil.match(wctx, (path,))
+ if m.anypats() or len(m.files()) != 1:
+ raise util.Abort(_('can only specify an explicit filename'))
+ path = m.files()[0]
flog = repo.file(path)
if not len(flog):
raise util.Abort(_('cannot censor file with no history'))
@@ -70,7 +76,6 @@
raise util.Abort(_('cannot censor file in heads (%s)') % headlist,
hint=_('clean/delete and commit first'))
- wctx = repo[None]
wp = wctx.parents()
if ctx.node() in [p.node() for p in wp]:
raise util.Abort(_('cannot censor working directory'),
@@ -72,7 +72,10 @@
Censor revision with 2 offenses
- $ hg censor -r $C2 -t "remove password" target
+(this also tests file pattern matching: path relative to cwd case)
+
+ $ mkdir -p foo/bar/baz
+ $ hg --cwd foo/bar/baz censor -r $C2 -t "remove password" ../../../target
$ hg cat -r $H1 target
Tainted file is now sanitized
$ hg cat -r $H2 target
@@ -89,7 +92,9 @@
Censor revision with 1 offense
- $ hg censor -r $C1 target
+(this also tests file pattern matching: with 'path:' scheme)
+
+ $ hg --cwd foo/bar/baz censor -r $C1 path:target
$ hg cat -r $H1 target
Tainted file is now sanitized
$ hg cat -r $H2 target