annotate extensions/revinfo.py @ 105:f142bdb90c8d

Testify that "revinfo" and "kwarchive" work with Mercurial v4.6.1 now
author Franz Glasner <hg@dom66.de>
date Thu, 02 Aug 2018 18:28:31 +0200
parents 65789e3e8e3d
children 1744b36c39b7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
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: 27
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: 102
diff changeset
3 # $HGnodeid$
34
7c4addd60935 Put keyword into the extensions itself
Franz Glasner <hg@dom66.de>
parents: 27
diff changeset
4 #
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
5 """write a revision summary similar to .hg_archival.txt
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
6 """
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
7
42
b46ab29aefd8 Remove the "__version__" variable: use "__revision__" only instead
Franz Glasner <hg@dom66.de>
parents: 40
diff changeset
8 __revision__ = "$Revision$"
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
9
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
10 __author__ = "Franz Glasner"
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
11
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
12
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
13 from mercurial.i18n import _
102
702d473b6d85 FIX: The "mercurial.util.Abort" alias is gone: use the mercurial.error.Abort instead.
Franz Glasner <hg@dom66.de>
parents: 99
diff changeset
14 from mercurial import commands, cmdutil, scmutil, util, error, archival
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
15
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
16
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
17 cmdtable = {}
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
18
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
19 command = cmdutil.command(cmdtable)
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
20
105
f142bdb90c8d Testify that "revinfo" and "kwarchive" work with Mercurial v4.6.1 now
Franz Glasner <hg@dom66.de>
parents: 104
diff changeset
21 testedwith = "3.5 3.5.1 3.5.2 4.3.1 4.3.2 4.4.1 4.4.2 4.5.2 4.6.1"
3
133dab95fb84 Added the recommended "testedwith" module attribute
Franz Glasner <hg@dom66.de>
parents: 1
diff changeset
22
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
23
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
24 @command("revinfo",
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
25 [("r", "rev", "", _('revision to handle'), _('REV')),
14
92774da07ebc FIX: the "--amend" flag typically has no short option variant in Mercurial
Franz Glasner <hg@dom66.de>
parents: 13
diff changeset
26 ("", "amend", None, _('amend a given file with path information')),
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
27 ("p", "path", [], _('the configured default path'), _('SOURCE')),
24
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
28 ("d", "data", [], _("add an extra `KEY: VALUE' pair into the file"), _('KEY=VALUE')),
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
29 ],
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
30 _("hg revinfo [OPTION]... [DEST]"))
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
31 def revinfo(ui, repo, dest=None, **opts):
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
32 """write a revision summary
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
33
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
34 If DEST is given the info is written into the file DEST. Otherwise
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
35 it is written to stdout.
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
36
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
37 By default, the revision used is the parent of the working
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
38 directory; use -r/--rev to specify a different revision.
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
39
40
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
40 Use -p/--path to specify named path information from :hg:`paths`
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
41 as the canonical repository location. It will be printed as "path"
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
42 item to the output. If no path is given then "default" is
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
43 assumed. Use "." to use the current workspace root.
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
44 Disable this by providing an empty SOURCE.
9
33899e714b14 Added a new option "-n/--name" for revinfo to print the canonical repository path
Franz Glasner <hg@dom66.de>
parents: 4
diff changeset
45
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
46 Use --amend to extend a given file with a "path" item.
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
47 Can also be used to put more than one path item into the file.
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
48
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
49 The printed information is the same as the :hg:`archive` command
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
50 writes into ".hg_archival.txt". The "path" info is an extra item.
40
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
51
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
52 """
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
53 if opts.get("amend") and opts.get("rev"):
102
702d473b6d85 FIX: The "mercurial.util.Abort" alias is gone: use the mercurial.error.Abort instead.
Franz Glasner <hg@dom66.de>
parents: 99
diff changeset
54 raise error.Abort(_("cannot use -r/--rev together with --amend"))
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
55
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
56 if opts.get("amend"):
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
57 if not dest:
102
702d473b6d85 FIX: The "mercurial.util.Abort" alias is gone: use the mercurial.error.Abort instead.
Franz Glasner <hg@dom66.de>
parents: 99
diff changeset
58 raise error.Abort(_('need a destination file with --amend'))
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
59 with open(dest, "rb") as rfile:
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
60 msg = rfile.read()
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
61 else:
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
62 ctx = scmutil.revsingle(repo, opts.get("rev"))
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
63 if not ctx:
102
702d473b6d85 FIX: The "mercurial.util.Abort" alias is gone: use the mercurial.error.Abort instead.
Franz Glasner <hg@dom66.de>
parents: 99
diff changeset
64 raise error.Abort(_("no working directory: please specify a revision"))
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
65
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
66 msg = archival.buildmetadata(ctx)
24
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
67
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
68 for kv in opts.get("data"):
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
69 kvparts = [ i.strip() for i in kv.split("=", 1) ]
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
70 if len(kvparts) == 2:
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
71 msg += "%s: %s\n" % tuple(kvparts)
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
72 else:
102
702d473b6d85 FIX: The "mercurial.util.Abort" alias is gone: use the mercurial.error.Abort instead.
Franz Glasner <hg@dom66.de>
parents: 99
diff changeset
73 raise error.Abort(_("given data `%s' is not a KEY=VALUE pair") % (kv, ))
24
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
74
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
75 paths = opts.get("path")
24
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
76 #
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
77 # When not amending and no path options is given print the
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
78 # "default" path
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
79 #
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
80 if not opts.get("amend"):
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
81 if not paths:
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
82 paths = ["default"]
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
83 for canonicalpath in paths:
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
84 if canonicalpath:
40
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
85 if canonicalpath == ".":
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
86 msg += "path: %s\n" % repo.root
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
87 else:
40
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
88 for name, path in sorted(ui.paths.iteritems()):
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
89 if name == canonicalpath:
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
90 msg += "path: %s\n" % util.hidepassword(path.loc)
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
91 break
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
92 else:
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
93 msg += "path: %s\n" % canonicalpath
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
94 if dest:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
95 with open(dest, "wb") as rfile:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
96 rfile.write(msg)
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
97 else:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
98 ui.write(msg)