| #!/bin/sh | 
 |  | 
 | test_description='test @{-N} syntax' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 |  | 
 | make_commit () { | 
 | 	echo "$1" > "$1" && | 
 | 	git add "$1" && | 
 | 	git commit -m "$1" | 
 | } | 
 |  | 
 |  | 
 | test_expect_success 'setup' ' | 
 |  | 
 | 	make_commit 1 && | 
 | 	git branch side && | 
 | 	make_commit 2 && | 
 | 	make_commit 3 && | 
 | 	git checkout side && | 
 | 	make_commit 4 && | 
 | 	git merge master && | 
 | 	git checkout master | 
 |  | 
 | ' | 
 |  | 
 | # 1 -- 2 -- 3 master | 
 | #  \         \ | 
 | #   \         \ | 
 | #    --- 4 --- 5 side | 
 | # | 
 | # and 'side' should be the last branch | 
 |  | 
 | test_expect_success '@{-1} works' ' | 
 | 	test_cmp_rev side @{-1} | 
 | ' | 
 |  | 
 | test_expect_success '@{-1}~2 works' ' | 
 | 	test_cmp_rev side~2 @{-1}~2 | 
 | ' | 
 |  | 
 | test_expect_success '@{-1}^2 works' ' | 
 | 	test_cmp_rev side^2 @{-1}^2 | 
 | ' | 
 |  | 
 | test_expect_success '@{-1}@{1} works' ' | 
 | 	test_cmp_rev side@{1} @{-1}@{1} | 
 | ' | 
 |  | 
 | test_expect_success '@{-2} works' ' | 
 | 	test_cmp_rev master @{-2} | 
 | ' | 
 |  | 
 | test_expect_success '@{-3} fails' ' | 
 | 	test_must_fail git rev-parse @{-3} | 
 | ' | 
 |  | 
 | test_done | 
 |  | 
 |  |