Mercurial > hgrepos > DevTools > mercurial-extensions
annotate extensions/kwarchive.py @ 246:d23d3d97c106
FIX: Typo in docu: [keyword] -> [keywords]
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Thu, 20 Dec 2018 00:01:59 +0100 |
| parents | a959c387bf24 |
| children | 436b2db75a34 |
| rev | line source |
|---|---|
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
|
125
fb7e1e4e4d2c
Provide some SCCS markers also to be able to search with "what(1)" also
Franz Glasner <hg@dom66.de>
parents:
124
diff
changeset
|
2 # @(#) $HGheader$ |
|
104
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
3 # $HGnodeid$ |
|
34
7c4addd60935
Put keyword into the extensions itself
Franz Glasner <hg@dom66.de>
parents:
33
diff
changeset
|
4 # |
| 60 | 5 """like :hg:`archive` but with keyword expansion within selected files |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
6 |
|
129
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
7 Configuration is done in a versioned ``.hgkwarchive`` configuration |
|
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
8 file. This file uses the same syntax as all other Mercurial |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
9 configuration files. |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
10 |
|
129
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
11 The ``[patterns]`` section specifies which files should have the |
|
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
12 keywords expanded and possibly the style of expansion. The keys are |
|
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
13 Mercurial file name patterns as described in :hg:`patterns`. |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
14 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
15 Example:: |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
16 |
|
120
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
17 # |
|
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
18 # Determine which files are consideres for keyword expansion in |
|
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
19 # which style |
|
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
20 # |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
21 [patterns] |
|
118
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
22 # |
|
124
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
23 # Expand keywords in every python file except those matching "x*" |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
24 # using the default RCS style expansion format |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
25 # |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
26 **.py = |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
27 x* = NO |
|
124
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
28 # This file has reStructuredText style keyword expansion "|VCS<kw>|" only |
|
87
a9b532915ce0
Document the "reST" marker within patterns
Franz Glasner <hg@dom66.de>
parents:
86
diff
changeset
|
29 path:VERSION = reST |
|
124
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
30 # This file has reStructuredText style and RCS style keyword expansion |
|
118
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
31 path:README = reST, RCS |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
32 |
|
246
d23d3d97c106
FIX: Typo in docu: [keyword] -> [keywords]
Franz Glasner <hg@dom66.de>
parents:
160
diff
changeset
|
33 The ``[keywords]`` section specifies which keywords are expanded. Aliases |
|
129
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
34 can be defined also. By default the pre-defined set of RCC/CVS/SVN-like |
|
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
35 keywords is expanded. A non-empty ``[keyword]`` section defines an |
|
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
36 explicit white-list of expanded keywords and/or aliases. |
|
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
37 |
|
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
38 Example:: |
|
51a4f1f5df09
Docu: enhanced the docu of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
126
diff
changeset
|
39 |
|
120
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
40 # |
|
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
41 # Determine which keywords are expanded. |
|
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
42 # A missing and/or empty section means that all predefined keywords |
|
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
43 # are expanded. |
|
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
44 # |
|
124
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
45 # Consisting of key-value pairs with of the form |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
46 # |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
47 # Alias = PreDefinedKeyword |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
48 # |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
49 # An empty `PreDefinedKeyword' means the identity. |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
50 # |
|
120
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
51 [keywords] |
|
122
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
52 # `Revision' and possibly the `VCSRevision' keyword is expanded |
|
120
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
53 Revision = |
|
124
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
54 # |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
55 # Additionally: `MyKeyword' is expanded with the contents of the |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
56 # pre-defined `JustDate' |
|
46b7d34ef0b2
Enhanced the module documentation of "kwarchive"
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
57 # |
|
122
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
58 MyKeyword = JustDate |
|
133
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
59 # |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
60 # `MyCustomSubstKeyword' is a substitution keyword. It's value is the |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
61 # plain string after "replace:: ". |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
62 # |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
63 MyCustomSubstKeyword = replace:: This is my replacement content |
|
120
9ed197b60e99
Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents:
119
diff
changeset
|
64 |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
65 A non-existing ``.hgkwarchive`` file deactivates keyword expansion as does |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
66 an empty ``[patterns]`` section. |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
67 |
|
130
c3397e670063
Docu: drop a note why templates are not supported in keyword definitions
Franz Glasner <hg@dom66.de>
parents:
129
diff
changeset
|
68 .. note:: Because the keyword expansion is defined in a *versioned* file |
|
c3397e670063
Docu: drop a note why templates are not supported in keyword definitions
Franz Glasner <hg@dom66.de>
parents:
129
diff
changeset
|
69 no templating is supported here. This could lead to remote |
|
c3397e670063
Docu: drop a note why templates are not supported in keyword definitions
Franz Glasner <hg@dom66.de>
parents:
129
diff
changeset
|
70 code execution secnarios because Mercurial templates can execute |
|
c3397e670063
Docu: drop a note why templates are not supported in keyword definitions
Franz Glasner <hg@dom66.de>
parents:
129
diff
changeset
|
71 a big bunch of Python functions. |
|
c3397e670063
Docu: drop a note why templates are not supported in keyword definitions
Franz Glasner <hg@dom66.de>
parents:
129
diff
changeset
|
72 |
|
137
5e502e9dd5e5
As an example: put the |VCSRevision| into the extensions also and print it with the help output
Franz Glasner <hg@dom66.de>
parents:
136
diff
changeset
|
73 (rev |VCSRevision|) |
|
5e502e9dd5e5
As an example: put the |VCSRevision| into the extensions also and print it with the help output
Franz Glasner <hg@dom66.de>
parents:
136
diff
changeset
|
74 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
75 """ |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
76 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
77 from __future__ import absolute_import |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
78 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
79 |
|
42
b46ab29aefd8
Remove the "__version__" variable: use "__revision__" only instead
Franz Glasner <hg@dom66.de>
parents:
41
diff
changeset
|
80 __revision__ = "$Revision$" |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
81 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
82 __author__ = "Franz Glasner" |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
83 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
84 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
85 import os |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
86 import itertools |
|
103
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
87 import inspect |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
88 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
89 from mercurial.i18n import _ |
|
112
1744b36c39b7
Don't import mercurial.commands because it's not used
Franz Glasner <hg@dom66.de>
parents:
111
diff
changeset
|
90 from mercurial import (archival, config, cmdutil, error, match, |
|
104
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
91 pycompat, scmutil, templatefilters, util, node) |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
92 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
93 |
|
105
f142bdb90c8d
Testify that "revinfo" and "kwarchive" work with Mercurial v4.6.1 now
Franz Glasner <hg@dom66.de>
parents:
104
diff
changeset
|
94 testedwith = "4.3.1 4.3.2 4.4.1 4.4.2 4.5.2 4.6.1" |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
95 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
96 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
97 SHORTENED_HG_SCHEMES = { |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
98 "ssh": "hg+ssh", |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
99 "http": "hg+http", |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
100 "https": "hg+https", |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
101 "file": "file", |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
102 } |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
103 |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
104 |
|
156
d92850f876a4
Use a constant to define the ".hgkwarchive" name
Franz Glasner <hg@dom66.de>
parents:
155
diff
changeset
|
105 KWARCHIVE_CONFIG = ".hgkwarchive" |
|
d92850f876a4
Use a constant to define the ".hgkwarchive" name
Franz Glasner <hg@dom66.de>
parents:
155
diff
changeset
|
106 |
|
d92850f876a4
Use a constant to define the ".hgkwarchive" name
Franz Glasner <hg@dom66.de>
parents:
155
diff
changeset
|
107 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
108 cmdtable = {} |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
109 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
110 command = cmdutil.command(cmdtable) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
111 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
112 |
|
150
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
113 def getversion(): |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
114 """Provide the version information for verbose :hg:`version` output. |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
115 |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
116 Read the :file:`VERSION` from the parent of the :file:`extensions` |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
117 directory. |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
118 |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
119 """ |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
120 import re |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
121 import os |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
122 try: |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
123 fn = __file__ |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
124 except NameError: |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
125 return "<unknown>" |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
126 else: |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
127 try: |
|
157
e12025e46375
Use util.posixfile when reading a custom given .hgkwarchive file for Mercurial portability reasons
Franz Glasner <hg@dom66.de>
parents:
156
diff
changeset
|
128 # this is pure Python standard functionality: no util.posixfile |
|
150
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
129 verdata = open(os.path.join(os.path.dirname(fn), |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
130 "../VERSION"), |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
131 "r").read() |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
132 return re.search("^(.*)", verdata,).group(1) |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
133 except OSError: |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
134 return "<not found>" |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
135 |
|
f195b4704726
For each extension: provide a "getversion()" function that will be called by Mercurial to get the module version.
Franz Glasner <hg@dom66.de>
parents:
147
diff
changeset
|
136 |
|
114
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
137 @command( |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
138 'kwarchive', |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
139 [ |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
140 ('', 'no-decode', None, _('do not pass files through decoders')), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
141 ('p', 'prefix', '', _('directory prefix for files in archive'), _('PREFIX')), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
142 ('r', 'rev', '', _('revision to distribute'), _('REV')), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
143 ('t', 'type', '', _('type of distribution to create'), _('TYPE')), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
144 ('', 'path', 'default', _('the canonical repository to use'), _('PATH')), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
145 ('', "kwconfig", '', _('an alternate pattern configuration configuration file'), _('PATTERNCONFIG')), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
146 ('', "no-shorten-path", None, _("don't shorten the path urls")), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
147 ('', "path-filter", "short", _("determine how the path will be printed")), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
148 ('', "user-filter", "user", _("the part of the user to be printed"), _("USERFILTER")) |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
149 ] + cmdutil.subrepoopts + cmdutil.walkopts, |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
150 _('[OPTION]... DEST')) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
151 def kwarchive(ui, repo, dest, **opts): |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
152 '''create an unversioned archive of a repository revision with some keywords expanded |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
153 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
154 By default, the revision used is the parent of the working |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
155 directory; use -r/--rev to specify a different revision. |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
156 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
157 The archive type is automatically detected based on file |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
158 extension (to override, use -t/--type). |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
159 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
160 .. container:: verbose |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
161 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
162 Examples: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
163 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
164 - create a zip file containing the 1.0 release:: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
165 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
166 hg archive -r 1.0 project-1.0.zip |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
167 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
168 - create a tarball excluding .hg files:: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
169 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
170 hg archive project.tar.gz -X ".hg*" |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
171 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
172 Valid types are: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
173 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
174 :``files``: a directory full of files (default) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
175 :``tar``: tar archive, uncompressed |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
176 :``tbz2``: tar archive, compressed using bzip2 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
177 :``tgz``: tar archive, compressed using gzip |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
178 :``uzip``: zip archive, uncompressed |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
179 :``zip``: zip archive, compressed using deflate |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
180 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
181 The exact name of the destination archive or directory is given |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
182 using a format string; see :hg:`help export` for details. |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
183 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
184 Each member added to an archive file has a directory prefix |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
185 prepended. Use -p/--prefix to specify a format string for the |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
186 prefix. The default is the basename of the archive, with suffixes |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
187 removed. |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
188 |
| 41 | 189 Use --path to specify named path information from :hg:`paths` as |
| 190 the canonical repository location. Use ``.`` for the current | |
| 191 repository root root. If no path is given then ``default`` is | |
| 192 assumed. | |
|
35
f29c98e54f50
Implement a "--path" option for kwarchive to select a repository to use as canonical one
Franz Glasner <hg@dom66.de>
parents:
34
diff
changeset
|
193 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
194 Full path URLs are printed somewhat shortened by default. To use |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
195 them as-is use the --no-shorten-path option. |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
196 |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
197 Allowed --user-filter values are: |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
198 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
199 :``user``: the short representation of a user name or email address |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
200 :``person``: the name before an email address as per RFC 5322 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
201 :``email``: the email address |
|
81
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
202 :``full``: the complete user information w/o filtering |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
203 :``none``: an alias for ``full`` |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
204 |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
205 The --path-filter values detemine how the path will be printed: |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
206 |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
207 :``full``: the path will be printed as is (including passwords et al.) |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
208 :``nopwd``: like ``full`` but without passwords |
| 101 | 209 :``short``: shorten the path somehow: no user/password information and |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
210 only a short server name |
|
100
eed73af1ab79
Implemented a "last" option for the "--path-filter": shorten to the last path component.
Franz Glasner <hg@dom66.de>
parents:
99
diff
changeset
|
211 :``last``: shorten the path to the last component |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
212 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
213 Returns 0 on success. |
| 41 | 214 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
215 ''' |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
216 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
217 opts = pycompat.byteskwargs(opts) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
218 ctx = scmutil.revsingle(repo, opts.get('rev')) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
219 if not ctx: |
| 160 | 220 raise error.Abort(_('no Mercurial revision found: please specify a revision')) |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
221 node = ctx.node() |
|
103
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
222 dest = makefilename_compat(ctx, dest) |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
223 if os.path.realpath(dest) == repo.root: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
224 raise error.Abort(_('repository root cannot be destination')) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
225 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
226 kind = opts.get('type') or archival.guesskind(dest) or 'files' |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
227 prefix = opts.get('prefix') |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
228 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
229 if dest == '-': |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
230 if kind == 'files': |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
231 raise error.Abort(_('cannot archive plain files to stdout')) |
|
103
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
232 dest = makefileobj_compat(ctx, dest) |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
233 if not prefix: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
234 prefix = os.path.basename(repo.root) + '-%h' |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
235 |
|
103
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
236 prefix = makefilename_compat(ctx, prefix) |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
237 matchfn = scmutil.match(ctx, [], opts) |
|
29
58f47399691c
New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents:
28
diff
changeset
|
238 |
|
58f47399691c
New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents:
28
diff
changeset
|
239 # |
|
31
0597395e2d18
Comment: better explanation of what is monkey-patched
Franz Glasner <hg@dom66.de>
parents:
30
diff
changeset
|
240 # Monkey patch archival's archivers classes so that an archiver's "addfile()" |
|
29
58f47399691c
New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents:
28
diff
changeset
|
241 # expands keywords |
|
58f47399691c
New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents:
28
diff
changeset
|
242 # |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
243 for ac in ("fileit", "tarit", "zipit",): |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
244 patch_archiver_class( |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
245 ac, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
246 make_keyword_filter( |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
247 ui, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
248 repo, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
249 ctx, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
250 ac, |
|
35
f29c98e54f50
Implement a "--path" option for kwarchive to select a repository to use as canonical one
Franz Glasner <hg@dom66.de>
parents:
34
diff
changeset
|
251 archival.tidyprefix(dest, kind, prefix), |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
252 hgpath=opts.get("path"), |
|
136
f470702886b4
Renamed some internal functions to provide a more descriptive name
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
253 path_filter=get_checked_path_filter_option(opts), |
|
f470702886b4
Renamed some internal functions to provide a more descriptive name
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
254 user_filter=get_checked_user_filter_option(opts), |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
255 kwconfig=opts.get("kwconfig"))) |
|
30
1670760f695f
Monkey-patch all current archivers in mercurial.archival: fileit, tarit and ziptit
Franz Glasner <hg@dom66.de>
parents:
29
diff
changeset
|
256 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
257 archival.archive(repo, dest, node, kind, not opts.get('no_decode'), |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
258 matchfn, prefix, subrepos=opts.get('subrepos')) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
259 |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
260 # XXX FIXME: Should the original methods be restored here? |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
261 |
|
46
4a0c26dfef3c
Comment about automatically amending .hg_archival.txt with "path" items.
Franz Glasner <hg@dom66.de>
parents:
45
diff
changeset
|
262 # XXX FIXME: Should we automatically amend ".hg_archival.txt" with a |
|
4a0c26dfef3c
Comment about automatically amending .hg_archival.txt with "path" items.
Franz Glasner <hg@dom66.de>
parents:
45
diff
changeset
|
263 # path item? But this means shat we should know the complete |
|
4a0c26dfef3c
Comment about automatically amending .hg_archival.txt with "path" items.
Franz Glasner <hg@dom66.de>
parents:
45
diff
changeset
|
264 # configuration ("ui.archivemeta") and it's name and some |
|
4a0c26dfef3c
Comment about automatically amending .hg_archival.txt with "path" items.
Franz Glasner <hg@dom66.de>
parents:
45
diff
changeset
|
265 # output match filters (see archival.archive()). |
|
4a0c26dfef3c
Comment about automatically amending .hg_archival.txt with "path" items.
Franz Glasner <hg@dom66.de>
parents:
45
diff
changeset
|
266 |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
267 |
|
114
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
268 @command( |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
269 'kwprint', |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
270 [ |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
271 ('r', 'rev', '', _('revision to distribute'), _('REV')), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
272 ('', 'path', 'default', _('the canonical repository to use'), _('PATH')), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
273 ('', "no-shorten-path", None, _("don't shorten the path urls")), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
274 ('', "path-filter", "short", _("determine how the path will be printed")), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
275 ('', "user-filter", "user", _("the part of the user to be printed"), _("USERFILTER")), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
276 ('', "reST", None, _("output in reST substitution definition syntax")), |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
277 ('', "no-file", None, _("don't show file-dependent keywords")), |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
278 ] + cmdutil.subrepoopts + cmdutil.walkopts, |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
279 _('[OPTION]...')) |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
280 def kwprint(ui, repo, **opts): |
|
109
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
281 '''print the file-independent keywords and for an example file-dependent |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
282 keywords |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
283 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
284 By default, the revision used is the parent of the working |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
285 directory; use -r/--rev to specify a different revision. |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
286 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
287 Use --path to specify named path information from :hg:`paths` as |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
288 the canonical repository location. Use ``.`` for the current |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
289 repository root root. If no path is given then ``default`` is |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
290 assumed. |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
291 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
292 Full path URLs are printed somewhat shortened by default. To use |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
293 them as-is use the --no-shorten-path option. |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
294 |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
295 Allowed --user-filter values are: |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
296 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
297 :``user``: the short representation of a user name or email address |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
298 :``person``: the name before an email address as per RFC 5322 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
299 :``email``: the email address |
|
81
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
300 :``full``: the complete user information w/o filtering |
|
85
01ca9e1601a7
All extensions work with Mercurial 4.4.1 also
Franz Glasner <hg@dom66.de>
parents:
84
diff
changeset
|
301 :``none``: an alias for ``full`` |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
302 |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
303 The --path-filter values detemine how the path will be printed: |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
304 |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
305 :``full``: the path will be printed as is (including passwords et al.) |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
306 :``nopwd``: like ``full`` but without passwords |
| 108 | 307 :``short``: shorten the path somehow: no user/password information and |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
308 only a short server name |
|
100
eed73af1ab79
Implemented a "last" option for the "--path-filter": shorten to the last path component.
Franz Glasner <hg@dom66.de>
parents:
99
diff
changeset
|
309 :``last``: shorten the path to the last component |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
310 |
|
78
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
311 Use --reST to output the keyword in a format suitable for including |
|
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
312 in reStructuredText (reST) documents by using it's substitution feature. |
|
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
313 All revision keyword names have a ``VCS`` prefix. |
|
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
314 |
|
109
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
315 Use --no-file to suppress the output of file-dependent keywords with an |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
316 example file. |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
317 |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
318 Returns 0 on success. |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
319 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
320 ''' |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
321 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
322 opts = pycompat.byteskwargs(opts) |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
323 ctx = scmutil.revsingle(repo, opts.get('rev')) |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
324 if not ctx: |
| 160 | 325 raise error.Abort(_('no Mercurial revision found: please specify a revision')) |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
326 node = ctx.node() |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
327 |
|
103
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
328 prefix = makefilename_compat(ctx, "") |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
329 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
330 keywords = make_node_keywords( |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
331 ui, repo, ctx, prefix, |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
332 hgpath=opts.get("path"), |
|
136
f470702886b4
Renamed some internal functions to provide a more descriptive name
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
333 path_filter=get_checked_path_filter_option(opts), |
|
f470702886b4
Renamed some internal functions to provide a more descriptive name
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
334 user_filter=get_checked_user_filter_option(opts)) |
|
109
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
335 # make file-dependent keywords for an example file |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
336 file_keywords = make_file_keywords( |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
337 keywords, |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
338 "dir1/dir2/test.file", |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
339 "a4dd6f4b22e11fec41158eec187630c24a43120a") |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
340 for key in sorted(keywords.keys()): |
|
78
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
341 if opts.get("reST"): |
|
140
02126a3ad162
FIX: for empty keyword values: write a non-breaking space in reST mode instead of a bogus empty "replace::" value
Franz Glasner <hg@dom66.de>
parents:
137
diff
changeset
|
342 if keywords[key]: |
|
02126a3ad162
FIX: for empty keyword values: write a non-breaking space in reST mode instead of a bogus empty "replace::" value
Franz Glasner <hg@dom66.de>
parents:
137
diff
changeset
|
343 ui.write(".. |VCS%s| replace:: %s\n" % (key, keywords[key])) |
|
02126a3ad162
FIX: for empty keyword values: write a non-breaking space in reST mode instead of a bogus empty "replace::" value
Franz Glasner <hg@dom66.de>
parents:
137
diff
changeset
|
344 else: |
|
02126a3ad162
FIX: for empty keyword values: write a non-breaking space in reST mode instead of a bogus empty "replace::" value
Franz Glasner <hg@dom66.de>
parents:
137
diff
changeset
|
345 # |
|
02126a3ad162
FIX: for empty keyword values: write a non-breaking space in reST mode instead of a bogus empty "replace::" value
Franz Glasner <hg@dom66.de>
parents:
137
diff
changeset
|
346 # empty replacements are not allowed: |
|
02126a3ad162
FIX: for empty keyword values: write a non-breaking space in reST mode instead of a bogus empty "replace::" value
Franz Glasner <hg@dom66.de>
parents:
137
diff
changeset
|
347 # write a non-breaking space instead |
|
02126a3ad162
FIX: for empty keyword values: write a non-breaking space in reST mode instead of a bogus empty "replace::" value
Franz Glasner <hg@dom66.de>
parents:
137
diff
changeset
|
348 # |
|
02126a3ad162
FIX: for empty keyword values: write a non-breaking space in reST mode instead of a bogus empty "replace::" value
Franz Glasner <hg@dom66.de>
parents:
137
diff
changeset
|
349 ui.write(".. |VCS%s| unicode:: 0xA0\n" % key) |
|
78
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
350 else: |
|
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
351 ui.write("$%s: %s $\n" % (key, keywords[key])) |
|
109
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
352 if not opts.get("no_file"): |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
353 ui.write("\n") |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
354 for key in sorted(file_keywords.keys()): |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
355 if opts.get("reST"): |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
356 ui.write(".. |VCS%s| replace:: %s\n" % (key, file_keywords[key])) |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
357 else: |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
358 ui.write("$%s: %s $\n" % (key, file_keywords[key])) |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
359 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
360 |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
361 def patch_archiver_class(archivername, filter): |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
362 """Patch an archiver class and return the original unbound method""" |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
363 |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
364 archiver_class = getattr(archival, archivername) |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
365 orig_addfile = getattr(archiver_class, "addfile") |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
366 |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
367 def new_addfile(self, name, mode, isline, data): |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
368 return orig_addfile(self, name, mode, isline, filter(name, data)) |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
369 |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
370 setattr(archiver_class, "addfile", new_addfile) |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
371 return orig_addfile |
|
29
58f47399691c
New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents:
28
diff
changeset
|
372 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
373 |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
374 def make_keyword_filter(ui, repo, ctx, archive_class, prefix, |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
375 hgpath="default", |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
376 path_filter="short", |
|
66
fe4feca5b136
The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents:
65
diff
changeset
|
377 user_filter="user", |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
378 kwconfig=""): |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
379 keywords = make_node_keywords(ui, repo, ctx, prefix, |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
380 hgpath=hgpath, |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
381 path_filter=path_filter, |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
382 user_filter=user_filter) |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
383 kwconfigdata = kwconfigname = None |
|
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
384 if kwconfig: |
|
157
e12025e46375
Use util.posixfile when reading a custom given .hgkwarchive file for Mercurial portability reasons
Franz Glasner <hg@dom66.de>
parents:
156
diff
changeset
|
385 kwconfigdata = util.posixfile(kwconfig, "rb").read() |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
386 kwconfigname = kwconfig |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
387 try: |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
388 if kwconfigdata is None: |
|
156
d92850f876a4
Use a constant to define the ".hgkwarchive" name
Franz Glasner <hg@dom66.de>
parents:
155
diff
changeset
|
389 # use versioned .hgkwarchive |
|
d92850f876a4
Use a constant to define the ".hgkwarchive" name
Franz Glasner <hg@dom66.de>
parents:
155
diff
changeset
|
390 kwconfigdata = ctx[KWARCHIVE_CONFIG].data() |
|
d92850f876a4
Use a constant to define the ".hgkwarchive" name
Franz Glasner <hg@dom66.de>
parents:
155
diff
changeset
|
391 kwconfigname = KWARCHIVE_CONFIG |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
392 except (IOError, LookupError): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
393 def _filter(name, data): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
394 return data |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
395 else: |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
396 # |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
397 # Parse the data in ".hgkwarchive" and generate a |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
398 # Mercurial matcher |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
399 # |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
400 cfg = config.config() |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
401 cfg.parse(kwconfigname, kwconfigdata) |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
402 include = [] |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
403 exclude = [] |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
404 patterns = [] |
|
118
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
405 patterns_rcs = [] |
|
79
53c9f2f6a13e
Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents:
78
diff
changeset
|
406 patterns_rst = [] |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
407 if cfg.items("patterns"): |
|
111
d5165f72b0f0
Can not combine styles in the [patterns] section of .hgkwarchive
Franz Glasner <hg@dom66.de>
parents:
110
diff
changeset
|
408 for pattern, styles in cfg.items("patterns"): |
|
d5165f72b0f0
Can not combine styles in the [patterns] section of .hgkwarchive
Franz Glasner <hg@dom66.de>
parents:
110
diff
changeset
|
409 styles = [s.strip() for s in styles.upper().split(",")] |
|
d5165f72b0f0
Can not combine styles in the [patterns] section of .hgkwarchive
Franz Glasner <hg@dom66.de>
parents:
110
diff
changeset
|
410 if "YES" in styles or "INCLUDE" in styles: |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
411 include.append(pattern) |
|
111
d5165f72b0f0
Can not combine styles in the [patterns] section of .hgkwarchive
Franz Glasner <hg@dom66.de>
parents:
110
diff
changeset
|
412 elif "NO" in styles or "EXCLUDE" in styles: |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
413 exclude.append(pattern) |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
414 else: |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
415 patterns.append(pattern) |
|
118
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
416 if "REST" in styles or "RST" in styles \ |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
417 or "RCS" in styles: |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
418 if "RCS" in styles: |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
419 patterns_rcs.append(pattern) |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
420 if "REST" in styles or "RST" in styles: |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
421 patterns_rst.append(pattern) |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
422 else: |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
423 # default to RCS if no keyword style is given |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
424 patterns_rcs.append(pattern) |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
425 matcher = match.match(repo.root, '', patterns=patterns, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
426 include=include, exclude=exclude) |
|
91
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
427 else: |
|
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
428 matcher = match.never(repo.root, '') |
|
118
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
429 |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
430 # |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
431 # An empty patterns_rcs does not mean that match_rcs is always |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
432 # true. |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
433 # |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
434 if not patterns_rcs: |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
435 matcher_rcs = match.never(repo.root, '') |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
436 else: |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
437 matcher_rcs = match.match(repo.root, '', patterns=patterns_rcs, |
|
e9c78a0bfe6a
Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents:
116
diff
changeset
|
438 include=[], exclude=[]) |
|
91
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
439 # |
|
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
440 # An empty patterns_rst does not mean that match_rst is always |
|
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
441 # true. |
|
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
442 # |
|
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
443 if not patterns_rst: |
|
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
444 matcher_rst = match.never(repo.root, '') |
|
36369940d31b
FIX: An empty pattern list for RST style keywords does **not** mean that matching it is always true
Franz Glasner <hg@dom66.de>
parents:
88
diff
changeset
|
445 else: |
|
79
53c9f2f6a13e
Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents:
78
diff
changeset
|
446 matcher_rst = match.match(repo.root, '', patterns=patterns_rst, |
|
53c9f2f6a13e
Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents:
78
diff
changeset
|
447 include=[], exclude=[]) |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
448 |
|
104
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
449 # |
|
122
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
450 # This is the mapping from all the (white-listed) pre-defined |
|
126
0a6681db2772
Renamed "keyword_aliases" to "keyword_whitelist"
Franz Glasner <hg@dom66.de>
parents:
125
diff
changeset
|
451 # keywords to the keywords to be expanded in files (which can be |
|
0a6681db2772
Renamed "keyword_aliases" to "keyword_whitelist"
Franz Glasner <hg@dom66.de>
parents:
125
diff
changeset
|
452 # aliases. An empty right-side keyword maps the "alias" to itself. |
|
122
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
453 # |
|
126
0a6681db2772
Renamed "keyword_aliases" to "keyword_whitelist"
Franz Glasner <hg@dom66.de>
parents:
125
diff
changeset
|
454 keyword_whitelist = {} |
|
133
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
455 # |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
456 # This are the substitution keywords: |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
457 # this keywords are substituted with just another plain text |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
458 # (no real templates!) |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
459 # |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
460 keyword_substitutions = {} |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
461 |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
462 for alias, value in cfg.items("keywords"): |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
463 if value.startswith("replace:: "): |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
464 # allow is to be replaced: put it into the global white list |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
465 keyword_whitelist[alias] = [alias] |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
466 keyword_substitutions[alias] = value[len("replace:: "):] |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
467 else: |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
468 keyword_whitelist.setdefault(value or alias, []).append(alias) |
|
122
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
469 |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
470 # |
|
104
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
471 # Get the manifest to be able to determine a file's NodeId |
|
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
472 # |
|
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
473 manifest = ctx.manifest() |
|
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
474 |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
475 def _filter(name, data): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
476 real_name = name |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
477 if archive_class != "fileit": |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
478 if prefix: |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
479 assert name.startswith(prefix) |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
480 real_name = name[len(prefix):] |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
481 if not matcher(real_name): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
482 return data |
|
104
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
483 try: |
|
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
484 nodeid = node.hex(manifest[real_name]) |
|
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
485 except LookupError: |
|
65789e3e8e3d
Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents:
103
diff
changeset
|
486 nodeid = None |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
487 # file specific keywords |
|
109
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
488 file_keywords = make_file_keywords(keywords, real_name, nodeid) |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
489 # This prevents unwanted keyword expansion here |
|
119
65a2e6fc8442
Explicitely named marker for RCS style expansion
Franz Glasner <hg@dom66.de>
parents:
118
diff
changeset
|
490 _MARKER_RCS = '$' |
|
84
4f5a047a3d72
Apply reST style expansions to files that match patterns that have a value "REST" or "RST" (mixed case allowed).
Franz Glasner <hg@dom66.de>
parents:
81
diff
changeset
|
491 _MARKER_RST = '|' |
|
134
aa553e987939
Priorize keyword substitutions over other keyword types
Franz Glasner <hg@dom66.de>
parents:
133
diff
changeset
|
492 for kw, value in itertools.chain(keyword_substitutions.items(), keywords.items(), file_keywords.items()): |
|
133
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
493 # |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
494 # an empty database means: all keywords allowed, no aliases, |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
495 # no substitutions |
|
8d16138e00af
Implemented substitution type keyword expansion
Franz Glasner <hg@dom66.de>
parents:
131
diff
changeset
|
496 # |
|
126
0a6681db2772
Renamed "keyword_aliases" to "keyword_whitelist"
Franz Glasner <hg@dom66.de>
parents:
125
diff
changeset
|
497 if keyword_whitelist: |
|
0a6681db2772
Renamed "keyword_aliases" to "keyword_whitelist"
Franz Glasner <hg@dom66.de>
parents:
125
diff
changeset
|
498 kwds = keyword_whitelist.get(kw, []) |
|
122
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
499 else: |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
500 kwds = [kw] |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
501 for kw in kwds: |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
502 if matcher_rcs(real_name): |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
503 filekw = "%s%s%s" % (_MARKER_RCS, kw, _MARKER_RCS) |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
504 filevalue = "%s%s: %s %s" \ |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
505 % (_MARKER_RCS, kw, value, _MARKER_RCS) |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
506 data = data.replace(filekw, filevalue) |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
507 if matcher_rst(real_name): |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
508 filekw = "%sVCS%s%s" % (_MARKER_RST, kw, _MARKER_RST) |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
509 filevalue = value |
|
e6037655967b
Implemented a keyword white-list including aliases.
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
510 data = data.replace(filekw, filevalue) |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
511 return data |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
512 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
513 return _filter |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
514 |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
515 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
516 def make_node_keywords(ui, repo, ctx, prefix, |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
517 hgpath="default", |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
518 path_filter="short", |
|
66
fe4feca5b136
The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents:
65
diff
changeset
|
519 user_filter="user"): |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
520 """Make all the node-specific (i.e. file-path independent) keywords |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
521 |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
522 """ |
|
158
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
523 if hgpath and hgpath != ".": |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
524 try: |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
525 if path_filter == "full": |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
526 path_uri = bytes(util.url(ui.paths[hgpath].loc)) |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
527 elif path_filter == "nopwd": |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
528 path_uri = util.hidepassword(ui.paths[hgpath].loc) |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
529 elif path_filter == "short": |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
530 path_url = util.url(ui.paths[hgpath].loc) |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
531 path_url.scheme = SHORTENED_HG_SCHEMES.get(path_url.scheme, |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
532 "hg") |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
533 path_url.user = None |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
534 path_url.passwd = None |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
535 path_url.host = stripped_hostname(path_url.host) |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
536 path_url.port = None |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
537 path_uri = bytes(path_url) |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
538 elif path_filter == "last": |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
539 path_url = str(util.url(ui.paths[hgpath].loc)).split("/") |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
540 path_uri = bytes(b".../"+path_url[-1]) |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
541 else: |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
542 raise error.Abort("path-filter `%s' not implemented" |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
543 % path_filter) |
|
07e323b8d27d
Refactor: make_node_keywords: path handling
Franz Glasner <hg@dom66.de>
parents:
157
diff
changeset
|
544 except LookupError: |
| 160 | 545 raise error.Abort(_("remote repository named `%s' not found") % hgpath) |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
546 else: |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
547 path_uri = repo.root |
|
159
d313b33c9c06
Implement the "last" path-filter for the local repo "." also
Franz Glasner <hg@dom66.de>
parents:
158
diff
changeset
|
548 if path_filter == "last": |
|
d313b33c9c06
Implement the "last" path-filter for the local repo "." also
Franz Glasner <hg@dom66.de>
parents:
158
diff
changeset
|
549 m = max(path_uri.rfind(b"/"), path_uri.rfind(b"\\")) |
|
d313b33c9c06
Implement the "last" path-filter for the local repo "." also
Franz Glasner <hg@dom66.de>
parents:
158
diff
changeset
|
550 if m >= 0: |
|
d313b33c9c06
Implement the "last" path-filter for the local repo "." also
Franz Glasner <hg@dom66.de>
parents:
158
diff
changeset
|
551 path_uri = b".../" + path_uri[m+1:] |
|
80
f772a6cc2f67
Make a plain Windows UNC path into a file: URL for HGpath and friends.
Franz Glasner <hg@dom66.de>
parents:
79
diff
changeset
|
552 if path_uri.startswith(b"\\\\"): |
|
92
e1dc7aa60cd4
Check whether the path is a path with Windows drive letters also
Franz Glasner <hg@dom66.de>
parents:
91
diff
changeset
|
553 # Make an URL from a Windows UNC path |
|
e1dc7aa60cd4
Check whether the path is a path with Windows drive letters also
Franz Glasner <hg@dom66.de>
parents:
91
diff
changeset
|
554 path_uri = b"file:///" + path_uri.replace(b'\\', b'/') |
|
114
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
555 elif len(path_uri) >= 2 and (b'A' <= path_uri[0].upper() <= b'Z') \ |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
556 and path_uri[1] == b':': |
|
92
e1dc7aa60cd4
Check whether the path is a path with Windows drive letters also
Franz Glasner <hg@dom66.de>
parents:
91
diff
changeset
|
557 # make an URL from a Windows path with drive letter |
|
80
f772a6cc2f67
Make a plain Windows UNC path into a file: URL for HGpath and friends.
Franz Glasner <hg@dom66.de>
parents:
79
diff
changeset
|
558 path_uri = b"file:///" + path_uri.replace(b'\\', b'/') |
|
96
6ecb3909f95e
Make absolute POSIX paths always start with "file://" -- a path should always have the form of an URI
Franz Glasner <hg@dom66.de>
parents:
93
diff
changeset
|
559 elif path_uri.startswith(b'/'): |
|
6ecb3909f95e
Make absolute POSIX paths always start with "file://" -- a path should always have the form of an URI
Franz Glasner <hg@dom66.de>
parents:
93
diff
changeset
|
560 # an absolute POSIX path |
|
6ecb3909f95e
Make absolute POSIX paths always start with "file://" -- a path should always have the form of an URI
Franz Glasner <hg@dom66.de>
parents:
93
diff
changeset
|
561 path_uri = b"file://" + path_uri |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
562 keywords = { |
|
131
91077014c7b7
Added Mercurial specific keywords "HGbranch" and "HGbookmarks"
Franz Glasner <hg@dom66.de>
parents:
130
diff
changeset
|
563 "HGpath": path_uri, # XXX FIXME: Should Archive an alias of this |
|
91077014c7b7
Added Mercurial specific keywords "HGbranch" and "HGbookmarks"
Franz Glasner <hg@dom66.de>
parents:
130
diff
changeset
|
564 "HGbranch": ctx.branch(), |
|
143
717f326181b0
Add "HGphase" and "HGtags" to the list of expanded Mercurial-specific keywords
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
565 "HGtags": " ".join([tag for tag in ctx.tags() if tag != "tip"]), |
|
154
f287e23cb3ad
Don't print the leading '*' characters of active bookmarks in keyword expansion
Franz Glasner <hg@dom66.de>
parents:
150
diff
changeset
|
566 "HGbookmarks": " ".join([bm if not bm.startswith('*') else bm[1:] |
|
f287e23cb3ad
Don't print the leading '*' characters of active bookmarks in keyword expansion
Franz Glasner <hg@dom66.de>
parents:
150
diff
changeset
|
567 for bm in ctx.bookmarks() if bm != "@"]), |
|
144
2a59edc0a44a
Replace "HGphase" by the more standard "State" keyword.
Franz Glasner <hg@dom66.de>
parents:
143
diff
changeset
|
568 "State": ctx.phasestr(), |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
569 "HGrevision": ctx.hex(), |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
570 "Revision": templatefilters.short(ctx.hex()), |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
571 "Date": templatefilters.isodatesec(ctx.date()), |
|
115
06a60e2a9887
Added "JustDate" (from Visual Source Safe and Surround SCM) as date only keyword
Franz Glasner <hg@dom66.de>
parents:
114
diff
changeset
|
572 "JustDate": templatefilters.shortdate(ctx.date()), |
|
06a60e2a9887
Added "JustDate" (from Visual Source Safe and Surround SCM) as date only keyword
Franz Glasner <hg@dom66.de>
parents:
114
diff
changeset
|
573 # compatibility alias for `JustDate' |
|
88
a40cf98f7f8d
Make an "HGshortdate" keyword with the date only (no time)
Franz Glasner <hg@dom66.de>
parents:
87
diff
changeset
|
574 "HGshortdate": templatefilters.shortdate(ctx.date()), |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
575 } |
|
66
fe4feca5b136
The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents:
65
diff
changeset
|
576 if user_filter == "user": |
|
69
d0a1521cb164
The "user" filter splits at a "." character - the "emailuser" filter does not: this is what we want as "user" filter
Franz Glasner <hg@dom66.de>
parents:
66
diff
changeset
|
577 keywords["Author"] = templatefilters.emailuser(ctx.user()) |
|
66
fe4feca5b136
The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents:
65
diff
changeset
|
578 elif user_filter == "person": |
|
114
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
579 keywords["Author"] = templatefilters.utf8( |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
580 templatefilters.person(ctx.user()).replace(' ', '+')) |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
581 elif user_filter == "email": |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
582 keywords["Author"] = templatefilters.email(ctx.user()) |
|
81
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
583 elif user_filter in ("full", "none",): |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
584 # |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
585 # "none" is retained for compatibility reasons and now an |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
586 # alias for "full". |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
587 # But make it **one** word because that is meant in the RCS spec. |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
588 # |
|
72
7484b3254940
Added a new "filter" for $Author$: filter nothing and print the complete Mercurial user information as one word
Franz Glasner <hg@dom66.de>
parents:
69
diff
changeset
|
589 keywords["Author"] = templatefilters.utf8(ctx.user().replace(' ', '+')) |
|
81
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
590 else: |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
591 raise error.Abort(_("unknown user filter")) |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
592 |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
593 return keywords |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
594 |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
595 |
|
109
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
596 def make_file_keywords(keywords, real_name, nodeid): |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
597 return { |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
598 "HGsource": keywords["HGpath"] + '/' + real_name, |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
599 "Source": real_name, |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
600 "File": templatefilters.basename(real_name), |
|
144
2a59edc0a44a
Replace "HGphase" by the more standard "State" keyword.
Franz Glasner <hg@dom66.de>
parents:
143
diff
changeset
|
601 "Header": "%s %s %s %s %s" % (real_name, keywords["Revision"], keywords["Date"], keywords["Author"], keywords["State"]), |
|
2a59edc0a44a
Replace "HGphase" by the more standard "State" keyword.
Franz Glasner <hg@dom66.de>
parents:
143
diff
changeset
|
602 "HGid": "%s %s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["Revision"], keywords["Date"], keywords["Author"], keywords["State"]), |
|
2a59edc0a44a
Replace "HGphase" by the more standard "State" keyword.
Franz Glasner <hg@dom66.de>
parents:
143
diff
changeset
|
603 "HGheader": "%s %s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["HGrevision"], keywords["Date"], keywords["Author"], keywords["State"]), |
|
2a59edc0a44a
Replace "HGphase" by the more standard "State" keyword.
Franz Glasner <hg@dom66.de>
parents:
143
diff
changeset
|
604 "Id": "%s %s %s %s %s" % (templatefilters.basename(real_name), keywords["Revision"], keywords["Date"], keywords["Author"], keywords["State"]), |
|
109
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
605 "HGnodeid": nodeid or "", |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
606 } |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
607 |
|
be4811239acf
kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents:
108
diff
changeset
|
608 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
609 def stripped_hostname(hostname): |
|
56
333f98d045ab
FIX: Remove the port information from a cleaned path url also
Franz Glasner <hg@dom66.de>
parents:
52
diff
changeset
|
610 """Return `hostname` without any domain port information""" |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
611 if not hostname: |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
612 return hostname |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
613 idx = hostname.find('.') |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
614 if idx < 0: |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
615 return hostname |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
616 return hostname[:idx] |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
617 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
618 |
|
136
f470702886b4
Renamed some internal functions to provide a more descriptive name
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
619 def get_checked_user_filter_option(opts): |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
620 uf = opts.get("user_filter") |
|
81
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
621 # "none" is retained for compatibility reasons and now an alias for "full" |
|
114
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
622 if uf not in ("person", "user", "email", "full", "none"): |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
623 raise error.Abort( |
| 160 | 624 _("user filter must be any of `user', `person', `email' or `none'")) |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
625 return uf |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
626 |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
627 |
|
136
f470702886b4
Renamed some internal functions to provide a more descriptive name
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
628 def get_checked_path_filter_option(opts): |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
629 pf = opts.get("path_filter") |
|
114
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
630 if pf not in ("full", "nopwd", "short", "last"): |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
631 raise error.Abort( |
|
a51822141ccf
Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
632 _("path filter must be any of `full', `nopwd', `short' or `last'")) |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
633 return pf |
|
103
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
634 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
635 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
636 if "ctx" in inspect.getargspec(cmdutil.makefilename).args: |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
637 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
638 # Mercurial >= 4.6 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
639 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
640 makefilename_compat = cmdutil.makefilename |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
641 makefileobj_compat = cmdutil.makefileobj |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
642 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
643 else: |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
644 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
645 # Mercurial < 4.6 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
646 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
647 def makefilename_compat(ctx, pat, **props): |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
648 return cmdutil.makefilename(ctx.repo(), pat, ctx.node(), **props) |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
649 |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
650 def makefileobj_compat(ctx, pat, **props): |
|
d6e594644778
Make kwarchive work on Mercurial 4.6+ also: the signature of cmdutil.makefileXXX() have changed
Franz Glasner <hg@dom66.de>
parents:
101
diff
changeset
|
651 return cmdutil.makefileobj(ctx.repo(), pat, ctx.node(), **props) |
