annotate extensions/kwarchive.py @ 120:9ed197b60e99

Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
author Franz Glasner <hg@dom66.de>
date Fri, 17 Aug 2018 01:56:12 +0200
parents 65a2e6fc8442
children e6037655967b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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$
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
eebebd7acc69 Wording of docu
Franz Glasner <hg@dom66.de>
parents: 57
diff changeset
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
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
7 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
8 ``.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
9 directory.
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
10
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
11 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
12 configuration files.
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
13
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
14 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
15 expanded.
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
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
18 Example::
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
19
120
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
20 #
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
21 # 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
22 # 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
23 #
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
24 [patterns]
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
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 # expand keywords in every python file except those matching "x*"
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
27 # using RCS style expansion format (which is the default style)
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
28 **.py =
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
29 x* = NO
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
30 # 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
31 path:VERSION = reST
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
32 # this file has reStructuredText style and RCS style keyword expansion
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
33 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
34
120
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
35 #
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
36 # 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
37 # 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
38 # 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
39 #
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
40 [keywords]
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
41 # $Revision$ and possibly the |VCSRevision| keyword is 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 Revision =
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
43 # $MyKeyword$ is expanded with the contents of
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
44 MyKeyword =
9ed197b60e99 Prepare a [keywords] section with a whitelist of considered keywords and/or aliases
Franz Glasner <hg@dom66.de>
parents: 119
diff changeset
45
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
46 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
47 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
48
28
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
49 """
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
50
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
51 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
52
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
53
42
b46ab29aefd8 Remove the "__version__" variable: use "__revision__" only instead
Franz Glasner <hg@dom66.de>
parents: 41
diff changeset
54 __revision__ = "$Revision$"
28
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
55
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
56 __author__ = "Franz Glasner"
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
57
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
58
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
59 import os
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
60 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
61 import inspect
28
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 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
64 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
65 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
66
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
67
105
f142bdb90c8d Testify that "revinfo" and "kwarchive" work with Mercurial v4.6.1 now
Franz Glasner <hg@dom66.de>
parents: 104
diff changeset
68 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
69
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
70
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
71 SHORTENED_HG_SCHEMES = {
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
72 "ssh": "hg+ssh",
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
73 "http": "hg+http",
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
74 "https": "hg+https",
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
75 "file": "file",
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
76 }
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
77
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
78
28
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
79 cmdtable = {}
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 command = cmdutil.command(cmdtable)
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
82
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
83
114
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
84 @command(
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
85 'kwarchive',
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
86 [
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
87 ('', '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
88 ('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
89 ('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
90 ('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
91 ('', '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
92 ('', "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
93 ('', "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
94 ('', "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
95 ('', "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
96 ] + cmdutil.subrepoopts + cmdutil.walkopts,
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
97 _('[OPTION]... DEST'))
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
98 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
99 '''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
100
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
101 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
102 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
103
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
104 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
105 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
106
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
107 .. container:: verbose
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
108
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
109 Examples:
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
110
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
111 - 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
112
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
113 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
114
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
115 - 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
116
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
117 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
118
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
119 Valid types are:
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
120
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
121 :``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
122 :``tar``: tar archive, uncompressed
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
123 :``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
124 :``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
125 :``uzip``: zip archive, uncompressed
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
126 :``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
127
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
128 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
129 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
130
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
131 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
132 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
133 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
134 removed.
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
135
41
c05d8dcb4bb0 Doku: Enhance
Franz Glasner <hg@dom66.de>
parents: 36
diff changeset
136 Use --path to specify named path information from :hg:`paths` as
c05d8dcb4bb0 Doku: Enhance
Franz Glasner <hg@dom66.de>
parents: 36
diff changeset
137 the canonical repository location. Use ``.`` for the current
c05d8dcb4bb0 Doku: Enhance
Franz Glasner <hg@dom66.de>
parents: 36
diff changeset
138 repository root root. If no path is given then ``default`` is
c05d8dcb4bb0 Doku: Enhance
Franz Glasner <hg@dom66.de>
parents: 36
diff changeset
139 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
140
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
141 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
142 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
143
65
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
144 Allowed --user-filter values are:
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
145
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
146 :``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
147 :``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
148 :``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
149 :``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
150 :``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
151
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
152 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
153
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
154 :``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
155 :``nopwd``: like ``full`` but without passwords
101
ec4392ae8c92 FIX: Wording in help
Franz Glasner <hg@dom66.de>
parents: 100
diff changeset
156 :``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
157 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
158 :``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
159
28
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
160 Returns 0 on success.
41
c05d8dcb4bb0 Doku: Enhance
Franz Glasner <hg@dom66.de>
parents: 36
diff changeset
161
28
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
162 '''
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 opts = pycompat.byteskwargs(opts)
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
165 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
166 if not ctx:
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
167 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
168 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
169 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
170 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
171 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
172
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
173 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
174 prefix = opts.get('prefix')
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
175
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
176 if dest == '-':
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
177 if kind == 'files':
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
178 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
179 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
180 if not prefix:
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
181 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
182
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
183 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
184 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
185
58f47399691c New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents: 28
diff changeset
186 #
31
0597395e2d18 Comment: better explanation of what is monkey-patched
Franz Glasner <hg@dom66.de>
parents: 30
diff changeset
187 # 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
188 # expands keywords
58f47399691c New successful PoC: monkey-patch all relevant archiver's "addfile()" method
Franz Glasner <hg@dom66.de>
parents: 28
diff changeset
189 #
32
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
190 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
191 patch_archiver_class(
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
192 ac,
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
193 make_keyword_filter(
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
194 ui,
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
195 repo,
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
196 ctx,
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
197 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
198 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
199 hgpath=opts.get("path"),
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
200 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
201 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
202 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
203
28
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
204 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
205 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
206
32
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
207 # XXX FIXME: Should the original methods be restored here?
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
208
46
4a0c26dfef3c Comment about automatically amending .hg_archival.txt with "path" items.
Franz Glasner <hg@dom66.de>
parents: 45
diff changeset
209 # 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
210 # 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
211 # 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
212 # 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
213
32
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
214
114
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
215 @command(
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
216 'kwprint',
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
217 [
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
218 ('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
219 ('', '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
220 ('', "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
221 ('', "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
222 ('', "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
223 ('', "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
224 ('', "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
225 ] + 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
226 _('[OPTION]...'))
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
227 def kwprint(ui, repo, **opts):
109
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
228 '''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
229 keywords
45
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
230
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
231 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
232 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
233
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
234 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
235 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
236 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
237 assumed.
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
238
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
239 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
240 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
241
65
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
242 Allowed --user-filter values are:
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
243
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
244 :``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
245 :``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
246 :``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
247 :``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
248 :``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
249
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
250 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
251
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
252 :``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
253 :``nopwd``: like ``full`` but without passwords
108
aaf84b607154 FIX: Typo in doc string
Franz Glasner <hg@dom66.de>
parents: 105
diff changeset
254 :``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
255 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
256 :``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
257
78
743dd4a77b4a Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents: 76
diff changeset
258 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
259 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
260 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
261
109
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
262 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
263 example file.
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
264
45
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
265 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
266
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
267 '''
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
268
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
269 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
270 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
271 if not ctx:
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
272 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
273 node = ctx.node()
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
274
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
275 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
276
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
277 keywords = make_node_keywords(
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
278 ui, repo, ctx, prefix,
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
279 hgpath=opts.get("path"),
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
280 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
281 user_filter=get_checked_user_filter(opts))
109
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
282 # 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
283 file_keywords = make_file_keywords(
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
284 keywords,
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
285 "dir1/dir2/test.file",
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
286 "a4dd6f4b22e11fec41158eec187630c24a43120a")
45
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
287 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
288 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
289 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
290 else:
743dd4a77b4a Implemented a "--reST" option for printing reST substitution definitions from keywords
Franz Glasner <hg@dom66.de>
parents: 76
diff changeset
291 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
292 if not opts.get("no_file"):
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
293 ui.write("\n")
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
294 for key in sorted(file_keywords.keys()):
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
295 if opts.get("reST"):
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
296 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
297 else:
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
298 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
299
c077d30da0ee Implemented a "kwprint" command to print just some file-independent keywords
Franz Glasner <hg@dom66.de>
parents: 44
diff changeset
300
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
301 def patch_archiver_class(archivername, filter):
32
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
302 """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
303
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
304 archiver_class = getattr(archival, archivername)
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
305 orig_addfile = getattr(archiver_class, "addfile")
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
306
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
307 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
308 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
309
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
310 setattr(archiver_class, "addfile", new_addfile)
cfa53f8a6607 Refactor the class' monkey-patching
Franz Glasner <hg@dom66.de>
parents: 31
diff changeset
311 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
312
28
c8b7d0635656 PoC for archive with keyword expansion: works w/o touching subrepos
Franz Glasner <hg@dom66.de>
parents:
diff changeset
313
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
314 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
315 hgpath="default",
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
316 path_filter="short",
66
fe4feca5b136 The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents: 65
diff changeset
317 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
318 kwconfig=""):
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
319 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
320 hgpath=hgpath,
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
321 path_filter=path_filter,
65
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
322 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
323 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
324 if kwconfig:
94ae433383a2 Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents: 46
diff changeset
325 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
326 kwconfigname = kwconfig
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
327 try:
47
94ae433383a2 Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents: 46
diff changeset
328 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
329 # .hgkwarchive
94ae433383a2 Allow an alternate patterns file (instead of .hgkwarchive) with the --kwconfig option.
Franz Glasner <hg@dom66.de>
parents: 46
diff changeset
330 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
331 kwconfigname = ".kwarchive"
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
332 except (IOError, LookupError):
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
333 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
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 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
336 #
71b321436cc1 Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents: 42
diff changeset
337 # 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
338 # 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
339 #
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
340 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
341 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
342 include = []
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
343 exclude = []
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
344 patterns = []
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
345 patterns_rcs = []
79
53c9f2f6a13e Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents: 78
diff changeset
346 patterns_rst = []
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
347 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
348 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
349 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
350 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
351 include.append(pattern)
111
d5165f72b0f0 Can not combine styles in the [patterns] section of .hgkwarchive
Franz Glasner <hg@dom66.de>
parents: 110
diff changeset
352 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
353 exclude.append(pattern)
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
354 else:
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
355 patterns.append(pattern)
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
356 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
357 or "RCS" in styles:
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
358 if "RCS" in styles:
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
359 patterns_rcs.append(pattern)
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
360 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
361 patterns_rst.append(pattern)
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
362 else:
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
363 # 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
364 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
365 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
366 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
367 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
368 matcher = match.never(repo.root, '')
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
369
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
370 #
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
371 # 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
372 # true.
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
373 #
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
374 if not patterns_rcs:
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
375 matcher_rcs = match.never(repo.root, '')
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
376 else:
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
377 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
378 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
379 #
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
380 # 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
381 # 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
382 #
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
383 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
384 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
385 else:
79
53c9f2f6a13e Work in reST style keywords in kwarchive
Franz Glasner <hg@dom66.de>
parents: 78
diff changeset
386 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
387 include=[], exclude=[])
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
388
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
389 #
65789e3e8e3d Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents: 103
diff changeset
390 # 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
391 #
65789e3e8e3d Provide a "HGnodeid" per file keyword that expands to the NodeID of the artifact.
Franz Glasner <hg@dom66.de>
parents: 103
diff changeset
392 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
393
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
394 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
395 real_name = name
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
396 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
397 if prefix:
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
398 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
399 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
400 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
401 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
402 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
403 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
404 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
405 nodeid = None
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
406 # file specific keywords
109
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
407 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
408 # This prevents unwanted keyword expansion here
119
65a2e6fc8442 Explicitely named marker for RCS style expansion
Franz Glasner <hg@dom66.de>
parents: 118
diff changeset
409 _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
410 _MARKER_RST = '|'
33
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
411 for kw, value in itertools.chain(keywords.items(), file_keywords.items()):
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
412 if matcher_rcs(real_name):
119
65a2e6fc8442 Explicitely named marker for RCS style expansion
Franz Glasner <hg@dom66.de>
parents: 118
diff changeset
413 filekw = "%s%s%s" % (_MARKER_RCS, kw, _MARKER_RCS)
65a2e6fc8442 Explicitely named marker for RCS style expansion
Franz Glasner <hg@dom66.de>
parents: 118
diff changeset
414 filevalue = "%s%s: %s %s" \
65a2e6fc8442 Explicitely named marker for RCS style expansion
Franz Glasner <hg@dom66.de>
parents: 118
diff changeset
415 % (_MARKER_RCS, kw, value, _MARKER_RCS)
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
416 data = data.replace(filekw, filevalue)
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
417 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
418 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
419 filevalue = value
118
e9c78a0bfe6a Allow multiple style keyword expansion in one file.
Franz Glasner <hg@dom66.de>
parents: 116
diff changeset
420 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
421 return data
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
422
dc8db9693262 kwarchive expands keyword on given files (.hgkwarchive with generic Mercurial patterns)
Franz Glasner <hg@dom66.de>
parents: 32
diff changeset
423 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
424
71b321436cc1 Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents: 42
diff changeset
425
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
426 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
427 hgpath="default",
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
428 path_filter="short",
66
fe4feca5b136 The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents: 65
diff changeset
429 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
430 """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
431
71b321436cc1 Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents: 42
diff changeset
432 """
71b321436cc1 Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents: 42
diff changeset
433 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
434 if hgpath == '.':
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
435 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
436 else:
71b321436cc1 Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents: 42
diff changeset
437 try:
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
438 if path_filter == "full":
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
439 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
440 elif path_filter == "nopwd":
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
441 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
442 elif path_filter == "short":
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
443 path_url = util.url(ui.paths[hgpath].loc)
114
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
444 path_url.scheme = SHORTENED_HG_SCHEMES.get(path_url.scheme,
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
445 "hg")
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
446 path_url.user = None
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
447 path_url.passwd = None
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
448 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
449 path_url.port = None
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
450 path_uri = bytes(path_url)
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
451 elif path_filter == "last":
eed73af1ab79 Implemented a "last" option for the "--path-filter": shorten to the last path component.
Franz Glasner <hg@dom66.de>
parents: 99
diff changeset
452 path_url = str(util.url(ui.paths[hgpath].loc)).split("/")
116
23cbfc34ae4a Begin "last" style path output with ".../"
Franz Glasner <hg@dom66.de>
parents: 115
diff changeset
453 path_uri = bytes(b".../"+path_url[-1])
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
454 else:
114
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
455 raise error.Abort("path-filter `%s' not implemented"
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
456 % 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
457 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
458 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
459 else:
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
460 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
461 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
462 # 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
463 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
464 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
465 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
466 # 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
467 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
468 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
469 # 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
470 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
471 keywords = {
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
472 "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
473 "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
474 "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
475 "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
476 "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
477 # 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
478 "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
479 }
66
fe4feca5b136 The default user-filter of $Author$ is "user" now.
Franz Glasner <hg@dom66.de>
parents: 65
diff changeset
480 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
481 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
482 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
483 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
484 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
485 elif user_filter == "email":
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
486 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
487 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
488 #
e02aceb91a9b Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents: 80
diff changeset
489 # "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
490 # alias for "full".
e02aceb91a9b Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents: 80
diff changeset
491 # 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
492 #
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
493 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
494 else:
e02aceb91a9b Make "full" a user filter and "none" an alias to "full"
Franz Glasner <hg@dom66.de>
parents: 80
diff changeset
495 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
496
44
71b321436cc1 Refactor: generate all node-specific keywords (file-path independent) in a dedicated function
Franz Glasner <hg@dom66.de>
parents: 42
diff changeset
497 return keywords
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
498
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
499
109
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
500 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
501 return {
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
502 "HGsource": keywords["HGpath"] + '/' + real_name,
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
503 "Source": real_name,
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
504 "File": templatefilters.basename(real_name),
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
505 "Header": "%s %s %s %s" % (real_name, keywords["Revision"], keywords["Date"], keywords["Author"]),
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
506 "HGid": "%s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["Revision"], keywords["Date"], keywords["Author"]),
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
507 "HGheader": "%s %s %s %s" % (keywords["HGpath"] + '/' + real_name, keywords["HGrevision"], keywords["Date"], keywords["Author"]),
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
508 "Id": "%s %s %s %s" % (templatefilters.basename(real_name), keywords["Revision"], keywords["Date"], keywords["Author"]),
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
509 "HGnodeid": nodeid or "",
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
510 }
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
511
be4811239acf kwprint: print example file-dependent keywords also.
Franz Glasner <hg@dom66.de>
parents: 108
diff changeset
512
51
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
513 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
514 """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
515 if not hostname:
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
516 return hostname
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
517 idx = hostname.find('.')
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
518 if idx < 0:
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
519 return hostname
3807a60ee0dd Shorten path urls by default when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 47
diff changeset
520 return hostname[:idx]
65
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
521
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
522
bdb549d71148 Allow customization of the $Author$ output when expanding keywords.
Franz Glasner <hg@dom66.de>
parents: 64
diff changeset
523 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
524 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
525 # "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
526 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
527 raise error.Abort(
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
528 _("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
529 return uf
93
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
530
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
531
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
532 def get_checked_path_filter(opts):
fa84debfb50e Replace "no-shorten-url" by "path-filter"
Franz Glasner <hg@dom66.de>
parents: 92
diff changeset
533 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
534 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
535 raise error.Abort(
a51822141ccf Style: handled some more flake8 warnings: consistent command declaration list formatting
Franz Glasner <hg@dom66.de>
parents: 112
diff changeset
536 _("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
537 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
538
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
539
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
540 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
541
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
542 # 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
543
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
544 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
545 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
546
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
547 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
548
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
549 # 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
550
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
551 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
552 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
553
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
554 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
555 return cmdutil.makefileobj(ctx.repo(), pat, ctx.node(), **props)