annotate extensions/revinfo.py @ 20:8ca89d70b44c

Make the "-p/--path" option an option that can be repeated. The behaviour is fully backward compatible.
author Franz Glasner <hg@dom66.de>
date Mon, 12 Oct 2015 08:56:52 +0200
parents 986d4550c590
children ecb1bea11468
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 -*-
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
2 """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
3 """
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
4
18
986d4550c590 +++++ revinfo v1.1
Franz Glasner <hg@dom66.de>
parents: 14
diff changeset
5 __version__ = "1.1"
1
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 __author__ = "Franz Glasner"
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
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
10 from mercurial.i18n import _
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
11 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
12
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 cmdtable = {}
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 command = cmdutil.command(cmdtable)
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
17
3
133dab95fb84 Added the recommended "testedwith" module attribute
Franz Glasner <hg@dom66.de>
parents: 1
diff changeset
18 testedwith = "3.5"
133dab95fb84 Added the recommended "testedwith" module attribute
Franz Glasner <hg@dom66.de>
parents: 1
diff changeset
19
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
20
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
21 @command("revinfo",
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
22 [("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
23 ("", "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
24 ("p", "path", [], _('the configured default path'), _('SOURCE')),
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
25 ],
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
26 _("hg revinfo [OPTION]... [DEST]"))
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
27 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
28 """write a revision summary
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 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
31 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
32
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
33 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
34 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
35
12
230cf9ee8ae3 Renamed the "-n/--name" option to "-p/--path"
Franz Glasner <hg@dom66.de>
parents: 11
diff changeset
36 Use -p/--path to specify the named path information from
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
37 :hg:`paths` as the canonical repository location. It will be
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
38 printed as "path" item to the output. If no path is given then
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
39 "default" is assumed. 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
40
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
41 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
42 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
43
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
44 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
45 writes into ".hg_archival.txt". The "path" info is an extra item.
1
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
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 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
48 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
49
13
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
50 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
51 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
52 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
53 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
54 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
55 else:
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
56 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
57 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
58 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
59
c78608f802d4 Implemented "--amend" for revinfo to put extra "path" items into existing files
Franz Glasner <hg@dom66.de>
parents: 12
diff changeset
60 msg = archival.buildmetadata(ctx)
20
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
61 paths = opts.get("path")
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
62 if not paths:
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
63 paths = ["default"]
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
64 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
65 if canonicalpath:
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
66 for name, path in sorted(ui.paths.iteritems()):
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
67 if name == canonicalpath:
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
68 msg += "path: %s\n" % util.hidepassword(path.loc)
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
69 break
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
70 else:
8ca89d70b44c Make the "-p/--path" option an option that can be repeated.
Franz Glasner <hg@dom66.de>
parents: 18
diff changeset
71 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
72 if dest:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
73 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
74 rfile.write(msg)
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
75 else:
a80645763196 revinfo: a module to write .hg_archival.txt like repository metadata
Franz Glasner <hg@dom66.de>
parents:
diff changeset
76 ui.write(msg)