Mercurial > hg-stable
annotate hgext/keyword.py @ 52182:fa58f4f97337 stable tip
ci: shard the test run on mac os X
This should comes with some benefit:
- spread the load across more runner,
- reduce the real-time CI run,
- reduce the "retry" run when we need them.
We start with the Mac jobs, but that would be tremendously useful for Windows
too.
For linux, we need to reduce the startup overhead for this to be worth it.
Building smaller image and speeding up clone should help with that.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 08 Nov 2024 17:08:11 +0100 |
parents | 8b7123c8947b |
children |
rev | line source |
---|---|
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
1 # keyword.py - $Keyword$ expansion for Mercurial |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
2 # |
23723
fd62b3e750af
keyword: update copyright year
Christian Ebert <blacktrash@gmx.net>
parents:
23722
diff
changeset
|
3 # Copyright 2007-2015 Christian Ebert <blacktrash@gmx.net> |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
8209
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
7 # |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
8 # $Id$ |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
9 # |
17424
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
17057
diff
changeset
|
10 # Keyword expansion hack against the grain of a Distributed SCM |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
11 # |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
12 # There are many good reasons why this is not needed in a distributed |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
13 # SCM, still it may be useful in very small projects based on single |
7993
b83a11536fc6
keyword: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7853
diff
changeset
|
14 # files (like LaTeX packages), that are mostly addressed to an |
b83a11536fc6
keyword: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7853
diff
changeset
|
15 # audience not running a version control system. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
16 # |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
17 # For in-depth discussion refer to |
26421
4b0fc75f9403
urls: bulk-change primary website URLs
Matt Mackall <mpm@selenic.com>
parents:
25186
diff
changeset
|
18 # <https://mercurial-scm.org/wiki/KeywordPlan>. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
19 # |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
20 # Keyword expansion is based on Mercurial's changeset template mappings. |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
21 # |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
22 # Binary files are not touched. |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
23 # |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
24 # Files to act upon/ignore are specified in the [keyword] section. |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
25 # Customized keyword template mappings in the [keywordmaps] section. |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
26 # |
29973
862ab1cdb218
keyword: use single quotes in use warning
timeless <timeless@mozdev.org>
parents:
29852
diff
changeset
|
27 # Run 'hg help keyword' and 'hg kwdemo' to get info on configuration. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
28 |
8894
868670dbc237
extensions: improve the consistency of synopses
Cédric Duval <cedricduval@free.fr>
parents:
8866
diff
changeset
|
29 '''expand keywords in tracked files |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
30 |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
31 This extension expands RCS/CVS-like or self-customized $Keywords$ in |
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
32 tracked text files selected by your configuration. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
33 |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
34 Keywords are only expanded in local repositories and not stored in the |
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
35 change history. The mechanism can be regarded as a convenience for the |
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
36 current user or for archive distribution. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
37 |
12203
0f6164806283
keyword: explain file-wise expansion in help
Christian Ebert <blacktrash@gmx.net>
parents:
11678
diff
changeset
|
38 Keywords expand to the changeset data pertaining to the latest change |
0f6164806283
keyword: explain file-wise expansion in help
Christian Ebert <blacktrash@gmx.net>
parents:
11678
diff
changeset
|
39 relative to the working directory parent of each file. |
0f6164806283
keyword: explain file-wise expansion in help
Christian Ebert <blacktrash@gmx.net>
parents:
11678
diff
changeset
|
40 |
11214
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
41 Configuration is done in the [keyword], [keywordset] and [keywordmaps] |
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
42 sections of hgrc files. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
43 |
9157
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9106
diff
changeset
|
44 Example:: |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
45 |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
46 [keyword] |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
47 # expand keywords in every python file except those matching "x*" |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
48 **.py = |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
49 x* = ignore |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
50 |
11214
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
51 [keywordset] |
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
52 # prefer svn- over cvs-like default keywordmaps |
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
53 svn = True |
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
54 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12207
diff
changeset
|
55 .. note:: |
19997
de16c673455b
documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents:
18825
diff
changeset
|
56 |
12390
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12207
diff
changeset
|
57 The more specific you are in your filename patterns the less you |
aff4afdcfd2b
Use more note admonitions in help texts
Christian Ebert <blacktrash@gmx.net>
parents:
12207
diff
changeset
|
58 lose speed in huge repositories. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
59 |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
60 For [keywordmaps] template mapping and expansion demonstration and |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10967
diff
changeset
|
61 control run :hg:`kwdemo`. See :hg:`help templates` for a list of |
9307
2715506d54e4
keyword: reference templating help, add utcdate filter example
Christian Ebert <blacktrash@gmx.net>
parents:
9305
diff
changeset
|
62 available templates and filters. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
63 |
13885
5d115ea4030b
keyword: convert a verbatim block to a field list
Martin Geisler <mg@aragost.com>
parents:
13634
diff
changeset
|
64 Three additional date template filters are provided: |
11213
3d61813a300e
keyword: add 2 svn-like date filters
Christian Ebert <blacktrash@gmx.net>
parents:
11193
diff
changeset
|
65 |
13885
5d115ea4030b
keyword: convert a verbatim block to a field list
Martin Geisler <mg@aragost.com>
parents:
13634
diff
changeset
|
66 :``utcdate``: "2006/09/18 15:13:13" |
5d115ea4030b
keyword: convert a verbatim block to a field list
Martin Geisler <mg@aragost.com>
parents:
13634
diff
changeset
|
67 :``svnutcdate``: "2006-09-18 15:13:13Z" |
5d115ea4030b
keyword: convert a verbatim block to a field list
Martin Geisler <mg@aragost.com>
parents:
13634
diff
changeset
|
68 :``svnisodate``: "2006-09-18 08:13:13 -700 (Mon, 18 Sep 2006)" |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
69 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10967
diff
changeset
|
70 The default template mappings (view with :hg:`kwdemo -d`) can be |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10967
diff
changeset
|
71 replaced with customized keywords and templates. Again, run |
13025
99210fb3bc0a
keyword: s/config/configuration/ in help
Christian Ebert <blacktrash@gmx.net>
parents:
12844
diff
changeset
|
72 :hg:`kwdemo` to control the results of your configuration changes. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
73 |
13270
1e0d631b843b
keyword: update documentation for kwshrink
Christian Ebert <blacktrash@gmx.net>
parents:
13079
diff
changeset
|
74 Before changing/disabling active keywords, you must run :hg:`kwshrink` |
1e0d631b843b
keyword: update documentation for kwshrink
Christian Ebert <blacktrash@gmx.net>
parents:
13079
diff
changeset
|
75 to avoid storing expanded keywords in the change history. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
76 |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
77 To force expansion after enabling it, or a configuration change, run |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10967
diff
changeset
|
78 :hg:`kwexpand`. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
79 |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
80 Expansions spanning more than one line and incremental expansions, |
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
81 like CVS' $Log$, are not supported. A keyword template map "Log = |
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
82 {desc}" expands to the first line of the changeset description. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
83 ''' |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
84 |
28321
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
85 |
51901
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51762
diff
changeset
|
86 from __future__ import annotations |
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51762
diff
changeset
|
87 |
28321
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
88 import os |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
89 import re |
33079
5a51db8bf41b
keyword: make wrapped repository and kwtemplater refer to each other
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33077
diff
changeset
|
90 import weakref |
28321
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
91 |
29205
a0939666b836
py3: move up symbol imports to enforce import-checker rules
Yuya Nishihara <yuya@tcha.org>
parents:
29055
diff
changeset
|
92 from mercurial.i18n import _ |
6072
e521ec1ad985
keyword: no expansion in web diffs
Christian Ebert <blacktrash@gmx.net>
parents:
6071
diff
changeset
|
93 from mercurial.hgweb import webcommands |
28321
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
94 |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
95 from mercurial import ( |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
96 cmdutil, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
97 context, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
98 dispatch, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
99 error, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
100 extensions, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
101 filelog, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
102 localrepo, |
35928
c8e2d6ed1f9e
cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents:
35042
diff
changeset
|
103 logcmdutil, |
28321
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
104 match, |
52084
8b7123c8947b
update: add a Rust fast-path when updating from null (and clean)
Raphaël Gomès <rgomes@octobus.net>
parents:
51901
diff
changeset
|
105 merge, |
28321
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
106 patch, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
107 pathutil, |
35042
3fbc30f7b9f0
py3: handle keyword arguments in hgext/keyword.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34500
diff
changeset
|
108 pycompat, |
28694
9a6fa1d93bc8
keyword: use templatefilter to mark a function as template filter
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28458
diff
changeset
|
109 registrar, |
28321
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
110 scmutil, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
111 templatefilters, |
37230
a0b17f744cbc
keyword: declare input type of date filters as date
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
112 templateutil, |
28321
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
113 util, |
a7b453b47726
keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net>
parents:
27819
diff
changeset
|
114 ) |
37087
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36893
diff
changeset
|
115 from mercurial.utils import ( |
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36893
diff
changeset
|
116 dateutil, |
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36893
diff
changeset
|
117 stringutil, |
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36893
diff
changeset
|
118 ) |
48431
4237be881bb6
status: adapt the "keyword" extensions to gather stats at lookup time
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47736
diff
changeset
|
119 from mercurial.dirstateutils import timestamp |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
120 |
14300
1b8e421d8e42
keyword: use cmdutil.command decorator
Martin Geisler <mg@aragost.com>
parents:
14168
diff
changeset
|
121 cmdtable = {} |
32376
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
31340
diff
changeset
|
122 command = registrar.command(cmdtable) |
29852
d5883fd055c6
extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents:
29634
diff
changeset
|
123 # 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:
24987
diff
changeset
|
124 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
24987
diff
changeset
|
125 # 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:
24987
diff
changeset
|
126 # leave the attribute unspecified. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
127 testedwith = b'ships-with-hg-core' |
14300
1b8e421d8e42
keyword: use cmdutil.command decorator
Martin Geisler <mg@aragost.com>
parents:
14168
diff
changeset
|
128 |
6024
3121f0feefb4
keyword: nokwcommands, restricted string variables at top level
Christian Ebert <blacktrash@gmx.net>
parents:
6023
diff
changeset
|
129 # hg commands that do not act on keywords |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
130 nokwcommands = ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
131 b'add addremove annotate bundle export grep incoming init log' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
132 b' outgoing push tip verify convert email glog' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
133 ) |
6024
3121f0feefb4
keyword: nokwcommands, restricted string variables at top level
Christian Ebert <blacktrash@gmx.net>
parents:
6023
diff
changeset
|
134 |
33077
0afdc1a4f925
keyword: make comparison webcommand suppress keyword expansion
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33076
diff
changeset
|
135 # webcommands that do not act on keywords |
50821
fcb67b8c8107
wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50258
diff
changeset
|
136 nokwwebcommands = 'annotate changeset rev filediff diff comparison' |
33077
0afdc1a4f925
keyword: make comparison webcommand suppress keyword expansion
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33076
diff
changeset
|
137 |
5961
ed4d55c2366f
keyword: detect restricted commands thru variable
Christian Ebert <blacktrash@gmx.net>
parents:
5946
diff
changeset
|
138 # hg commands that trigger expansion only when writing to working dir, |
ed4d55c2366f
keyword: detect restricted commands thru variable
Christian Ebert <blacktrash@gmx.net>
parents:
5946
diff
changeset
|
139 # not when reading filelog, and unexpand when reading from working dir |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
140 restricted = ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
141 b'merge kwexpand kwshrink record qrecord resolve transplant' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
142 b' unshelve rebase graft backout histedit fetch' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
143 ) |
5961
ed4d55c2366f
keyword: detect restricted commands thru variable
Christian Ebert <blacktrash@gmx.net>
parents:
5946
diff
changeset
|
144 |
11168
6d0d945f9e52
keyword: support extensions using dorecord, e.g. crecord
Christian Ebert <blacktrash@gmx.net>
parents:
11096
diff
changeset
|
145 # names of extensions using dorecord |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
146 recordextensions = b'record' |
11045
eb67196d20fa
keyword: support (q)record
Christian Ebert <blacktrash@gmx.net>
parents:
11044
diff
changeset
|
147 |
13078
69405131c968
keyword: colorize hg kwfiles output
Christian Ebert <blacktrash@gmx.net>
parents:
13072
diff
changeset
|
148 colortable = { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
149 b'kwfiles.enabled': b'green bold', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
150 b'kwfiles.deleted': b'cyan bold underline', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
151 b'kwfiles.enabledunknown': b'green', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
152 b'kwfiles.ignored': b'bold', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
153 b'kwfiles.ignoredunknown': b'none', |
13078
69405131c968
keyword: colorize hg kwfiles output
Christian Ebert <blacktrash@gmx.net>
parents:
13072
diff
changeset
|
154 } |
69405131c968
keyword: colorize hg kwfiles output
Christian Ebert <blacktrash@gmx.net>
parents:
13072
diff
changeset
|
155 |
28694
9a6fa1d93bc8
keyword: use templatefilter to mark a function as template filter
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28458
diff
changeset
|
156 templatefilter = registrar.templatefilter() |
9a6fa1d93bc8
keyword: use templatefilter to mark a function as template filter
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28458
diff
changeset
|
157 |
34500
6c705bf6a8ff
configitems: register the 'keywordset.svn' config
Boris Feld <boris.feld@octobus.net>
parents:
34103
diff
changeset
|
158 configtable = {} |
6c705bf6a8ff
configitems: register the 'keywordset.svn' config
Boris Feld <boris.feld@octobus.net>
parents:
34103
diff
changeset
|
159 configitem = registrar.configitem(configtable) |
6c705bf6a8ff
configitems: register the 'keywordset.svn' config
Boris Feld <boris.feld@octobus.net>
parents:
34103
diff
changeset
|
160 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
161 configitem( |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
162 b'keywordset', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
163 b'svn', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
164 default=False, |
34500
6c705bf6a8ff
configitems: register the 'keywordset.svn' config
Boris Feld <boris.feld@octobus.net>
parents:
34103
diff
changeset
|
165 ) |
51762
ca7bde5dbafb
black: format the codebase with 23.3.0
Raphaël Gomès <rgomes@octobus.net>
parents:
51759
diff
changeset
|
166 |
ca7bde5dbafb
black: format the codebase with 23.3.0
Raphaël Gomès <rgomes@octobus.net>
parents:
51759
diff
changeset
|
167 |
11213
3d61813a300e
keyword: add 2 svn-like date filters
Christian Ebert <blacktrash@gmx.net>
parents:
11193
diff
changeset
|
168 # date like in cvs' $Date |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
169 @templatefilter(b'utcdate', intype=templateutil.date) |
37230
a0b17f744cbc
keyword: declare input type of date filters as date
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
170 def utcdate(date): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
171 """Date. Returns a UTC-date in this format: "2009/08/18 11:00:13".""" |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
172 dateformat = b'%Y/%m/%d %H:%M:%S' |
37230
a0b17f744cbc
keyword: declare input type of date filters as date
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
173 return dateutil.datestr((date[0], 0), dateformat) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
174 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
175 |
11213
3d61813a300e
keyword: add 2 svn-like date filters
Christian Ebert <blacktrash@gmx.net>
parents:
11193
diff
changeset
|
176 # date like in svn's $Date |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
177 @templatefilter(b'svnisodate', intype=templateutil.date) |
37230
a0b17f744cbc
keyword: declare input type of date filters as date
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
178 def svnisodate(date): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
179 """Date. Returns a date in this format: "2009-08-18 13:00:13 |
13633
20d13244f192
keyword: docstrings for additional date filters
Christian Ebert <blacktrash@gmx.net>
parents:
13592
diff
changeset
|
180 +0200 (Tue, 18 Aug 2009)". |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
181 """ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
182 return dateutil.datestr(date, b'%Y-%m-%d %H:%M:%S %1%2 (%a, %d %b %Y)') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
183 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
184 |
11213
3d61813a300e
keyword: add 2 svn-like date filters
Christian Ebert <blacktrash@gmx.net>
parents:
11193
diff
changeset
|
185 # date like in svn's $Id |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
186 @templatefilter(b'svnutcdate', intype=templateutil.date) |
37230
a0b17f744cbc
keyword: declare input type of date filters as date
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
187 def svnutcdate(date): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
188 """Date. Returns a UTC-date in this format: "2009-08-18 |
13633
20d13244f192
keyword: docstrings for additional date filters
Christian Ebert <blacktrash@gmx.net>
parents:
13592
diff
changeset
|
189 11:00:13Z". |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
190 """ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
191 dateformat = b'%Y-%m-%d %H:%M:%SZ' |
37230
a0b17f744cbc
keyword: declare input type of date filters as date
Yuya Nishihara <yuya@tcha.org>
parents:
37087
diff
changeset
|
192 return dateutil.datestr((date[0], 0), dateformat) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
193 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
194 |
6115
8121e9d7bfd2
keyword: make main class and hg command accessible
Christian Ebert <blacktrash@gmx.net>
parents:
6114
diff
changeset
|
195 # make keyword tools accessible |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
196 kwtools = {b'hgcmd': b''} |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
197 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
198 |
11214
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
199 def _defaultkwmaps(ui): |
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
200 '''Returns default keywordmaps according to keywordset configuration.''' |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
201 templates = { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
202 b'Revision': b'{node|short}', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
203 b'Author': b'{author|user}', |
11214
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
204 } |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
205 kwsets = ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
206 { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
207 b'Date': b'{date|utcdate}', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
208 b'RCSfile': b'{file|basename},v', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
209 b'RCSFile': b'{file|basename},v', # kept for backwards compatibility |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
210 # with hg-keyword |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
211 b'Source': b'{root}/{file},v', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
212 b'Id': b'{file|basename},v {node|short} {date|utcdate} {author|user}', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
213 b'Header': b'{root}/{file},v {node|short} {date|utcdate} {author|user}', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
214 }, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
215 { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
216 b'Date': b'{date|svnisodate}', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
217 b'Id': b'{file|basename},v {node|short} {date|svnutcdate} {author|user}', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
218 b'LastChangedRevision': b'{node|short}', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
219 b'LastChangedBy': b'{author|user}', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
220 b'LastChangedDate': b'{date|svnisodate}', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
221 }, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
222 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
223 templates.update(kwsets[ui.configbool(b'keywordset', b'svn')]) |
11214
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
224 return templates |
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
225 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
226 |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
227 def _shrinktext(text, subfunc): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
228 """Helper for keyword expansion removal in text. |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
229 Depending on subfunc also returns number of substitutions.""" |
39450
5bf99c27a7b6
py3: make regexes in hgext/keyword.py bytes
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
39396
diff
changeset
|
230 return subfunc(br'$\1$', text) |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
231 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
232 |
12723
eaa09d25e7c6
keyword: code cleanup
Christian Ebert <blacktrash@gmx.net>
parents:
12709
diff
changeset
|
233 def _preselect(wstatus, changed): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
234 """Retrieves modified and added files from a working directory state |
12723
eaa09d25e7c6
keyword: code cleanup
Christian Ebert <blacktrash@gmx.net>
parents:
12709
diff
changeset
|
235 and returns the subset of each contained in given changed files |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
236 retrieved from a change context.""" |
22918
31f34a213384
keyword: access status fields by name rather than index
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
21982
diff
changeset
|
237 modified = [f for f in wstatus.modified if f in changed] |
31f34a213384
keyword: access status fields by name rather than index
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
21982
diff
changeset
|
238 added = [f for f in wstatus.added if f in changed] |
12723
eaa09d25e7c6
keyword: code cleanup
Christian Ebert <blacktrash@gmx.net>
parents:
12709
diff
changeset
|
239 return modified, added |
eaa09d25e7c6
keyword: code cleanup
Christian Ebert <blacktrash@gmx.net>
parents:
12709
diff
changeset
|
240 |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
241 |
49037
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
49004
diff
changeset
|
242 class kwtemplater: |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
243 """ |
11214
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
244 Sets up keyword templates, corresponding keyword regex, and |
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
245 provides keyword substitution functions. |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
246 """ |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
247 |
11678
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
248 def __init__(self, ui, repo, inc, exc): |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
249 self.ui = ui |
33079
5a51db8bf41b
keyword: make wrapped repository and kwtemplater refer to each other
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33077
diff
changeset
|
250 self._repo = weakref.ref(repo) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
251 self.match = match.match(repo.root, b'', [], inc, exc) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
252 self.restrict = kwtools[b'hgcmd'] in restricted.split() |
16809
6b704fa2bea1
keyword: rename kwt.record attribute to kwt.postcommit
Christian Ebert <blacktrash@gmx.net>
parents:
16743
diff
changeset
|
253 self.postcommit = False |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
254 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
255 kwmaps = self.ui.configitems(b'keywordmaps') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
256 if kwmaps: # override default templates |
24987
fd7287f0b43c
templater: remove noop calls of parsestring(s, quoted=False) (API)
Yuya Nishihara <yuya@tcha.org>
parents:
24905
diff
changeset
|
257 self.templates = dict(kwmaps) |
11214
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
258 else: |
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
259 self.templates = _defaultkwmaps(self.ui) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
260 |
33079
5a51db8bf41b
keyword: make wrapped repository and kwtemplater refer to each other
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33077
diff
changeset
|
261 @property |
5a51db8bf41b
keyword: make wrapped repository and kwtemplater refer to each other
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33077
diff
changeset
|
262 def repo(self): |
5a51db8bf41b
keyword: make wrapped repository and kwtemplater refer to each other
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33077
diff
changeset
|
263 return self._repo() |
5a51db8bf41b
keyword: make wrapped repository and kwtemplater refer to each other
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33077
diff
changeset
|
264 |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
265 @util.propertycache |
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
266 def escape(self): |
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
267 '''Returns bar-separated and escaped keywords.''' |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
268 return b'|'.join(map(stringutil.reescape, self.templates.keys())) |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
269 |
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
270 @util.propertycache |
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
271 def rekw(self): |
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
272 '''Returns regex for unexpanded keywords.''' |
39450
5bf99c27a7b6
py3: make regexes in hgext/keyword.py bytes
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
39396
diff
changeset
|
273 return re.compile(br'\$(%s)\$' % self.escape) |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
274 |
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
275 @util.propertycache |
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
276 def rekwexp(self): |
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
277 '''Returns regex for expanded keywords.''' |
39450
5bf99c27a7b6
py3: make regexes in hgext/keyword.py bytes
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
39396
diff
changeset
|
278 return re.compile(br'\$(%s): [^$\n\r]*? \$' % self.escape) |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
279 |
7375
9f1370130a45
keyword: be more efficient about ctx usage
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7369
diff
changeset
|
280 def substitute(self, data, path, ctx, subfunc): |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
281 '''Replaces keywords in data with expanded template.''' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
282 |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
283 def kwsub(mobj): |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
284 kw = mobj.group(1) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
285 ct = logcmdutil.maketemplater( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
286 self.ui, self.repo, self.templates[kw] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
287 ) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
288 self.ui.pushbuffer() |
10894
26cf11f9f322
keyword: make the templater a local variable
Christian Ebert <blacktrash@gmx.net>
parents:
10844
diff
changeset
|
289 ct.show(ctx, root=self.repo.root, file=path) |
6023
ee7df90d1daa
keyword: split line continuation in 2 steps (style)
Christian Ebert <blacktrash@gmx.net>
parents:
6022
diff
changeset
|
290 ekw = templatefilters.firstline(self.ui.popbuffer()) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
291 return b'$%s: %s $' % (kw, ekw) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
292 |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
293 return subfunc(kwsub, data) |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
294 |
12920
1fab4970354e
keyword: function to look up changectx for expansion
Christian Ebert <blacktrash@gmx.net>
parents:
12844
diff
changeset
|
295 def linkctx(self, path, fileid): |
1fab4970354e
keyword: function to look up changectx for expansion
Christian Ebert <blacktrash@gmx.net>
parents:
12844
diff
changeset
|
296 '''Similar to filelog.linkrev, but returns a changectx.''' |
1fab4970354e
keyword: function to look up changectx for expansion
Christian Ebert <blacktrash@gmx.net>
parents:
12844
diff
changeset
|
297 return self.repo.filectx(path, fileid=fileid).changectx() |
1fab4970354e
keyword: function to look up changectx for expansion
Christian Ebert <blacktrash@gmx.net>
parents:
12844
diff
changeset
|
298 |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
299 def expand(self, path, node, data): |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
300 '''Returns data with keywords expanded.''' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
301 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
302 not self.restrict |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
303 and self.match(path) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
304 and not stringutil.binary(data) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
305 ): |
12920
1fab4970354e
keyword: function to look up changectx for expansion
Christian Ebert <blacktrash@gmx.net>
parents:
12844
diff
changeset
|
306 ctx = self.linkctx(path, node) |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
307 return self.substitute(data, path, ctx, self.rekw.sub) |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
308 return data |
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
309 |
12627
7d9162892899
keyword: make iskwfile() a weeding method in lieu of a boolean
Christian Ebert <blacktrash@gmx.net>
parents:
12626
diff
changeset
|
310 def iskwfile(self, cand, ctx): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
311 """Returns subset of candidates which are configured for keyword |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
312 expansion but are not symbolic links.""" |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
313 return [f for f in cand if self.match(f) and b'l' not in ctx.flags(f)] |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
314 |
12685
a247751652ba
keyword: enforce subn method via boolean switch
Christian Ebert <blacktrash@gmx.net>
parents:
12684
diff
changeset
|
315 def overwrite(self, ctx, candidates, lookup, expand, rekw=False): |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
316 '''Overwrites selected files expanding/shrinking keywords.''' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
317 if self.restrict or lookup or self.postcommit: # exclude kw_copy |
12627
7d9162892899
keyword: make iskwfile() a weeding method in lieu of a boolean
Christian Ebert <blacktrash@gmx.net>
parents:
12626
diff
changeset
|
318 candidates = self.iskwfile(candidates, ctx) |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
319 if not candidates: |
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
320 return |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
321 kwcmd = self.restrict and lookup # kwexpand/kwshrink |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
322 if self.restrict or expand and lookup: |
11350
5ea28187707e
keyword: postpone manifest calculation in kwtemplater.overwrite
Christian Ebert <blacktrash@gmx.net>
parents:
11321
diff
changeset
|
323 mf = ctx.manifest() |
15030
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
324 if self.restrict or rekw: |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
325 re_kw = self.rekw |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
326 else: |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
327 re_kw = self.rekwexp |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
328 if expand: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
329 msg = _(b'overwriting %s expanding keywords\n') |
15030
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
330 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
331 msg = _(b'overwriting %s shrinking keywords\n') |
48431
4237be881bb6
status: adapt the "keyword" extensions to gather stats at lookup time
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47736
diff
changeset
|
332 wctx = self.repo[None] |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
333 for f in candidates: |
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
334 if self.restrict: |
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
335 data = self.repo.file(f).read(mf[f]) |
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
336 else: |
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
337 data = self.repo.wread(f) |
37087
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36893
diff
changeset
|
338 if stringutil.binary(data): |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
339 continue |
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
340 if expand: |
23622
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
341 parents = ctx.parents() |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
342 if lookup: |
15083
6e069366e27c
keyword: use wopener(..., atomictemp=True) to overwrite
Christian Ebert <blacktrash@gmx.net>
parents:
15072
diff
changeset
|
343 ctx = self.linkctx(f, mf[f]) |
23622
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
344 elif self.restrict and len(parents) > 1: |
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
345 # merge commit |
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
346 # in case of conflict f is in modified state during |
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
347 # merge, even if f does not differ from f in parent |
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
348 for p in parents: |
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
349 if f in p and not p[f].cmp(ctx[f]): |
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
350 ctx = p[f].changectx() |
cb9d845406e5
keyword: handle resolve to either parent
Christian Ebert <blacktrash@gmx.net>
parents:
23079
diff
changeset
|
351 break |
15083
6e069366e27c
keyword: use wopener(..., atomictemp=True) to overwrite
Christian Ebert <blacktrash@gmx.net>
parents:
15072
diff
changeset
|
352 data, found = self.substitute(data, f, ctx, re_kw.subn) |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
353 elif self.restrict: |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
354 found = re_kw.search(data) |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
355 else: |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
356 data, found = _shrinktext(data, re_kw.subn) |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
357 if found: |
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
358 self.ui.note(msg % f) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
359 fp = self.repo.wvfs(f, b"wb", atomictemp=True) |
15083
6e069366e27c
keyword: use wopener(..., atomictemp=True) to overwrite
Christian Ebert <blacktrash@gmx.net>
parents:
15072
diff
changeset
|
360 fp.write(data) |
6e069366e27c
keyword: use wopener(..., atomictemp=True) to overwrite
Christian Ebert <blacktrash@gmx.net>
parents:
15072
diff
changeset
|
361 fp.close() |
12844
a1b49b9a0328
keyword: fix regressions introduced in d87f3ff904ba
Christian Ebert <blacktrash@gmx.net>
parents:
12732
diff
changeset
|
362 if kwcmd: |
48431
4237be881bb6
status: adapt the "keyword" extensions to gather stats at lookup time
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47736
diff
changeset
|
363 s = wctx[f].lstat() |
4237be881bb6
status: adapt the "keyword" extensions to gather stats at lookup time
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47736
diff
changeset
|
364 mode = s.st_mode |
4237be881bb6
status: adapt the "keyword" extensions to gather stats at lookup time
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47736
diff
changeset
|
365 size = s.st_size |
4237be881bb6
status: adapt the "keyword" extensions to gather stats at lookup time
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47736
diff
changeset
|
366 mtime = timestamp.mtime_of(s) |
4237be881bb6
status: adapt the "keyword" extensions to gather stats at lookup time
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47736
diff
changeset
|
367 cache_data = (mode, size, mtime) |
4237be881bb6
status: adapt the "keyword" extensions to gather stats at lookup time
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47736
diff
changeset
|
368 self.repo.dirstate.set_clean(f, cache_data) |
16809
6b704fa2bea1
keyword: rename kwt.record attribute to kwt.postcommit
Christian Ebert <blacktrash@gmx.net>
parents:
16743
diff
changeset
|
369 elif self.postcommit: |
47736
b9086ec4d28b
keyword: use `update_file_p1` instead of `normallookup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47711
diff
changeset
|
370 self.repo.dirstate.update_file_p1(f, p1_tracked=True) |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
371 |
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
372 def shrink(self, fname, text): |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
373 '''Returns text with all keyword substitutions removed.''' |
37087
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36893
diff
changeset
|
374 if self.match(fname) and not stringutil.binary(text): |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
375 return _shrinktext(text, self.rekwexp.sub) |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
376 return text |
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
377 |
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
378 def shrinklines(self, fname, lines): |
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
379 '''Returns lines with keyword substitutions removed.''' |
8638
c6483eec6092
keyword: rename matcher() to match() mimicking changes in main
Christian Ebert <blacktrash@gmx.net>
parents:
8567
diff
changeset
|
380 if self.match(fname): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
381 text = b''.join(lines) |
37087
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36893
diff
changeset
|
382 if not stringutil.binary(text): |
12926
edbe32efc89f
keyword: turn regexes and escaped keywords into a propertycache
Christian Ebert <blacktrash@gmx.net>
parents:
12920
diff
changeset
|
383 return _shrinktext(text, self.rekwexp.sub).splitlines(True) |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
384 return lines |
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
385 |
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
386 def wread(self, fname, data): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
387 """If in restricted mode returns data read from wdir with |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
388 keyword substitutions removed.""" |
15030
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
389 if self.restrict: |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
390 return self.shrink(fname, data) |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
391 return data |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
392 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
393 |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
394 class kwfilelog(filelog.filelog): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
395 """ |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
396 Subclass of filelog to hook into its read, add, cmp methods. |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
397 Keywords are "stored" unexpanded, and processed on reading. |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
398 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
399 |
6503
4572beeacff1
keyword: privatize remaining monkeypatches by moving them into reposetup
Christian Ebert <blacktrash@gmx.net>
parents:
6502
diff
changeset
|
400 def __init__(self, opener, kwt, path): |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
401 super(kwfilelog, self).__init__(opener, path) |
6503
4572beeacff1
keyword: privatize remaining monkeypatches by moving them into reposetup
Christian Ebert <blacktrash@gmx.net>
parents:
6502
diff
changeset
|
402 self.kwt = kwt |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
403 self.path = path |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
404 |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
405 def read(self, node): |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
406 '''Expands keywords when reading filelog.''' |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
407 data = super(kwfilelog, self).read(node) |
12628
799cec3ba3b1
keyword: disable expansion in kwfilelog.read() if file renamed in node
Christian Ebert <blacktrash@gmx.net>
parents:
12627
diff
changeset
|
408 if self.renamed(node): |
799cec3ba3b1
keyword: disable expansion in kwfilelog.read() if file renamed in node
Christian Ebert <blacktrash@gmx.net>
parents:
12627
diff
changeset
|
409 return data |
6115
8121e9d7bfd2
keyword: make main class and hg command accessible
Christian Ebert <blacktrash@gmx.net>
parents:
6114
diff
changeset
|
410 return self.kwt.expand(self.path, node, data) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
411 |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
412 def add(self, text, meta, tr, link, p1=None, p2=None): |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
413 '''Removes keyword substitutions when adding to filelog.''' |
6115
8121e9d7bfd2
keyword: make main class and hg command accessible
Christian Ebert <blacktrash@gmx.net>
parents:
6114
diff
changeset
|
414 text = self.kwt.shrink(self.path, text) |
6504
1be53f931c9c
keyword: compact setting of optional arguments
Christian Ebert <blacktrash@gmx.net>
parents:
6503
diff
changeset
|
415 return super(kwfilelog, self).add(text, meta, tr, link, p1, p2) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
416 |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
417 def cmp(self, node, text): |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
418 '''Removes keyword substitutions for comparison.''' |
6115
8121e9d7bfd2
keyword: make main class and hg command accessible
Christian Ebert <blacktrash@gmx.net>
parents:
6114
diff
changeset
|
419 text = self.kwt.shrink(self.path, text) |
12628
799cec3ba3b1
keyword: disable expansion in kwfilelog.read() if file renamed in node
Christian Ebert <blacktrash@gmx.net>
parents:
12627
diff
changeset
|
420 return super(kwfilelog, self).cmp(node, text) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
421 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
422 |
14835
ec4d4114e7fe
keyword: reuse already present working contexts for match
Christian Ebert <blacktrash@gmx.net>
parents:
14671
diff
changeset
|
423 def _status(ui, repo, wctx, kwt, *pats, **opts): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
424 """Bails out if [keyword] configuration is not active. |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
425 Returns status of working directory.""" |
6115
8121e9d7bfd2
keyword: make main class and hg command accessible
Christian Ebert <blacktrash@gmx.net>
parents:
6114
diff
changeset
|
426 if kwt: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
427 return repo.status( |
50902
7e6cd8472dc8
keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com>
parents:
50821
diff
changeset
|
428 match=scmutil.match(wctx, pats, pycompat.byteskwargs(opts)), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
429 clean=True, |
50902
7e6cd8472dc8
keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com>
parents:
50821
diff
changeset
|
430 unknown=opts.get('unknown') or opts.get('all'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
431 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
432 if ui.configitems(b'keyword'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
433 raise error.Abort(_(b'[keyword] patterns cannot match')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
434 raise error.Abort(_(b'no [keyword] patterns configured')) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
435 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
436 |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
437 def _kwfwrite(ui, repo, expand, *pats, **opts): |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
438 '''Selects files and passes them to kwtemplater.overwrite.''' |
11320
e4274f9f97c8
keyword: pass context to kwtemplater.overwrite
Christian Ebert <blacktrash@gmx.net>
parents:
11303
diff
changeset
|
439 wctx = repo[None] |
e4274f9f97c8
keyword: pass context to kwtemplater.overwrite
Christian Ebert <blacktrash@gmx.net>
parents:
11303
diff
changeset
|
440 if len(wctx.parents()) > 1: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
441 raise error.Abort(_(b'outstanding uncommitted merge')) |
33082
735218be6122
keyword: use _keywordkwt of repository instead of kwtools['templater']
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33081
diff
changeset
|
442 kwt = getattr(repo, '_keywordkwt', None) |
50199
b09a0afcb975
keyword: wrap dirstate mutation in `changing_files` context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50097
diff
changeset
|
443 with repo.wlock(), repo.dirstate.changing_files(repo): |
14835
ec4d4114e7fe
keyword: reuse already present working contexts for match
Christian Ebert <blacktrash@gmx.net>
parents:
14671
diff
changeset
|
444 status = _status(ui, repo, wctx, kwt, *pats, **opts) |
22918
31f34a213384
keyword: access status fields by name rather than index
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
21982
diff
changeset
|
445 if status.modified or status.added or status.removed or status.deleted: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
446 raise error.Abort(_(b'outstanding uncommitted changes')) |
22918
31f34a213384
keyword: access status fields by name rather than index
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
21982
diff
changeset
|
447 kwt.overwrite(wctx, status.clean, True, expand) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
448 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
449 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
450 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
451 b'kwdemo', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
452 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
453 (b'd', b'default', None, _(b'show default keyword template maps')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
454 (b'f', b'rcfile', b'', _(b'read maps from rcfile'), _(b'FILE')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
455 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
456 _(b'hg kwdemo [-d] [-f RCFILE] [TEMPLATEMAP]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
457 optionalrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
458 ) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
459 def demo(ui, repo, *args, **opts): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
460 """print [keywordmaps] configuration and an expansion example |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
461 |
7993
b83a11536fc6
keyword: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7853
diff
changeset
|
462 Show current, custom, or default keyword template maps and their |
8763 | 463 expansions. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
464 |
9281
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
465 Extend the current configuration by specifying maps as arguments |
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
466 and using -f/--rcfile to source an external hgrc file. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
467 |
9281
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
468 Use -d/--default to disable current configuration. |
9307
2715506d54e4
keyword: reference templating help, add utcdate filter example
Christian Ebert <blacktrash@gmx.net>
parents:
9305
diff
changeset
|
469 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11168
diff
changeset
|
470 See :hg:`help templates` for information on templates and filters. |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
471 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
472 |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
473 def demoitems(section, items): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
474 ui.write(b'[%s]\n' % section) |
9942
b6d484168350
keyword: sort demo output to ensure deterministic output
Martin Geisler <mg@lazybytes.net>
parents:
9494
diff
changeset
|
475 for k, v in sorted(items): |
40220
c7ffc53fbd19
py3: use stringutil.pprint() if we are printing bool values
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
39564
diff
changeset
|
476 if isinstance(v, bool): |
c7ffc53fbd19
py3: use stringutil.pprint() if we are printing bool values
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
39564
diff
changeset
|
477 v = stringutil.pprint(v) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
478 ui.write(b'%s = %s\n' % (k, v)) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
479 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
480 fn = b'demo.txt' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
481 tmpdir = pycompat.mkdtemp(b'', b'kwdemo.') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
482 ui.note(_(b'creating temporary repository at %s\n') % tmpdir) |
29634
8421cbebc783
keyword: avoid traceback when kwdemo is run outside a repo
Christian Ebert <blacktrash@gmx.net>
parents:
29397
diff
changeset
|
483 if repo is None: |
8421cbebc783
keyword: avoid traceback when kwdemo is run outside a repo
Christian Ebert <blacktrash@gmx.net>
parents:
29397
diff
changeset
|
484 baseui = ui |
8421cbebc783
keyword: avoid traceback when kwdemo is run outside a repo
Christian Ebert <blacktrash@gmx.net>
parents:
29397
diff
changeset
|
485 else: |
8421cbebc783
keyword: avoid traceback when kwdemo is run outside a repo
Christian Ebert <blacktrash@gmx.net>
parents:
29397
diff
changeset
|
486 baseui = repo.baseui |
39564
7ce9dea3a14a
localrepo: move repo creation logic out of localrepository.__init__ (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39451
diff
changeset
|
487 repo = localrepo.instance(baseui, tmpdir, create=True) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
488 ui.setconfig(b'keyword', fn, b'', b'keyword') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
489 svn = ui.configbool(b'keywordset', b'svn') |
13298
f715e6bd8091
keyword: inform user about current keywordset in kwdemo
Christian Ebert <blacktrash@gmx.net>
parents:
13270
diff
changeset
|
490 # explicitly set keywordset for demo output |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
491 ui.setconfig(b'keywordset', b'svn', svn, b'keyword') |
9281
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
492 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
493 uikwmaps = ui.configitems(b'keywordmaps') |
43554
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43105
diff
changeset
|
494 if args or opts.get('rcfile'): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
495 ui.status(_(b'\n\tconfiguration using custom keyword template maps\n')) |
9281
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
496 if uikwmaps: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
497 ui.status(_(b'\textending current template maps\n')) |
43554
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43105
diff
changeset
|
498 if opts.get('default') or not uikwmaps: |
13298
f715e6bd8091
keyword: inform user about current keywordset in kwdemo
Christian Ebert <blacktrash@gmx.net>
parents:
13270
diff
changeset
|
499 if svn: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
500 ui.status(_(b'\toverriding default svn keywordset\n')) |
13298
f715e6bd8091
keyword: inform user about current keywordset in kwdemo
Christian Ebert <blacktrash@gmx.net>
parents:
13270
diff
changeset
|
501 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
502 ui.status(_(b'\toverriding default cvs keywordset\n')) |
43554
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43105
diff
changeset
|
503 if opts.get('rcfile'): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
504 ui.readconfig(opts.get(b'rcfile')) |
9281
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
505 if args: |
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
506 # simulate hgrc parsing |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
507 rcmaps = b'[keywordmaps]\n%s\n' % b'\n'.join(args) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
508 repo.vfs.write(b'hgrc', rcmaps) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
509 ui.readconfig(repo.vfs.join(b'hgrc')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
510 kwmaps = dict(ui.configitems(b'keywordmaps')) |
43554
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43105
diff
changeset
|
511 elif opts.get('default'): |
13298
f715e6bd8091
keyword: inform user about current keywordset in kwdemo
Christian Ebert <blacktrash@gmx.net>
parents:
13270
diff
changeset
|
512 if svn: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
513 ui.status(_(b'\n\tconfiguration using default svn keywordset\n')) |
13298
f715e6bd8091
keyword: inform user about current keywordset in kwdemo
Christian Ebert <blacktrash@gmx.net>
parents:
13270
diff
changeset
|
514 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
515 ui.status(_(b'\n\tconfiguration using default cvs keywordset\n')) |
11214
b05ec0cc063e
keyword: offer svn-like default keywordmaps
Christian Ebert <blacktrash@gmx.net>
parents:
11213
diff
changeset
|
516 kwmaps = _defaultkwmaps(ui) |
9281
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
517 if uikwmaps: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
518 ui.status(_(b'\tdisabling current template maps\n')) |
49004
f254fc73d956
global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48966
diff
changeset
|
519 for k, v in kwmaps.items(): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
520 ui.setconfig(b'keywordmaps', k, v, b'keyword') |
9281
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
521 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
522 ui.status(_(b'\n\tconfiguration using current keyword template maps\n')) |
15030
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
523 if uikwmaps: |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
524 kwmaps = dict(uikwmaps) |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
525 else: |
261482576c1e
keyword: avoid x = a and b or c
Christian Ebert <blacktrash@gmx.net>
parents:
14835
diff
changeset
|
526 kwmaps = _defaultkwmaps(ui) |
9281
2a4131b264c3
keyword: refactor kwdemo and make output translatable
Christian Ebert <blacktrash@gmx.net>
parents:
9264
diff
changeset
|
527 |
6502
ba8a0338baf7
keyword: collect filename patterns, wrap dispatch._parse in uisetup
Christian Ebert <blacktrash@gmx.net>
parents:
6416
diff
changeset
|
528 uisetup(ui) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
529 reposetup(ui, repo) |
43080
86e4daa2d54c
cleanup: mark some ui.(status|note|warn|write) calls as not needing i18n
Augie Fackler <augie@google.com>
parents:
43077
diff
changeset
|
530 ui.writenoi18n(b'[extensions]\nkeyword =\n') |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
531 demoitems(b'keyword', ui.configitems(b'keyword')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
532 demoitems(b'keywordset', ui.configitems(b'keywordset')) |
49004
f254fc73d956
global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48966
diff
changeset
|
533 demoitems(b'keywordmaps', kwmaps.items()) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
534 keywords = b'$' + b'$\n$'.join(sorted(kwmaps.keys())) + b'$\n' |
23879
b88278a308c6
localrepo: remove all external users of localrepo.wopener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
23878
diff
changeset
|
535 repo.wvfs.write(fn, keywords) |
27816
98391f38ceb8
with: use context manager for wlock in keyword demo
Bryan O'Sullivan <bryano@fb.com>
parents:
27815
diff
changeset
|
536 with repo.wlock(): |
50097
1346db77e14d
dirstate: use the `changing_files` context in the `keyword` demo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50065
diff
changeset
|
537 with repo.dirstate.changing_files(repo): |
1346db77e14d
dirstate: use the `changing_files` context in the `keyword` demo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50065
diff
changeset
|
538 repo[None].add([fn]) |
50065
115510658219
locking: hold the wlock for the full duration of the "keyword demo"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50054
diff
changeset
|
539 ui.note(_(b'\nkeywords written to %s:\n') % fn) |
115510658219
locking: hold the wlock for the full duration of the "keyword demo"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50054
diff
changeset
|
540 ui.note(keywords) |
50258
dba3593555e5
branch: pass current transaction when writing branch in keyword
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50199
diff
changeset
|
541 repo.dirstate.setbranch(b'demobranch', repo.currenttransaction()) |
50065
115510658219
locking: hold the wlock for the full duration of the "keyword demo"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50054
diff
changeset
|
542 for name, cmd in ui.configitems(b'hooks'): |
115510658219
locking: hold the wlock for the full duration of the "keyword demo"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50054
diff
changeset
|
543 if name.split(b'.', 1)[0].find(b'commit') > -1: |
115510658219
locking: hold the wlock for the full duration of the "keyword demo"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50054
diff
changeset
|
544 repo.ui.setconfig(b'hooks', name, b'', b'keyword') |
115510658219
locking: hold the wlock for the full duration of the "keyword demo"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50054
diff
changeset
|
545 msg = _(b'hg keyword configuration and expansion example') |
115510658219
locking: hold the wlock for the full duration of the "keyword demo"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50054
diff
changeset
|
546 ui.note((b"hg ci -m '%s'\n" % msg)) |
115510658219
locking: hold the wlock for the full duration of the "keyword demo"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50054
diff
changeset
|
547 repo.commit(text=msg) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
548 ui.status(_(b'\n\tkeywords expanded\n')) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
549 ui.write(repo.wread(fn)) |
24905
4ecbd88cde9a
keyword: use wvfs.rmtree to remove kwdemo directory
Christian Ebert <blacktrash@gmx.net>
parents:
24370
diff
changeset
|
550 repo.wvfs.rmtree(repo.root) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
551 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
552 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
553 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
554 b'kwexpand', |
32414
04baab18d60a
commands: move templates of common command options to cmdutil (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32376
diff
changeset
|
555 cmdutil.walkopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
556 _(b'hg kwexpand [OPTION]... [FILE]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
557 inferrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
558 ) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
559 def expand(ui, repo, *pats, **opts): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
560 """expand keywords in the working directory |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
561 |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
562 Run after (re)enabling keyword expansion. |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
563 |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
564 kwexpand refuses to run if given files contain local changes. |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
565 """ |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
566 # 3rd argument sets expansion to True |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
567 _kwfwrite(ui, repo, True, *pats, **opts) |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
568 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
569 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
570 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
571 b'kwfiles', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
572 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
573 (b'A', b'all', None, _(b'show keyword status flags of all files')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
574 (b'i', b'ignore', None, _(b'show files excluded from expansion')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
575 (b'u', b'unknown', None, _(b'only show unknown (not tracked) files')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
576 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
577 + cmdutil.walkopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
578 _(b'hg kwfiles [OPTION]... [FILE]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
579 inferrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
580 ) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
581 def files(ui, repo, *pats, **opts): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
582 """show files configured for keyword expansion |
8950
be6b57b2bdb8
keyword: improve help for kwfiles
Christian Ebert <blacktrash@gmx.net>
parents:
8939
diff
changeset
|
583 |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
584 List which files in the working directory are matched by the |
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
585 [keyword] configuration patterns. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
586 |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
587 Useful to prevent inadvertent keyword expansion and to speed up |
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
588 execution by including only files that are actual candidates for |
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
589 expansion. |
8950
be6b57b2bdb8
keyword: improve help for kwfiles
Christian Ebert <blacktrash@gmx.net>
parents:
8939
diff
changeset
|
590 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10967
diff
changeset
|
591 See :hg:`help keyword` on how to construct patterns both for |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
592 inclusion and exclusion of files. |
8957
7672d8e13d0d
keyword: improve help for kwfiles
Christian Ebert <blacktrash@gmx.net>
parents:
8956
diff
changeset
|
593 |
9494
bdd8a41ea6f6
keyword: uppercase short option for kwfiles --all, like hg status -A
Christian Ebert <blacktrash@gmx.net>
parents:
9493
diff
changeset
|
594 With -A/--all and -v/--verbose the codes used to show the status |
9264
9abddf8c29c7
keyword: wrap docstrings at 70 characters
Martin Geisler <mg@lazybytes.net>
parents:
9219
diff
changeset
|
595 of files are:: |
9195
8c719222ddd7
keyword: reformat kwfiles help for minirst parser
Christian Ebert <blacktrash@gmx.net>
parents:
9157
diff
changeset
|
596 |
8c719222ddd7
keyword: reformat kwfiles help for minirst parser
Christian Ebert <blacktrash@gmx.net>
parents:
9157
diff
changeset
|
597 K = keyword expansion candidate |
9491
12e340b9f1bf
keyword: kwfiles --unknown instead of --untracked
Christian Ebert <blacktrash@gmx.net>
parents:
9467
diff
changeset
|
598 k = keyword expansion candidate (not tracked) |
9195
8c719222ddd7
keyword: reformat kwfiles help for minirst parser
Christian Ebert <blacktrash@gmx.net>
parents:
9157
diff
changeset
|
599 I = ignored |
9491
12e340b9f1bf
keyword: kwfiles --unknown instead of --untracked
Christian Ebert <blacktrash@gmx.net>
parents:
9467
diff
changeset
|
600 i = ignored (not tracked) |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
601 """ |
33082
735218be6122
keyword: use _keywordkwt of repository instead of kwtools['templater']
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33081
diff
changeset
|
602 kwt = getattr(repo, '_keywordkwt', None) |
14835
ec4d4114e7fe
keyword: reuse already present working contexts for match
Christian Ebert <blacktrash@gmx.net>
parents:
14671
diff
changeset
|
603 wctx = repo[None] |
ec4d4114e7fe
keyword: reuse already present working contexts for match
Christian Ebert <blacktrash@gmx.net>
parents:
14671
diff
changeset
|
604 status = _status(ui, repo, wctx, kwt, *pats, **opts) |
24306
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24272
diff
changeset
|
605 if pats: |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24272
diff
changeset
|
606 cwd = repo.getcwd() |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
24272
diff
changeset
|
607 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
608 cwd = b'' |
9493
fe1ecd15c6bd
keyword: make kwfiles -u show untracked files only (like status)
Christian Ebert <blacktrash@gmx.net>
parents:
9492
diff
changeset
|
609 files = [] |
50902
7e6cd8472dc8
keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com>
parents:
50821
diff
changeset
|
610 |
7e6cd8472dc8
keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com>
parents:
50821
diff
changeset
|
611 if not opts.get('unknown') or opts.get('all'): |
22918
31f34a213384
keyword: access status fields by name rather than index
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
21982
diff
changeset
|
612 files = sorted(status.modified + status.added + status.clean) |
12627
7d9162892899
keyword: make iskwfile() a weeding method in lieu of a boolean
Christian Ebert <blacktrash@gmx.net>
parents:
12626
diff
changeset
|
613 kwfiles = kwt.iskwfile(files, wctx) |
22918
31f34a213384
keyword: access status fields by name rather than index
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
21982
diff
changeset
|
614 kwdeleted = kwt.iskwfile(status.deleted, wctx) |
31f34a213384
keyword: access status fields by name rather than index
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
21982
diff
changeset
|
615 kwunknown = kwt.iskwfile(status.unknown, wctx) |
50902
7e6cd8472dc8
keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com>
parents:
50821
diff
changeset
|
616 if not opts.get('ignore') or opts.get('all'): |
13079
f3a2bb1e4255
keyword: make kwfiles show deleted files configured for expansion
Christian Ebert <blacktrash@gmx.net>
parents:
13078
diff
changeset
|
617 showfiles = kwfiles, kwdeleted, kwunknown |
9493
fe1ecd15c6bd
keyword: make kwfiles -u show untracked files only (like status)
Christian Ebert <blacktrash@gmx.net>
parents:
9492
diff
changeset
|
618 else: |
13079
f3a2bb1e4255
keyword: make kwfiles show deleted files configured for expansion
Christian Ebert <blacktrash@gmx.net>
parents:
13078
diff
changeset
|
619 showfiles = [], [], [] |
50902
7e6cd8472dc8
keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com>
parents:
50821
diff
changeset
|
620 if opts.get('all') or opts.get('ignore'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
621 showfiles += ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
622 [f for f in files if f not in kwfiles], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
623 [f for f in status.unknown if f not in kwunknown], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
624 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
625 kwlabels = b'enabled deleted enabledunknown ignored ignoredunknown'.split() |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
626 kwstates = zip(kwlabels, pycompat.bytestr(b'K!kIi'), showfiles) |
50902
7e6cd8472dc8
keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com>
parents:
50821
diff
changeset
|
627 fm = ui.formatter(b'kwfiles', pycompat.byteskwargs(opts)) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
628 fmt = b'%.0s%s\n' |
50902
7e6cd8472dc8
keyword: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com>
parents:
50821
diff
changeset
|
629 if opts.get('all') or ui.verbose: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
630 fmt = b'%s %s\n' |
17057
9720c55d605b
keyword: use ui.formatter for kwfiles output
Christian Ebert <blacktrash@gmx.net>
parents:
16812
diff
changeset
|
631 for kwstate, char, filenames in kwstates: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
632 label = b'kwfiles.' + kwstate |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
633 for f in filenames: |
17057
9720c55d605b
keyword: use ui.formatter for kwfiles output
Christian Ebert <blacktrash@gmx.net>
parents:
16812
diff
changeset
|
634 fm.startitem() |
39396
34ba47117164
formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
38479
diff
changeset
|
635 fm.data(kwstatus=char, path=f) |
34ba47117164
formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
Yuya Nishihara <yuya@tcha.org>
parents:
38479
diff
changeset
|
636 fm.plain(fmt % (char, repo.pathto(f, cwd)), label=label) |
17057
9720c55d605b
keyword: use ui.formatter for kwfiles output
Christian Ebert <blacktrash@gmx.net>
parents:
16812
diff
changeset
|
637 fm.end() |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
638 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
639 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
640 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
641 b'kwshrink', |
32414
04baab18d60a
commands: move templates of common command options to cmdutil (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32376
diff
changeset
|
642 cmdutil.walkopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
643 _(b'hg kwshrink [OPTION]... [FILE]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
644 inferrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
645 ) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
646 def shrink(ui, repo, *pats, **opts): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
647 """revert expanded keywords in the working directory |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
648 |
13270
1e0d631b843b
keyword: update documentation for kwshrink
Christian Ebert <blacktrash@gmx.net>
parents:
13079
diff
changeset
|
649 Must be run before changing/disabling active keywords. |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
650 |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
651 kwshrink refuses to run if given files contain local changes. |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
652 """ |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
653 # 3rd argument sets expansion to False |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
654 _kwfwrite(ui, repo, False, *pats, **opts) |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
655 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
656 |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
657 # monkeypatches |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
658 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
659 |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
660 def kwpatchfile_init(orig, self, ui, gp, backend, store, eolmode=None): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
661 """Monkeypatch/wrap patch.patchfile.__init__ to avoid |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
662 rejects or conflicts due to expanded keywords in working dir.""" |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
663 orig(self, ui, gp, backend, store, eolmode) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
664 kwt = getattr(getattr(backend, 'repo', None), '_keywordkwt', None) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
665 if kwt: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
666 # shrink keywords read from working dir |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
667 self.lines = kwt.shrinklines(self.fname, self.lines) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
668 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
669 |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
670 def kwdiff(orig, repo, *args, **kwargs): |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
671 '''Monkeypatch patch.diff to avoid expansion.''' |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
672 kwt = getattr(repo, '_keywordkwt', None) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
673 if kwt: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
674 restrict = kwt.restrict |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
675 kwt.restrict = True |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
676 try: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
677 for chunk in orig(repo, *args, **kwargs): |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
678 yield chunk |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
679 finally: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
680 if kwt: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
681 kwt.restrict = restrict |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
682 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
683 |
36893
4daa22071d5d
hgweb: stop passing req and tmpl into @webcommand functions (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36886
diff
changeset
|
684 def kwweb_skip(orig, web): |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
685 '''Wraps webcommands.x turning off keyword expansion.''' |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
686 kwt = getattr(web.repo, '_keywordkwt', None) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
687 if kwt: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
688 origmatch = kwt.match |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
689 kwt.match = util.never |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
690 try: |
36893
4daa22071d5d
hgweb: stop passing req and tmpl into @webcommand functions (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36886
diff
changeset
|
691 for chunk in orig(web): |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
692 yield chunk |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
693 finally: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
694 if kwt: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
695 kwt.match = origmatch |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
696 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
697 |
34103
a39dce4a76b8
cmdutil: remove redundant commitfunc parameter in amend (API)
Saurabh Singh <singhsrb@fb.com>
parents:
33083
diff
changeset
|
698 def kw_amend(orig, ui, repo, old, extra, pats, opts): |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
699 '''Wraps cmdutil.amend expanding keywords after amend.''' |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
700 kwt = getattr(repo, '_keywordkwt', None) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
701 if kwt is None: |
34103
a39dce4a76b8
cmdutil: remove redundant commitfunc parameter in amend (API)
Saurabh Singh <singhsrb@fb.com>
parents:
33083
diff
changeset
|
702 return orig(ui, repo, old, extra, pats, opts) |
50023
7a8bfc05b691
dirstate: rename parentchange to changing_parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50022
diff
changeset
|
703 with repo.wlock(), repo.dirstate.changing_parents(repo): |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
704 kwt.postcommit = True |
34103
a39dce4a76b8
cmdutil: remove redundant commitfunc parameter in amend (API)
Saurabh Singh <singhsrb@fb.com>
parents:
33083
diff
changeset
|
705 newid = orig(ui, repo, old, extra, pats, opts) |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
706 if newid != old.node(): |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
707 ctx = repo[newid] |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
708 kwt.restrict = True |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
709 kwt.overwrite(ctx, ctx.files(), False, True) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
710 kwt.restrict = False |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
711 return newid |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
712 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
713 |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
714 def kw_copy(orig, ui, repo, pats, opts, rename=False): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
715 """Wraps cmdutil.copy so that copy/rename destinations do not |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
716 contain expanded keywords. |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
717 Note that the source of a regular file destination may also be a |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
718 symlink: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
719 hg cp sym x -> x is symlink |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
720 cp sym x; hg cp -A sym x -> x is file (maybe expanded keywords) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
721 For the latter we have to follow the symlink to find out whether its |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
722 target is configured for expansion and we therefore must unexpand the |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
723 keywords in the destination.""" |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
724 kwt = getattr(repo, '_keywordkwt', None) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
725 if kwt is None: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
726 return orig(ui, repo, pats, opts, rename) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
727 with repo.wlock(): |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
728 orig(ui, repo, pats, opts, rename) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
729 if opts.get(b'dry_run'): |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
730 return |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
731 wctx = repo[None] |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
732 cwd = repo.getcwd() |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
733 |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
734 def haskwsource(dest): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
735 """Returns true if dest is a regular file and configured for |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
736 expansion or a symlink which points to a file configured for |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
737 expansion.""" |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
738 source = repo.dirstate.copied(dest) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
739 if b'l' in wctx.flags(source): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
740 source = pathutil.canonpath( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
741 repo.root, cwd, os.path.realpath(source) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
742 ) |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
743 return kwt.match(source) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
744 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
745 candidates = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
746 f |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
747 for f in repo.dirstate.copies() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
748 if b'l' not in wctx.flags(f) and haskwsource(f) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
749 ] |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
750 kwt.overwrite(wctx, candidates, False, False) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
751 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
752 |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
753 def kw_dorecord(orig, ui, repo, commitfunc, *pats, **opts): |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
754 '''Wraps record.dorecord expanding keywords after recording.''' |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
755 kwt = getattr(repo, '_keywordkwt', None) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
756 if kwt is None: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
757 return orig(ui, repo, commitfunc, *pats, **opts) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
758 with repo.wlock(): |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
759 # record returns 0 even when nothing has changed |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
760 # therefore compare nodes before and after |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
761 kwt.postcommit = True |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
762 ctx = repo[b'.'] |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
763 wstatus = ctx.status() |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
764 ret = orig(ui, repo, commitfunc, *pats, **opts) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
765 recctx = repo[b'.'] |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
766 if ctx != recctx: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
767 modified, added = _preselect(wstatus, recctx.files()) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
768 kwt.restrict = False |
50023
7a8bfc05b691
dirstate: rename parentchange to changing_parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50022
diff
changeset
|
769 with repo.dirstate.changing_parents(repo): |
47736
b9086ec4d28b
keyword: use `update_file_p1` instead of `normallookup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47711
diff
changeset
|
770 kwt.overwrite(recctx, modified, False, True) |
b9086ec4d28b
keyword: use `update_file_p1` instead of `normallookup`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47711
diff
changeset
|
771 kwt.overwrite(recctx, added, False, True, True) |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
772 kwt.restrict = True |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
773 return ret |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
774 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
775 |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
776 def kwfilectx_cmp(orig, self, fctx): |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
777 if fctx._customcmp: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
778 return fctx.cmp(self) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
779 kwt = getattr(self._repo, '_keywordkwt', None) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
780 if kwt is None: |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
781 return orig(self, fctx) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
782 # keyword affects data size, comparing wdir and filelog size does |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
783 # not make sense |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
784 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
785 fctx._filenode is None |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
786 and ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
787 self._repo._encodefilterpats |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
788 or kwt.match(fctx.path()) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
789 and b'l' not in fctx.flags() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
790 or self.size() - 4 == fctx.size() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
791 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
792 or self.size() == fctx.size() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
793 ): |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
794 return self._filelog.cmp(self._filenode, fctx.data()) |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
795 return True |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
796 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
797 |
6502
ba8a0338baf7
keyword: collect filename patterns, wrap dispatch._parse in uisetup
Christian Ebert <blacktrash@gmx.net>
parents:
6416
diff
changeset
|
798 def uisetup(ui): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
799 """Monkeypatches dispatch._parse to retrieve user command. |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
800 Overrides file method to return kwfilelog instead of filelog |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
801 if file matches user configuration. |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
802 Wraps commit to overwrite configured files with updated |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
803 keyword substitutions. |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
43554
diff
changeset
|
804 Monkeypatches patch and webcommands.""" |
6502
ba8a0338baf7
keyword: collect filename patterns, wrap dispatch._parse in uisetup
Christian Ebert <blacktrash@gmx.net>
parents:
6416
diff
changeset
|
805 |
11678
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
806 def kwdispatch_parse(orig, ui, args): |
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
807 '''Monkeypatch dispatch._parse to obtain running hg command.''' |
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
808 cmd, func, args, options, cmdoptions = orig(ui, args) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
809 kwtools[b'hgcmd'] = cmd |
11678
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
810 return cmd, func, args, options, cmdoptions |
6502
ba8a0338baf7
keyword: collect filename patterns, wrap dispatch._parse in uisetup
Christian Ebert <blacktrash@gmx.net>
parents:
6416
diff
changeset
|
811 |
50821
fcb67b8c8107
wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50258
diff
changeset
|
812 extensions.wrapfunction(dispatch, '_parse', kwdispatch_parse) |
6502
ba8a0338baf7
keyword: collect filename patterns, wrap dispatch._parse in uisetup
Christian Ebert <blacktrash@gmx.net>
parents:
6416
diff
changeset
|
813 |
50821
fcb67b8c8107
wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50258
diff
changeset
|
814 extensions.wrapfunction(context.filectx, 'cmp', kwfilectx_cmp) |
fcb67b8c8107
wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50258
diff
changeset
|
815 extensions.wrapfunction(patch.patchfile, '__init__', kwpatchfile_init) |
fcb67b8c8107
wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50258
diff
changeset
|
816 extensions.wrapfunction(patch, 'diff', kwdiff) |
fcb67b8c8107
wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50258
diff
changeset
|
817 extensions.wrapfunction(cmdutil, 'amend', kw_amend) |
fcb67b8c8107
wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50258
diff
changeset
|
818 extensions.wrapfunction(cmdutil, 'copy', kw_copy) |
fcb67b8c8107
wrapfunction: use sysstr instead of bytes as argument in "keyword"
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50258
diff
changeset
|
819 extensions.wrapfunction(cmdutil, 'dorecord', kw_dorecord) |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
820 for c in nokwwebcommands.split(): |
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
821 extensions.wrapfunction(webcommands, c, kwweb_skip) |
52084
8b7123c8947b
update: add a Rust fast-path when updating from null (and clean)
Raphaël Gomès <rgomes@octobus.net>
parents:
51901
diff
changeset
|
822 merge.MAYBE_USE_RUST_UPDATE = False |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
823 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
824 |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
825 def reposetup(ui, repo): |
33083
279c072a5c49
keyword: wrap functions only once at loading keyword extension
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33082
diff
changeset
|
826 '''Sets up repo as kwrepo for keyword substitution.''' |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
827 |
7853
af062a9fea9b
bundlerepo: reintroduce dirstate
Matt Mackall <mpm@selenic.com>
parents:
7762
diff
changeset
|
828 try: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
829 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
830 not repo.local() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
831 or kwtools[b'hgcmd'] in nokwcommands.split() |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
832 or b'.hg' in util.splitpath(repo.root) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
833 or repo._url.startswith(b'bundle:') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
834 ): |
7853
af062a9fea9b
bundlerepo: reintroduce dirstate
Matt Mackall <mpm@selenic.com>
parents:
7762
diff
changeset
|
835 return |
af062a9fea9b
bundlerepo: reintroduce dirstate
Matt Mackall <mpm@selenic.com>
parents:
7762
diff
changeset
|
836 except AttributeError: |
af062a9fea9b
bundlerepo: reintroduce dirstate
Matt Mackall <mpm@selenic.com>
parents:
7762
diff
changeset
|
837 pass |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
838 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
839 inc, exc = [], [b'.hg*'] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
840 for pat, opt in ui.configitems(b'keyword'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
841 if opt != b'ignore': |
11678
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
842 inc.append(pat) |
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
843 else: |
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
844 exc.append(pat) |
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
845 if not inc: |
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
846 return |
f5aa20e177c0
keyword: move collecting of [keyword] patterns to reposetup (issue2303)
Christian Ebert <blacktrash@gmx.net>
parents:
11350
diff
changeset
|
847 |
33082
735218be6122
keyword: use _keywordkwt of repository instead of kwtools['templater']
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33081
diff
changeset
|
848 kwt = kwtemplater(ui, repo, inc, exc) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
849 |
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
850 class kwrepo(repo.__class__): |
6114
ee83510fe567
keyword: move expand/shrink decisions into kwtemplater
Christian Ebert <blacktrash@gmx.net>
parents:
6092
diff
changeset
|
851 def file(self, f): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
852 if f[0] == b'/': |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
853 f = f[1:] |
23878
37a92908a382
localrepo: remove all external users of localrepo.sopener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
23877
diff
changeset
|
854 return kwfilelog(self.svfs, kwt, f) |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
855 |
5884
a139f141dcae
keyword: support mq; handle (q)record more gracefully
Christian Ebert <blacktrash@gmx.net>
parents:
5831
diff
changeset
|
856 def wread(self, filename): |
a139f141dcae
keyword: support mq; handle (q)record more gracefully
Christian Ebert <blacktrash@gmx.net>
parents:
5831
diff
changeset
|
857 data = super(kwrepo, self).wread(filename) |
6115
8121e9d7bfd2
keyword: make main class and hg command accessible
Christian Ebert <blacktrash@gmx.net>
parents:
6114
diff
changeset
|
858 return kwt.wread(filename, data) |
5884
a139f141dcae
keyword: support mq; handle (q)record more gracefully
Christian Ebert <blacktrash@gmx.net>
parents:
5831
diff
changeset
|
859 |
9096
47bc92755b95
keyword: eliminate potential reference cycles from kwrepo
Christian Ebert <blacktrash@gmx.net>
parents:
8996
diff
changeset
|
860 def commit(self, *args, **opts): |
8996
23e941d7f507
keyword: make repo.commit use a custom commitctx wrapper
Christian Ebert <blacktrash@gmx.net>
parents:
8957
diff
changeset
|
861 # use custom commitctx for user commands |
23e941d7f507
keyword: make repo.commit use a custom commitctx wrapper
Christian Ebert <blacktrash@gmx.net>
parents:
8957
diff
changeset
|
862 # other extensions can still wrap repo.commitctx directly |
9096
47bc92755b95
keyword: eliminate potential reference cycles from kwrepo
Christian Ebert <blacktrash@gmx.net>
parents:
8996
diff
changeset
|
863 self.commitctx = self.kwcommitctx |
47bc92755b95
keyword: eliminate potential reference cycles from kwrepo
Christian Ebert <blacktrash@gmx.net>
parents:
8996
diff
changeset
|
864 try: |
10495
2c2d2f1354b4
keyword: do not postpone commit hooks
Christian Ebert <blacktrash@gmx.net>
parents:
10492
diff
changeset
|
865 return super(kwrepo, self).commit(*args, **opts) |
9096
47bc92755b95
keyword: eliminate potential reference cycles from kwrepo
Christian Ebert <blacktrash@gmx.net>
parents:
8996
diff
changeset
|
866 finally: |
47bc92755b95
keyword: eliminate potential reference cycles from kwrepo
Christian Ebert <blacktrash@gmx.net>
parents:
8996
diff
changeset
|
867 del self.commitctx |
8996
23e941d7f507
keyword: make repo.commit use a custom commitctx wrapper
Christian Ebert <blacktrash@gmx.net>
parents:
8957
diff
changeset
|
868 |
42620
d98ec36be808
convert: add a config option to help doing identity hg->hg conversion
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
40220
diff
changeset
|
869 def kwcommitctx(self, ctx, error=False, origctx=None): |
d98ec36be808
convert: add a config option to help doing identity hg->hg conversion
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
40220
diff
changeset
|
870 n = super(kwrepo, self).commitctx(ctx, error, origctx) |
10604
9a36d159595f
keyword: remove spurious locks, improve handling of wlock
Christian Ebert <blacktrash@gmx.net>
parents:
10603
diff
changeset
|
871 # no lock needed, only called from repo.commit() which already locks |
16809
6b704fa2bea1
keyword: rename kwt.record attribute to kwt.postcommit
Christian Ebert <blacktrash@gmx.net>
parents:
16743
diff
changeset
|
872 if not kwt.postcommit: |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
873 restrict = kwt.restrict |
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
874 kwt.restrict = True |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
875 kwt.overwrite( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
876 self[n], sorted(ctx.added() + ctx.modified()), False, True |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42620
diff
changeset
|
877 ) |
12625
d87f3ff904ba
keyword: refactor kwtemplater.overwrite()
Christian Ebert <blacktrash@gmx.net>
parents:
12605
diff
changeset
|
878 kwt.restrict = restrict |
10604
9a36d159595f
keyword: remove spurious locks, improve handling of wlock
Christian Ebert <blacktrash@gmx.net>
parents:
10603
diff
changeset
|
879 return n |
5815
0637d97a8cb4
Add extension for filewise RCS-keyword expansion in working dir
Christian Ebert <blacktrash@gmx.net>
parents:
diff
changeset
|
880 |
15183
59e8bc22506e
rollback: avoid unsafe rollback when not at tip (issue2998)
Greg Ward <greg@gerg.ca>
parents:
15083
diff
changeset
|
881 def rollback(self, dryrun=False, force=False): |
32953
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
882 with self.wlock(): |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
883 origrestrict = kwt.restrict |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
884 try: |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
885 if not dryrun: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
886 changed = self[b'.'].files() |
32953
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
887 ret = super(kwrepo, self).rollback(dryrun, force) |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
888 if not dryrun: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
889 ctx = self[b'.'] |
32953
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
890 modified, added = _preselect(ctx.status(), changed) |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
891 kwt.restrict = False |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
892 kwt.overwrite(ctx, modified, True, True) |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
893 kwt.overwrite(ctx, added, True, False) |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
894 return ret |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
895 finally: |
69d1c3ea0d6f
keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net>
parents:
32855
diff
changeset
|
896 kwt.restrict = origrestrict |
12498
4846e8cd9327
keyword: support rollback by restoring expansion to previous values
Christian Ebert <blacktrash@gmx.net>
parents:
12497
diff
changeset
|
897 |
33079
5a51db8bf41b
keyword: make wrapped repository and kwtemplater refer to each other
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33077
diff
changeset
|
898 repo.__class__ = kwrepo |
5a51db8bf41b
keyword: make wrapped repository and kwtemplater refer to each other
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
33077
diff
changeset
|
899 repo._keywordkwt = kwt |