Mercurial > hgrepos > DevTools > mercurial-extensions
annotate extensions/kwarchive.py @ 93:fa84debfb50e
Replace "no-shorten-url" by "path-filter"
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Wed, 28 Feb 2018 10:56:56 +0100 |
| parents | e1dc7aa60cd4 |
| children | 6ecb3909f95e |
| 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 -*- |
|
34
7c4addd60935
Put keyword into the extensions itself
Franz Glasner <hg@dom66.de>
parents:
33
diff
changeset
|
2 # $HGheader$ |
|
7c4addd60935
Put keyword into the extensions itself
Franz Glasner <hg@dom66.de>
parents:
33
diff
changeset
|
3 # |
| 60 | 4 """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
|
5 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
6 The patterns of files to to expanded are configured in an versioned |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
7 ``.hgkwarchive`` configuration file found in the root of the working |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
8 directory. |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
9 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
10 The ``.hgkwarchive`` file uses the same syntax as all other Mercurial |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
11 configuration files. |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
12 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
13 The ``[patterns]`` section specifies which files should have the keywords |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
14 expanded. |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
15 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
16 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
17 Example:: |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
18 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
19 [patterns] |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
20 # expand keywords in every python file except those matching "x*" |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
21 **.py = |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
22 x* = NO |
|
87
a9b532915ce0
Document the "reST" marker within patterns
Franz Glasner <hg@dom66.de>
parents:
86
diff
changeset
|
23 # this file has reStructuredText style keyword expansion "|VCS<kw>|" |
|
a9b532915ce0
Document the "reST" marker within patterns
Franz Glasner <hg@dom66.de>
parents:
86
diff
changeset
|
24 path:VERSION = reST |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
25 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
26 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
|
27 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
|
28 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
29 """ |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
30 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
31 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
|
32 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
33 |
|
42
b46ab29aefd8
Remove the "__version__" variable: use "__revision__" only instead
Franz Glasner <hg@dom66.de>
parents:
41
diff
changeset
|
34 __revision__ = "$Revision$" |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
35 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
36 __author__ = "Franz Glasner" |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
37 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
38 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
39 import os |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
40 import itertools |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
41 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
42 from mercurial.i18n import _ |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
43 from mercurial import (archival, commands, config, cmdutil, error, match, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
44 pycompat, scmutil, templatefilters, util) |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
45 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
46 |
|
86
46198968dc5a
FIX: Remove bogus version prefix "v"
Franz Glasner <hg@dom66.de>
parents:
85
diff
changeset
|
47 testedwith = "4.3.1 4.3.2 4.4.1 4.4.2" |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
48 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
49 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
50 SHORTENED_HG_SCHEMES = { |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
51 "ssh": "hg+ssh", |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
52 "http": "hg+http", |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
53 "https": "hg+https", |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
54 "file": "file", |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
55 } |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
56 |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
57 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
58 cmdtable = {} |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
59 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
60 command = cmdutil.command(cmdtable) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
61 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
62 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
63 @command('kwarchive', |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
64 [('', 'no-decode', None, _('do not pass files through decoders')), |
| 76 | 65 ('p', 'prefix', '', _('directory prefix for files in archive'), _('PREFIX')), |
| 66 ('r', 'rev', '', _('revision to distribute'), _('REV')), | |
| 67 ('t', 'type', '', _('type of distribution to create'), _('TYPE')), | |
| 68 ('', 'path', 'default', _('the canonical repository to use'), _('PATH')), | |
| 69 ('', "kwconfig", '', _('an alternate pattern configuration configuration file'), _('PATTERNCONFIG')), | |
| 70 ('', "no-shorten-path", None, _("don't shorten the path urls")), | |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
71 ('', "path-filter", "short", _("determine how the path will be printed")), |
| 76 | 72 ('', "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
|
73 ] + cmdutil.subrepoopts + cmdutil.walkopts, |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
74 _('[OPTION]... DEST')) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
75 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
|
76 '''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
|
77 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
78 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
|
79 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
|
80 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
81 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
|
82 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
|
83 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
84 .. container:: verbose |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
85 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
86 Examples: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
87 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
88 - 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
|
89 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
90 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
|
91 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
92 - 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
|
93 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
94 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
|
95 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
96 Valid types are: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
97 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
98 :``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
|
99 :``tar``: tar archive, uncompressed |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
100 :``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
|
101 :``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
|
102 :``uzip``: zip archive, uncompressed |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
103 :``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
|
104 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
105 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
|
106 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
|
107 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
108 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
|
109 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
|
110 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
|
111 removed. |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
112 |
| 41 | 113 Use --path to specify named path information from :hg:`paths` as |
| 114 the canonical repository location. Use ``.`` for the current | |
| 115 repository root root. If no path is given then ``default`` is | |
| 116 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
|
117 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
118 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
|
119 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
|
120 |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
121 Allowed --user-filter values are: |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
122 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
123 :``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
|
124 :``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
|
125 :``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
|
126 :``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
|
127 :``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
|
128 |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
129 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
|
130 |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
131 :``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
|
132 :``nopwd``: like ``full`` but without passwords |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
133 :``short``: shorten the path somehow: now user/passwordinformation and |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
134 only a short server name |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
135 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
136 Returns 0 on success. |
| 41 | 137 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
138 ''' |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
139 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
140 opts = pycompat.byteskwargs(opts) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
141 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
|
142 if not ctx: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
143 raise error.Abort(_('no working directory: please specify a revision')) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
144 node = ctx.node() |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
145 dest = cmdutil.makefilename(repo, dest, node) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
146 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
|
147 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
|
148 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
149 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
|
150 prefix = opts.get('prefix') |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
151 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
152 if dest == '-': |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
153 if kind == 'files': |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
154 raise error.Abort(_('cannot archive plain files to stdout')) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
155 dest = cmdutil.makefileobj(repo, dest) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
156 if not prefix: |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
157 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
|
158 |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
159 prefix = cmdutil.makefilename(repo, prefix, node) |
|
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
160 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
|
161 |
|
58f47399691c
New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents:
28
diff
changeset
|
162 # |
|
31
0597395e2d18
Comment: better explanation of what is monkey-patched
Franz Glasner <hg@dom66.de>
parents:
30
diff
changeset
|
163 # 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
|
164 # expands keywords |
|
58f47399691c
New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents:
28
diff
changeset
|
165 # |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
166 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
|
167 patch_archiver_class( |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
168 ac, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
169 make_keyword_filter( |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
170 ui, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
171 repo, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
172 ctx, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
173 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
|
174 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
|
175 hgpath=opts.get("path"), |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
176 path_filter=get_checked_path_filter(opts), |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
177 user_filter=get_checked_user_filter(opts), |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
178 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
|
179 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
180 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
|
181 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
|
182 |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
183 # XXX FIXME: Should the original methods be restored here? |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
184 |
|
46
4a0c26dfef3c
Comment about automatically amending .hg_archival.txt with "path" items.
Franz Glasner <hg@dom66.de>
parents:
45
diff
changeset
|
185 # 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
|
186 # 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
|
187 # 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
|
188 # 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
|
189 |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
190 |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
191 @command('kwprint', |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
192 [('r', 'rev', '', _('revision to distribute'), _('REV')), |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
193 ('', 'path', 'default', _('the canonical repository to use'), _('PATH')), |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
194 ('', "no-shorten-path", None, _("don't shorten the path urls")), |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
195 ('', "path-filter", "short", _("determine how the path will be printed")), |
| 76 | 196 ('', "user-filter", "user", _("the part of the user to be printed"), _("USERFILTER")), |
|
78
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
197 ('', "reST", None, _("output in reST substitution definition syntax")), |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
198 ] + 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
|
199 _('[OPTION]...')) |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
200 def kwprint(ui, repo, **opts): |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
201 '''print the file-independent keywords |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
202 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
203 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
|
204 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
|
205 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
206 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
|
207 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
|
208 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
|
209 assumed. |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
210 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
211 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
|
212 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
|
213 |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
214 Allowed --user-filter values are: |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
215 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
216 :``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
|
217 :``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
|
218 :``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
|
219 :``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
|
220 :``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
|
221 |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
222 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
|
223 |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
224 :``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
|
225 :``nopwd``: like ``full`` but without passwords |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
226 :``short``: shorten the path somehow: now user/passwordinformation and |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
227 only a short server name |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
228 |
|
78
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
229 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
|
230 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
|
231 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
|
232 |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
233 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
|
234 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
235 ''' |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
236 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
237 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
|
238 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
|
239 if not ctx: |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
240 raise error.Abort(_('no working directory: please specify a revision')) |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
241 node = ctx.node() |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
242 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
243 prefix = cmdutil.makefilename(repo, "", node) |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
244 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
245 keywords = make_node_keywords( |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
246 ui, repo, ctx, prefix, |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
247 hgpath=opts.get("path"), |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
248 path_filter=get_checked_path_filter(opts), |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
249 user_filter=get_checked_user_filter(opts)) |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
250 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
|
251 if opts.get("reST"): |
|
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
252 ui.write(".. |VCS%s| replace:: %s\n" % (key, keywords[key])) |
|
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
253 else: |
|
743dd4a77b4a
Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents:
76
diff
changeset
|
254 ui.write("$%s: %s $\n" % (key, keywords[key])) |
|
45
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
255 |
|
c077d30da0ee
Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents:
44
diff
changeset
|
256 |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
257 def patch_archiver_class(archivername, filter): |
|
32
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
258 """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
|
259 |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
260 archiver_class = getattr(archival, archivername) |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
261 orig_addfile = getattr(archiver_class, "addfile") |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
262 |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
263 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
|
264 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
|
265 |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
266 setattr(archiver_class, "addfile", new_addfile) |
|
cfa53f8a6607
Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents:
31
diff
changeset
|
267 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
|
268 |
|
28
c8b7d0635656
PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff
changeset
|
269 |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
270 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
|
271 hgpath="default", |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
272 path_filter="short", |
|
66
fe4feca5b136
The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents:
65
diff
changeset
|
273 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
|
274 kwconfig=""): |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
275 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
|
276 hgpath=hgpath, |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
277 path_filter=path_filter, |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
278 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
|
279 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
|
280 if kwconfig: |
|
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
281 kwconfigdata = open(kwconfig, "rb").read() |
|
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
282 kwconfigname = kwconfig |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
283 try: |
|
47
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
284 if kwconfigdata is None: |
|
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
285 # .hgkwarchive |
|
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
286 kwconfigdata = ctx[".hgkwarchive"].data() |
|
94ae433383a2
Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents:
46
diff
changeset
|
287 kwconfigname = ".kwarchive" |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
288 except (IOError, LookupError): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
289 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
|
290 return data |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
291 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
|
292 # |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
293 # 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
|
294 # 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
|
295 # |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
296 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
|
297 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
|
298 include = [] |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
299 exclude = [] |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
300 patterns = [] |
|
79
53c9f2f6a13e
Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents:
78
diff
changeset
|
301 patterns_rst = [] |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
302 if cfg.items("patterns"): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
303 for pattern, style in cfg.items("patterns"): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
304 style = style.upper() |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
305 if style in ("YES", "INCLUDE",): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
306 include.append(pattern) |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
307 if style in ("NO", "EXCLUDE",): |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
308 exclude.append(pattern) |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
309 else: |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
310 patterns.append(pattern) |
|
79
53c9f2f6a13e
Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents:
78
diff
changeset
|
311 if style in ("REST", "RST",): |
|
53c9f2f6a13e
Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents:
78
diff
changeset
|
312 patterns_rst.append(pattern) |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
313 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
|
314 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
|
315 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
|
316 matcher = 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
|
317 # |
|
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
|
318 # 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
|
319 # 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
|
320 # |
|
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
|
321 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
|
322 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
|
323 else: |
|
79
53c9f2f6a13e
Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents:
78
diff
changeset
|
324 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
|
325 include=[], exclude=[]) |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
326 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
327 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
|
328 real_name = name |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
329 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
|
330 if prefix: |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
331 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
|
332 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
|
333 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
|
334 return data |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
335 # file specific keywords |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
336 file_keywords = { |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
337 "HGsource": keywords["HGpath"] + '/' + real_name, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
338 "Source": real_name, |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
339 "File": templatefilters.basename(real_name), |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
340 "Header": "%s %s %s %s" % (real_name, keywords["Revision"], keywords["Date"], keywords["Author"]), |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
341 "HGid": "%s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["Revision"], keywords["Date"], keywords["Author"]), |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
342 "HGheader": "%s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["HGrevision"], keywords["Date"], keywords["Author"]), |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
343 "Id": "%s %s %s %s" % (templatefilters.basename(real_name), keywords["Revision"], keywords["Date"], keywords["Author"]), |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
344 } |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
345 # This prevents unwanted keyword expansion here |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
346 _MARKER = '$' |
|
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
|
347 _MARKER_RST = '|' |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
348 for kw, value in itertools.chain(keywords.items(), file_keywords.items()): |
|
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
|
349 if matcher_rst(real_name): |
|
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
|
350 filekw = "%sVCS%s%s" % (_MARKER_RST, kw, _MARKER_RST) |
|
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
|
351 filevalue = value |
|
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
|
352 else: |
|
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
|
353 filekw = "%s%s%s" % (_MARKER, kw, _MARKER) |
|
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
|
354 filevalue = "%s%s: %s %s" % (_MARKER, kw, value, _MARKER) |
|
33
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
355 data = data.replace(filekw, filevalue) |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
356 return data |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
357 |
|
dc8db9693262
kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents:
32
diff
changeset
|
358 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
|
359 |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
360 |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
361 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
|
362 hgpath="default", |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
363 path_filter="short", |
|
66
fe4feca5b136
The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents:
65
diff
changeset
|
364 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
|
365 """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
|
366 |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
367 """ |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
368 if hgpath: |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
369 if hgpath == '.': |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
370 path_uri = repo.root |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
371 else: |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
372 try: |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
373 if path_filter == "full": |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
374 path_uri = bytes(util.url(ui.paths[hgpath].loc)) |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
375 elif path_filter == "nopwd": |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
376 path_uri = util.hidepassword(ui.paths[hgpath].loc) |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
377 elif path_filter == "short": |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
378 path_url = util.url(ui.paths[hgpath].loc) |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
379 path_url.scheme = SHORTENED_HG_SCHEMES.get(path_url.scheme, "hg") |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
380 path_url.user = None |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
381 path_url.passwd = None |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
382 path_url.host = stripped_hostname(path_url.host) |
|
56
333f98d045ab
FIX: Remove the port information from a cleaned path url also
Franz Glasner <hg@dom66.de>
parents:
52
diff
changeset
|
383 path_url.port = None |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
384 path_uri = bytes(path_url) |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
385 else: |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
386 raise error.Abort("path-filter `%s' not implemented" % path_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
|
387 except LookupError: |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
388 raise error.Abort(_('repository %s not found') % hgpath) |
|
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
389 else: |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
390 path_uri = repo.root |
|
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
|
391 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
|
392 # 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
|
393 path_uri = b"file:///" + path_uri.replace(b'\\', b'/') |
|
e1dc7aa60cd4
Check whether the path is a path with Windows drive letters also
Franz Glasner <hg@dom66.de>
parents:
91
diff
changeset
|
394 elif len(path_uri) >= 2 and (b'A' <= path_uri[0].upper() <= b'Z') and path_uri[1] == b':': |
|
e1dc7aa60cd4
Check whether the path is a path with Windows drive letters also
Franz Glasner <hg@dom66.de>
parents:
91
diff
changeset
|
395 # 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
|
396 path_uri = b"file:///" + path_uri.replace(b'\\', b'/') |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
397 keywords = { |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
398 "HGpath": 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
|
399 "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
|
400 "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
|
401 "Date": templatefilters.isodatesec(ctx.date()), |
|
88
a40cf98f7f8d
Make an "HGshortdate" keyword with the date only (no time)
Franz Glasner <hg@dom66.de>
parents:
87
diff
changeset
|
402 "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
|
403 } |
|
66
fe4feca5b136
The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents:
65
diff
changeset
|
404 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
|
405 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
|
406 elif user_filter == "person": |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
407 keywords["Author"] = templatefilters.utf8(templatefilters.person(ctx.user()).replace(' ', '+')) |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
408 elif user_filter == "email": |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
409 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
|
410 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
|
411 # |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
412 # "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
|
413 # alias for "full". |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
414 # 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
|
415 # |
|
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
|
416 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
|
417 else: |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
418 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
|
419 |
|
44
71b321436cc1
Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents:
42
diff
changeset
|
420 return keywords |
|
51
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
421 |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
422 |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
423 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
|
424 """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
|
425 if not hostname: |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
426 return hostname |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
427 idx = hostname.find('.') |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
428 if idx < 0: |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
429 return hostname |
|
3807a60ee0dd
Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
47
diff
changeset
|
430 return hostname[:idx] |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
431 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
432 |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
433 def get_checked_user_filter(opts): |
|
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
434 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
|
435 # "none" is retained for compatibility reasons and now an alias for "full" |
|
e02aceb91a9b
Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents:
80
diff
changeset
|
436 if not uf in ("person", "user", "email", "full", "none"): |
|
66
fe4feca5b136
The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents:
65
diff
changeset
|
437 raise error.Abort(_("user filter must be any of `user', `person' or `email'")) |
|
65
bdb549d71148
Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents:
64
diff
changeset
|
438 return uf |
|
93
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
439 |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
440 |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
441 def get_checked_path_filter(opts): |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
442 pf = opts.get("path_filter") |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
443 if not pf in ("full", "nopwd", "short"): |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
444 raise error.Abort(_("path filter must be any of `full', `nopwd' or `short'")) |
|
fa84debfb50e
Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents:
92
diff
changeset
|
445 return pf |
