annotate extensions/revinfo.py @ 42:b46ab29aefd8 v1.4

Remove the "__version__" variable: use "__revision__" only instead
author Franz Glasner <hg@dom66.de>
date Sun, 12 Nov 2017 09:26:42 +0100
parents fe48ca312f92
children bb5a0c7870c4
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$
7c4addd60935 Put keyword into the extensions itself
Franz Glasner <hg@dom66.de>
parents: 27
diff changeset
3 #
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
4 """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
5 """
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
6
42
b46ab29aefd8 Remove the "__version__" variable: use "__revision__" only instead
Franz Glasner <hg@dom66.de>
parents: 40
diff changeset
7 __revision__ = "$Revision$"
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
8
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
9 __author__ = "Franz Glasner"
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
10
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 from mercurial.i18n import _
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
13 from mercurial import commands, cmdutil, scmutil, util, archival
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
14
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 cmdtable = {}
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
17
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
18 command = cmdutil.command(cmdtable)
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
19
27
f9d1cb2123c0 revinfo works with withMercurial 4.3.2 also
Franz Glasner <hg@dom66.de>
parents: 25
diff changeset
20 testedwith = "3.5 3.5.1 3.5.2 4.3.2"
3
133dab95fb84 Added the recommended "testedwith" module attribute
Franz Glasner <hg@dom66.de>
parents: 1
diff changeset
21
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
22
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
23 @command("revinfo",
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
24 [("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
25 ("", "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
26 ("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
27 ("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
28 ],
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
29 _("hg revinfo [OPTION]... [DEST]"))
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
30 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
31 """write a revision summary
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
32
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
33 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
34 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
35
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
36 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
37 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
38
40
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
39 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
40 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
41 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
42 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
43 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
44
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
45 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
46 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
47
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
48 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
49 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
50
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
51 """
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
52 if opts.get("amend") and 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
53 raise util.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
54
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
55 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
56 if not dest:
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
57 raise util.Abort(_('need a destination file with --amend'))
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
58 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
59 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
60 else:
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
61 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
62 if not ctx:
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
63 raise util.Abort(_("no working directory: please specify a revision"))
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
64
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
65 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
66
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 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
68 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
69 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
70 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
71 else:
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 raise util.Abort(_("given data `%s' is not a KEY=VALUE pair") % (kv, ))
c91a5c0f1be3 Add a "-d/--data" option that adds additional "KEY: VALUE" pairs into the revinfo.
Franz Glasner <hg@dom66.de>
parents: 22
diff changeset
73
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
74 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
75 #
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 # 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
77 # "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
78 #
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 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
80 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
81 paths = ["default"]
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
82 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
83 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
84 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
85 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
86 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
87 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
88 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
89 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
90 break
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
91 else:
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
92 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
93 if dest:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
94 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
95 rfile.write(msg)
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
96 else:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
97 ui.write(msg)