#!/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