Mercurial > hg
annotate hgext/censor.py @ 51269:db121ddd171e
censor: be more verbose about the other steps too
If we informs the user about head checking, we should tell him when the other
operation happens too. Otherwise the user can imagine to still be in the head
checking part.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 01 Dec 2023 22:46:46 +0100 |
parents | 622f00b350be |
children | ceeb8fa23cc8 |
rev | line source |
---|---|
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
1 # Copyright (C) 2015 - Mike Edgar <adgar@google.com> |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
2 # |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
3 # This extension enables removal of file content at a given revision, |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
4 # rewriting the data/metadata of successive revisions to preserve revision log |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
5 # integrity. |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
6 |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
7 """erase file content at a given revision |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
8 |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
9 The censor command instructs Mercurial to erase all content of a file at a given |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
10 revision *without updating the changeset hash.* This allows existing history to |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
11 remain valid while preventing future clones/pulls from receiving the erased |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
12 data. |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
13 |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
14 Typical uses for censor are due to security or legal requirements, including:: |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
15 |
26781
1aee2ab0f902
spelling: trivial spell checking
Mads Kiilerich <madski@unity3d.com>
parents:
26587
diff
changeset
|
16 * Passwords, private keys, cryptographic material |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
17 * Licensed data/code/libraries for which the license has expired |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
18 * Personally Identifiable Information or other private data |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
19 |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
20 Censored nodes can interrupt mercurial's typical operation whenever the excised |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
21 data needs to be materialized. Some commands, like ``hg cat``/``hg revert``, |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
22 simply fail when asked to produce censored data. Others, like ``hg verify`` and |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
23 ``hg update``, must be capable of tolerating censored data to continue to |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
24 function in a meaningful way. Such commands only tolerate censored file |
51266
51056bedbe0d
censor: mention that we check the heads in the help
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
25 As having a censored version in a checkout is impractical. The current head |
51056bedbe0d
censor: mention that we check the heads in the help
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
26 revisions of the repository are checked. If the revision to be censored is in |
51056bedbe0d
censor: mention that we check the heads in the help
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48875
diff
changeset
|
27 any of them the command will abort. |
43434
bec734015b70
censor: document that some commands simply ignore censored data
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
43077
diff
changeset
|
28 |
bec734015b70
censor: document that some commands simply ignore censored data
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
43077
diff
changeset
|
29 A few informative commands such as ``hg grep`` will unconditionally |
bec734015b70
censor: document that some commands simply ignore censored data
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
43077
diff
changeset
|
30 ignore censored data and merely report that it was encountered. |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
31 """ |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
32 |
28092
5166b7a84b72
censor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27290
diff
changeset
|
33 |
5166b7a84b72
censor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27290
diff
changeset
|
34 from mercurial.i18n import _ |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
35 from mercurial.node import short |
28092
5166b7a84b72
censor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27290
diff
changeset
|
36 |
5166b7a84b72
censor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27290
diff
changeset
|
37 from mercurial import ( |
5166b7a84b72
censor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27290
diff
changeset
|
38 error, |
48118
5105a9975407
errors: raise InputError from revsingle() iff revset provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
43434
diff
changeset
|
39 logcmdutil, |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32315
diff
changeset
|
40 registrar, |
28092
5166b7a84b72
censor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27290
diff
changeset
|
41 scmutil, |
5166b7a84b72
censor: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27290
diff
changeset
|
42 ) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
43 |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
44 cmdtable = {} |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32315
diff
changeset
|
45 command = registrar.command(cmdtable) |
29841
d5883fd055c6
extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents:
28092
diff
changeset
|
46 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
25186
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24890
diff
changeset
|
47 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24890
diff
changeset
|
48 # be specifying the version(s) of Mercurial they are tested with, or |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24890
diff
changeset
|
49 # leave the attribute unspecified. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
50 testedwith = b'ships-with-hg-core' |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
51 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
52 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
53 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
54 b'censor', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
55 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
56 ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
57 b'r', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
58 b'rev', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
59 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
60 _(b'censor file from specified revision'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
61 _(b'REV'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
62 ), |
51268
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
63 ( |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
64 b'', |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
65 b'check-heads', |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
66 True, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
67 _(b'check that repository heads are not affected'), |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
68 ), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
69 (b't', b'tombstone', b'', _(b'replacement tombstone data'), _(b'TEXT')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
70 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
71 _(b'-r REV [-t TEXT] [FILE]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
72 helpcategory=command.CATEGORY_MAINTENANCE, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
73 ) |
51268
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
74 def censor(ui, repo, path, rev=b'', tombstone=b'', check_heads=True, **opts): |
38441
e219e355e088
censor: use context manager for lock management
Matt Harbison <matt_harbison@yahoo.com>
parents:
37442
diff
changeset
|
75 with repo.wlock(), repo.lock(): |
51268
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
76 return _docensor( |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
77 ui, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
78 repo, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
79 path, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
80 rev, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
81 tombstone, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
82 check_heads=check_heads, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
83 **opts, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
84 ) |
27290
525d9b3f0a31
censor: make censor acquire locks before processing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
26781
diff
changeset
|
85 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
86 |
51268
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
87 def _docensor(ui, repo, path, rev=b'', tombstone=b'', check_heads=True, **opts): |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
88 if not path: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
89 raise error.Abort(_(b'must specify file path to censor')) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
90 if not rev: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
91 raise error.Abort(_(b'must specify revision to censor')) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
92 |
25806
5e18f6e39006
censor: make various path forms available like other Mercurial commands
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
25660
diff
changeset
|
93 wctx = repo[None] |
5e18f6e39006
censor: make various path forms available like other Mercurial commands
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
25660
diff
changeset
|
94 |
5e18f6e39006
censor: make various path forms available like other Mercurial commands
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
25660
diff
changeset
|
95 m = scmutil.match(wctx, (path,)) |
5e18f6e39006
censor: make various path forms available like other Mercurial commands
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
25660
diff
changeset
|
96 if m.anypats() or len(m.files()) != 1: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
97 raise error.Abort(_(b'can only specify an explicit filename')) |
25806
5e18f6e39006
censor: make various path forms available like other Mercurial commands
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
25660
diff
changeset
|
98 path = m.files()[0] |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
99 flog = repo.file(path) |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
100 if not len(flog): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
101 raise error.Abort(_(b'cannot censor file with no history')) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
102 |
48118
5105a9975407
errors: raise InputError from revsingle() iff revset provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
43434
diff
changeset
|
103 rev = logcmdutil.revsingle(repo, rev, rev).rev() |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
104 try: |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
105 ctx = repo[rev] |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
106 except KeyError: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
107 raise error.Abort(_(b'invalid revision identifier %s') % rev) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
108 |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
109 try: |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
110 fctx = ctx.filectx(path) |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
111 except error.LookupError: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
112 raise error.Abort(_(b'file does not exist at revision %s') % rev) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
113 |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
114 fnode = fctx.filenode() |
51268
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
115 if check_heads: |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
116 heads = [] |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
117 repo_heads = repo.heads() |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
118 msg = b'checking for the censored content in %d heads\n' |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
119 msg %= len(repo_heads) |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
120 ui.status(msg) |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
121 for headnode in repo_heads: |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
122 hc = repo[headnode] |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
123 if path in hc and hc.filenode(path) == fnode: |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
124 heads.append(hc) |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
125 if heads: |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
126 headlist = b', '.join([short(c.node()) for c in heads]) |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
127 raise error.Abort( |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
128 _(b'cannot censor file in heads (%s)') % headlist, |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
129 hint=_(b'clean/delete and commit first'), |
622f00b350be
censor: add a command flag to skip the head checks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51267
diff
changeset
|
130 ) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
131 |
51269
db121ddd171e
censor: be more verbose about the other steps too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51268
diff
changeset
|
132 msg = b'checking for the censored content in the working directory\n' |
db121ddd171e
censor: be more verbose about the other steps too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51268
diff
changeset
|
133 ui.status(msg) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
134 wp = wctx.parents() |
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
135 if ctx.node() in [p.node() for p in wp]: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
136 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
137 _(b'cannot censor working directory'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
138 hint=_(b'clean/delete/update first'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
40293
diff
changeset
|
139 ) |
24347
1bcfecbbf569
censor: add censor command to hgext with basic client-side tests
Mike Edgar <adgar@google.com>
parents:
diff
changeset
|
140 |
51269
db121ddd171e
censor: be more verbose about the other steps too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51268
diff
changeset
|
141 msg = b'censoring 1 file revision\n' |
db121ddd171e
censor: be more verbose about the other steps too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51268
diff
changeset
|
142 ui.status(msg) |
39778
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39661
diff
changeset
|
143 with repo.transaction(b'censor') as tr: |
a6b3c4c1019f
revlog: move censor logic out of censor extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39661
diff
changeset
|
144 flog.censorrevision(tr, fnode, tombstone=tombstone) |