summaryrefslogtreecommitdiff
path: root/tests/test-tag.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-tag.t')
-rw-r--r--tests/test-tag.t319
1 files changed, 319 insertions, 0 deletions
diff --git a/tests/test-tag.t b/tests/test-tag.t
new file mode 100644
index 0000000..3731802
--- /dev/null
+++ b/tests/test-tag.t
@@ -0,0 +1,319 @@
+ $ hg init test
+ $ cd test
+
+ $ echo a > a
+ $ hg add a
+ $ hg commit -m "test"
+ $ hg history
+ changeset: 0:acb14030fe0a
+ tag: tip
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: test
+
+
+ $ hg tag ' '
+ abort: tag names cannot consist entirely of whitespace
+ [255]
+
+ $ hg tag "bleah"
+ $ hg history
+ changeset: 1:d4f0d2909abc
+ tag: tip
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: Added tag bleah for changeset acb14030fe0a
+
+ changeset: 0:acb14030fe0a
+ tag: bleah
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: test
+
+
+ $ echo foo >> .hgtags
+ $ hg tag "bleah2"
+ abort: working copy of .hgtags is changed (please commit .hgtags manually)
+ [255]
+
+ $ hg revert .hgtags
+ $ hg tag -r 0 x y z y y z
+ abort: tag names must be unique
+ [255]
+ $ hg tag tap nada dot tip null .
+ abort: the name 'tip' is reserved
+ [255]
+ $ hg tag "bleah"
+ abort: tag 'bleah' already exists (use -f to force)
+ [255]
+ $ hg tag "blecch" "bleah"
+ abort: tag 'bleah' already exists (use -f to force)
+ [255]
+
+ $ hg tag --remove "blecch"
+ abort: tag 'blecch' does not exist
+ [255]
+ $ hg tag --remove "bleah" "blecch" "blough"
+ abort: tag 'blecch' does not exist
+ [255]
+
+ $ hg tag -r 0 "bleah0"
+ $ hg tag -l -r 1 "bleah1"
+ $ hg tag gack gawk gorp
+ $ hg tag -f gack
+ $ hg tag --remove gack gorp
+
+ $ hg tag "bleah "
+ abort: tag 'bleah' already exists (use -f to force)
+ [255]
+ $ hg tag " bleah"
+ abort: tag 'bleah' already exists (use -f to force)
+ [255]
+ $ hg tag " bleah"
+ abort: tag 'bleah' already exists (use -f to force)
+ [255]
+ $ hg tag -r 0 " bleahbleah "
+ $ hg tag -r 0 " bleah bleah "
+
+ $ cat .hgtags
+ acb14030fe0a21b60322c440ad2d20cf7685a376 bleah
+ acb14030fe0a21b60322c440ad2d20cf7685a376 bleah0
+ 336fccc858a4eb69609a291105009e484a6b6b8d gack
+ 336fccc858a4eb69609a291105009e484a6b6b8d gawk
+ 336fccc858a4eb69609a291105009e484a6b6b8d gorp
+ 336fccc858a4eb69609a291105009e484a6b6b8d gack
+ 799667b6f2d9b957f73fa644a918c2df22bab58f gack
+ 799667b6f2d9b957f73fa644a918c2df22bab58f gack
+ 0000000000000000000000000000000000000000 gack
+ 336fccc858a4eb69609a291105009e484a6b6b8d gorp
+ 0000000000000000000000000000000000000000 gorp
+ acb14030fe0a21b60322c440ad2d20cf7685a376 bleahbleah
+ acb14030fe0a21b60322c440ad2d20cf7685a376 bleah bleah
+
+ $ cat .hg/localtags
+ d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
+
+tagging on a non-head revision
+
+ $ hg update 0
+ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ hg tag -l localblah
+ $ hg tag "foobar"
+ abort: not at a branch head (use -f to force)
+ [255]
+ $ hg tag -f "foobar"
+ $ cat .hgtags
+ acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
+ $ cat .hg/localtags
+ d4f0d2909abc9290e2773c08837d70c1794e3f5a bleah1
+ acb14030fe0a21b60322c440ad2d20cf7685a376 localblah
+
+ $ hg tag -l 'xx
+ > newline'
+ abort: '\n' cannot be used in a tag name
+ [255]
+ $ hg tag -l 'xx:xx'
+ abort: ':' cannot be used in a tag name
+ [255]
+
+cloning local tags
+
+ $ cd ..
+ $ hg -R test log -r0:5
+ changeset: 0:acb14030fe0a
+ tag: bleah
+ tag: bleah bleah
+ tag: bleah0
+ tag: bleahbleah
+ tag: foobar
+ tag: localblah
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: test
+
+ changeset: 1:d4f0d2909abc
+ tag: bleah1
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: Added tag bleah for changeset acb14030fe0a
+
+ changeset: 2:336fccc858a4
+ tag: gawk
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: Added tag bleah0 for changeset acb14030fe0a
+
+ changeset: 3:799667b6f2d9
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: Added tag gack, gawk, gorp for changeset 336fccc858a4
+
+ changeset: 4:154eeb7c0138
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: Added tag gack for changeset 799667b6f2d9
+
+ changeset: 5:b4bb47aaff09
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: Removed tag gack, gorp
+
+ $ hg clone -q -rbleah1 test test1
+ $ hg -R test1 parents --style=compact
+ 1[tip] d4f0d2909abc 1970-01-01 00:00 +0000 test
+ Added tag bleah for changeset acb14030fe0a
+
+ $ hg clone -q -r5 test#bleah1 test2
+ $ hg -R test2 parents --style=compact
+ 5[tip] b4bb47aaff09 1970-01-01 00:00 +0000 test
+ Removed tag gack, gorp
+
+ $ hg clone -q -U test#bleah1 test3
+ $ hg -R test3 parents --style=compact
+
+ $ cd test
+
+Issue601: hg tag doesn't do the right thing if .hgtags or localtags
+doesn't end with EOL
+
+ $ python << EOF
+ > f = file('.hg/localtags'); last = f.readlines()[-1][:-1]; f.close()
+ > f = file('.hg/localtags', 'w'); f.write(last); f.close()
+ > EOF
+ $ cat .hg/localtags; echo
+ acb14030fe0a21b60322c440ad2d20cf7685a376 localblah
+ $ hg tag -l localnewline
+ $ cat .hg/localtags; echo
+ acb14030fe0a21b60322c440ad2d20cf7685a376 localblah
+ c2899151f4e76890c602a2597a650a72666681bf localnewline
+
+
+ $ python << EOF
+ > f = file('.hgtags'); last = f.readlines()[-1][:-1]; f.close()
+ > f = file('.hgtags', 'w'); f.write(last); f.close()
+ > EOF
+ $ hg ci -m'broken manual edit of .hgtags'
+ $ cat .hgtags; echo
+ acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
+ $ hg tag newline
+ $ cat .hgtags; echo
+ acb14030fe0a21b60322c440ad2d20cf7685a376 foobar
+ a0eea09de1eeec777b46f2085260a373b2fbc293 newline
+
+
+tag and branch using same name
+
+ $ hg branch tag-and-branch-same-name
+ marked working directory as branch tag-and-branch-same-name
+ (branches are permanent and global, did you want a bookmark?)
+ $ hg ci -m"discouraged"
+ $ hg tag tag-and-branch-same-name
+ warning: tag tag-and-branch-same-name conflicts with existing branch name
+
+test custom commit messages
+
+ $ cat > editor.sh << '__EOF__'
+ > echo "custom tag message" > "$1"
+ > echo "second line" >> "$1"
+ > __EOF__
+ $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg tag custom-tag -e
+ $ hg log -l1 --template "{desc}\n"
+ custom tag message
+ second line
+
+
+local tag with .hgtags modified
+
+ $ hg tag hgtags-modified
+ $ hg rollback
+ repository tip rolled back to revision 13 (undo commit)
+ working directory now based on revision 13
+ $ hg st
+ M .hgtags
+ ? .hgtags.orig
+ ? editor.sh
+ $ hg tag --local baz
+ $ hg revert --no-backup .hgtags
+
+
+tagging when at named-branch-head that's not a topo-head
+
+ $ hg up default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg merge -t internal:local
+ 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+ $ hg ci -m 'merge named branch'
+ $ hg up 13
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg tag new-topo-head
+
+tagging on null rev
+
+ $ hg up null
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ hg tag nullrev
+ abort: not at a branch head (use -f to force)
+ [255]
+
+ $ hg init empty
+ $ hg tag -R empty nullrev
+ abort: null revision specified
+ [255]
+
+ $ hg tag -R empty -r 00000000000 -f nulltag
+ abort: null revision specified
+ [255]
+
+ $ cd ..
+
+tagging on an uncommitted merge (issue2542)
+
+ $ hg init repo-tag-uncommitted-merge
+ $ cd repo-tag-uncommitted-merge
+ $ echo c1 > f1
+ $ hg ci -Am0
+ adding f1
+ $ echo c2 > f2
+ $ hg ci -Am1
+ adding f2
+ $ hg co -q 0
+ $ hg branch b1
+ marked working directory as branch b1
+ (branches are permanent and global, did you want a bookmark?)
+ $ hg ci -m2
+ $ hg up default
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg merge b1
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ (branch merge, don't forget to commit)
+
+ $ hg tag t1
+ abort: uncommitted merge
+ [255]
+ $ hg status
+ $ hg tag --rev 1 t2
+ abort: uncommitted merge
+ [255]
+ $ hg tag --rev 1 --local t3
+ $ hg tags -v
+ tip 2:2a156e8887cc
+ t3 1:c3adabd1a5f4 local
+
+ $ cd ..
+
+commit hook on tag used to be run without write lock - issue3344
+
+ $ hg init repo-tag
+ $ touch repo-tag/test
+ $ hg -R repo-tag commit -A -m "test"
+ adding test
+ $ hg init repo-tag-target
+ $ hg -R repo-tag --config hooks.commit="\"hg\" push \"`pwd`/repo-tag-target\"" tag tag
+ pushing to $TESTTMP/repo-tag-target
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 2 changes to 2 files
+