# HG changeset patch # User mpm@selenic.com # Date 1119404848 28800 # Node ID af4848f83e683d65c78fa59362da6239a93185b8 # Parent 8b067bde6679bbeacae92a4d9b1e9d2a794ef3b4 From: Radoslaw Szkodzinski -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 From: Radoslaw Szkodzinski 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----- diff -r 8b067bde6679 -r af4848f83e68 mercurial/commands.py --- 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] [rev]'), "tags": (tags, [], 'hg tags'), "tip": (tip, [], 'hg tip'), "undo": (undo, [], 'hg undo'), diff -r 8b067bde6679 -r af4848f83e68 tests/test-help.out --- 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 diff -r 8b067bde6679 -r af4848f83e68 tests/test-tag --- /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" + diff -r 8b067bde6679 -r af4848f83e68 tests/test-tag.out --- /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