annotate extensions/revinfo.py @ 40:fe48ca312f92

Use "." if the current repository root is to be assumed as path information
author Franz Glasner <hg@dom66.de>
date Sun, 12 Nov 2017 09:24:27 +0100
parents 7c4addd60935
children b46ab29aefd8
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
25
9e445fc5eea4 +++++ revinfo v1.3
Franz Glasner <hg@dom66.de>
parents: 24
diff changeset
7 __version__ = "1.3"
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
34
7c4addd60935 Put keyword into the extensions itself
Franz Glasner <hg@dom66.de>
parents: 27
diff changeset
11 __revision__ = "$Revision$"
7c4addd60935 Put keyword into the extensions itself
Franz Glasner <hg@dom66.de>
parents: 27
diff changeset
12
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
13
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
14 from mercurial.i18n import _
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
15 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
16
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 cmdtable = {}
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
19
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
20 command = cmdutil.command(cmdtable)
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
21
27
f9d1cb2123c0 revinfo works with withMercurial 4.3.2 also
Franz Glasner <hg@dom66.de>
parents: 25
diff changeset
22 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
23
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
24
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
25 @command("revinfo",
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
26 [("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
27 ("", "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
28 ("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
29 ("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
30 ],
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
31 _("hg revinfo [OPTION]... [DEST]"))
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
32 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
33 """write a revision summary
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
34
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
35 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
36 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
37
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
38 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
39 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
40
40
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
41 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
42 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
43 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
44 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
45 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
46
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
47 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
48 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
49
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
50 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
51 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
52
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
53 """
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
54 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
55 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
56
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
57 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
58 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
59 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
60 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
61 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
62 else:
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
63 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
64 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
65 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
66
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
67 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
68
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 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
70 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
71 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
72 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
73 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
74 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
75
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
76 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
77 #
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 # 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
79 # "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
80 #
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 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
82 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
83 paths = ["default"]
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
84 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
85 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
86 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
87 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
88 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
89 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
90 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
91 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
92 break
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
93 else:
fe48ca312f92 Use "." if the current repository root is to be assumed as path information
Franz Glasner <hg@dom66.de>
parents: 34
diff changeset
94 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
95 if dest:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
96 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
97 rfile.write(msg)
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
98 else:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
99 ui.write(msg)