clone: --dissociate option to mark that reference is only temporary
[gitweb.git] / t / t3210-pack-refs.sh
index cd04361df811d329e269ac1d5eb0b0f03baa74d8..3a017bf437395526cf54403d4ea1db36a3cff0b3 100755 (executable)
@@ -118,4 +118,44 @@ test_expect_success 'pack, prune and repack' '
        test_cmp all-of-them again
 '
 
+test_expect_success 'explicit pack-refs with dangling packed reference' '
+       git commit --allow-empty -m "soon to be garbage-collected" &&
+       git pack-refs --all &&
+       git reset --hard HEAD^ &&
+       git reflog expire --expire=all --all &&
+       git prune --expire=all &&
+       git pack-refs --all 2>result &&
+       test_cmp /dev/null result
+'
+
+test_expect_success 'delete ref with dangling packed version' '
+       git checkout -b lamb &&
+       git commit --allow-empty -m "future garbage" &&
+       git pack-refs --all &&
+       git reset --hard HEAD^ &&
+       git checkout master &&
+       git reflog expire --expire=all --all &&
+       git prune --expire=all &&
+       git branch -d lamb 2>result &&
+       test_cmp /dev/null result
+'
+
+test_expect_success 'delete ref while another dangling packed ref' '
+       git branch lamb &&
+       git commit --allow-empty -m "future garbage" &&
+       git pack-refs --all &&
+       git reset --hard HEAD^ &&
+       git reflog expire --expire=all --all &&
+       git prune --expire=all &&
+       git branch -d lamb 2>result &&
+       test_cmp /dev/null result
+'
+
+test_expect_success 'pack ref directly below refs/' '
+       git update-ref refs/top HEAD &&
+       git pack-refs --all --prune &&
+       grep refs/top .git/packed-refs &&
+       test_path_is_missing .git/refs/top
+'
+
 test_done