A branch name alias is an alternative name for a branch, that is in most respects equivalent to using the proper branch name. It is implemented as a symbolic ref from the alias to the proper branch name. Currently branch aliases work well up to the point where you try to delete them (with "git branch -d"), at which point they incorrectly delete the proper branch name instead of the alias. This is reflected in these tests, and will be fixed in a subsequent patch. Signed-off-by: Johan Herland <johan@xxxxxxxxxxx> --- t/t3220-symbolic-ref-as-branch-alias.sh | 53 +++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 t/t3220-symbolic-ref-as-branch-alias.sh diff --git a/t/t3220-symbolic-ref-as-branch-alias.sh b/t/t3220-symbolic-ref-as-branch-alias.sh new file mode 100755 index 0000000..39f3a33 --- /dev/null +++ b/t/t3220-symbolic-ref-as-branch-alias.sh @@ -0,0 +1,53 @@ +#!/bin/sh + +test_description='Using a symbolic ref as a branch name alias + +This test uses refs/heads/alias as a symbolic ref to refs/heads/master, and +verifies that it works as a branch name alias, namely: + - commits on "master" are automatically reflected on "alias" + - creating or deleting "alias" does not affect "master" + - the "alias" is not broken by "git gc" +' +. ./test-lib.sh + +test_expect_success 'prepare a trivial repository' ' + echo Hello > A && + git add A && + git commit -m "Hello" && + git rev-parse --verify HEAD > expect +' + +test_expect_success 'create symref: refs/heads/alias -> refs/heads/master' ' + git symbolic-ref refs/heads/alias refs/heads/master && + git rev-parse --verify master > master && + git rev-parse --verify alias > alias && + test_cmp expect master && + test_cmp expect alias +' + +test_expect_success '"git gc" does not change "alias" symref' ' + git gc && + git rev-parse --verify master > master && + git rev-parse --verify alias > alias && + test_cmp expect master && + test_cmp expect alias +' + +test_expect_success 'commits are reflected through "alias" symref' ' + echo World >> A && + git commit -am "A" && + git rev-parse --verify HEAD > expect && + git rev-parse --verify master > master && + git rev-parse --verify alias > alias && + test_cmp expect master && + test_cmp expect alias +' + +test_expect_failure '"branch -d" deletes the "alias" symref' ' + git branch -d alias && + git rev-parse --verify master > master && + test_must_fail git rev-parse --verify alias && + test_cmp expect master +' + +test_done -- 1.7.12.1.609.g5cd6968 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html