From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
From: Radoslaw Szkodzinski <astralstorm@gorzow.mm.pl>
add hg tag command
Tweaks by mpm:
clean up error messages
handle non-existent .hgtags file
add tests
update test-help output
manifest hash:
569c7fe01193159919af2566e8f5089409ffad65
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCuMMwywK+sNU5EO8RAuUdAJ90TkT/D9lDOnEVAW2d3WT7K8Ct3QCggiJA
c9Qbd79K4UWKQAVkYq03cOY=
=SWS8
-----END PGP SIGNATURE-----
--- a/mercurial/commands.py Tue Jun 21 17:27:58 2005 -0800
+++ b/mercurial/commands.py Tue Jun 21 17:47:28 2005 -0800
@@ -566,6 +566,35 @@
for f in d: print "R", f
for f in u: print "?", f
+def tag(ui, repo, name, rev = None, **opts):
+ """add a tag for the current tip or a given revision"""
+
+ if name == "tip":
+ ui.warn("abort: 'tip' is a reserved name!\n")
+ return -1
+
+ (c, a, d, u) = repo.diffdir(repo.root)
+ for x in (c, a, d, u):
+ if ".hgtags" in x:
+ ui.warn("abort: working copy of .hgtags is changed!\n")
+ ui.status("(please commit .hgtags manually)\n")
+ return -1
+
+ if rev:
+ r = hg.hex(repo.lookup(rev))
+ else:
+ r = hg.hex(repo.changelog.tip())
+
+ add = 0
+ if not os.path.exists(repo.wjoin(".hgtags")): add = 1
+ repo.wfile(".hgtags", "a").write("%s %s\n" % (r, name))
+ if add: repo.add([".hgtags"])
+
+ if not opts['text']:
+ opts['text'] = "Added tag %s for changeset %s" % (name, r)
+
+ repo.commit([".hgtags"], opts['text'], opts['user'], opts['date'])
+
def tags(ui, repo):
"""list repository tags"""
@@ -667,6 +696,10 @@
('t', 'templates', "", 'template map')],
"hg serve [options]"),
"status": (status, [], 'hg status'),
+ "tag": (tag, [('t', 'text', "", 'commit text'),
+ ('d', 'date', "", 'date'),
+ ('u', 'user', "", 'user')],
+ 'hg tag [options] <name> [rev]'),
"tags": (tags, [], 'hg tags'),
"tip": (tip, [], 'hg tip'),
"undo": (undo, [], 'hg undo'),
--- a/tests/test-help.out Tue Jun 21 17:27:58 2005 -0800
+++ b/tests/test-help.out Tue Jun 21 17:47:28 2005 -0800
@@ -26,6 +26,7 @@
remove remove the specified files on the next commit
serve export the repository via HTTP
status show changed files in the working directory
+ tag add a tag for the current tip or a given revision
tags list repository tags
tip show the tip revision
undo undo the last transaction
@@ -74,6 +75,7 @@
remove remove the specified files on the next commit
serve export the repository via HTTP
status show changed files in the working directory
+ tag add a tag for the current tip or a given revision
tags list repository tags
tip show the tip revision
undo undo the last transaction
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-tag Tue Jun 21 17:47:28 2005 -0800
@@ -0,0 +1,13 @@
+#!/bin/sh -x
+
+hg init
+echo a > a
+hg add a
+hg commit -t "test" -u test -d "0 0"
+hg history
+hg tag -u test -d "0 0" "bleah"
+hg history
+
+echo foo >> .hgtags
+hg tag -u test -d "0 0" "bleah2" || echo "failed"
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-tag.out Tue Jun 21 17:47:28 2005 -0800
@@ -0,0 +1,31 @@
++ hg init
++ echo a
++ hg add a
++ hg commit -t test -u test -d '0 0'
++ hg history
+changeset: 0:acb14030fe0a21b60322c440ad2d20cf7685a376
+tag: tip
+user: test
+date: Thu Jan 1 00:00:00 1970
+summary: test
+
++ hg tag -u test -d '0 0' bleah
++ hg history
+changeset: 1:863197ef03781c4fc00276d83eb66c4cb9cd91df
+tag: tip
+user: test
+date: Thu Jan 1 00:00:00 1970
+summary: Added tag bleah for changeset acb14030fe0a21b60322c440ad2d20cf7685a376
+
+changeset: 0:acb14030fe0a21b60322c440ad2d20cf7685a376
+tag: bleah
+user: test
+date: Thu Jan 1 00:00:00 1970
+summary: test
+
++ echo foo
++ hg tag -u test -d '0 0' bleah2
+abort: working copy of .hgtags is changed!
+(please commit .hgtags manually)
++ echo failed
+failed