| #!/bin/sh |
| |
| test_description='packed-refs entries are covered by loose refs' |
| |
| GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
| export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
| |
| . ./test-lib.sh |
| |
| test_expect_success setup ' |
| test_tick && |
| git commit --allow-empty -m one && |
| one=$(git rev-parse HEAD) && |
| git for-each-ref >actual && |
| echo "$one commit refs/heads/main" >expect && |
| test_cmp expect actual && |
| |
| git pack-refs --all && |
| git for-each-ref >actual && |
| echo "$one commit refs/heads/main" >expect && |
| test_cmp expect actual && |
| |
| git checkout --orphan another && |
| test_tick && |
| git commit --allow-empty -m two && |
| two=$(git rev-parse HEAD) && |
| git checkout -B main && |
| git branch -D another && |
| |
| git for-each-ref >actual && |
| echo "$two commit refs/heads/main" >expect && |
| test_cmp expect actual && |
| |
| git reflog expire --expire=now --all && |
| git prune && |
| git tag -m v1.0 v1.0 main |
| ' |
| |
| test_expect_success 'no error from stale entry in packed-refs' ' |
| git describe main >actual 2>&1 && |
| echo "v1.0" >expect && |
| test_cmp expect actual |
| ' |
| |
| test_expect_success 'list packed refs with unicode characters' ' |
| test_when_finished "rm -rf repo" && |
| git init repo && |
| ( |
| cd repo && |
| test_commit --no-tag A && |
| git update-ref refs/heads/ HEAD && |
| git update-ref refs/heads/z HEAD && |
| git pack-refs --all && |
| printf "%s commit\trefs/heads/z\n" $(git rev-parse HEAD) >expect && |
| git for-each-ref refs/heads/z >actual && |
| test_cmp expect actual |
| ) |
| ' |
| |
| test_done |