t / t7701-repack-unpack-unreachable.shon commit Merge branch 'js/maint-clone-insteadof' (48c12d4)
   1#!/bin/sh
   2
   3test_description='git-repack works correctly'
   4
   5. ./test-lib.sh
   6
   7test_expect_success '-A option leaves unreachable objects unpacked' '
   8        echo content > file1 &&
   9        git add . &&
  10        git commit -m initial_commit &&
  11        # create a transient branch with unique content
  12        git checkout -b transient_branch &&
  13        echo more content >> file1 &&
  14        # record the objects created in the database for file, commit, tree
  15        fsha1=$(git hash-object file1) &&
  16        git commit -a -m more_content &&
  17        csha1=$(git rev-parse HEAD^{commit}) &&
  18        tsha1=$(git rev-parse HEAD^{tree}) &&
  19        git checkout master &&
  20        echo even more content >> file1 &&
  21        git commit -a -m even_more_content &&
  22        # delete the transient branch
  23        git branch -D transient_branch &&
  24        # pack the repo
  25        git repack -A -d -l &&
  26        # verify objects are packed in repository
  27        test 3 = $(git verify-pack -v -- .git/objects/pack/*.idx |
  28                   grep -e "^$fsha1 " -e "^$csha1 " -e "^$tsha1 " |
  29                   sort | uniq | wc -l) &&
  30        git show $fsha1 &&
  31        git show $csha1 &&
  32        git show $tsha1 &&
  33        # now expire the reflog
  34        sleep 1 &&
  35        git reflog expire --expire-unreachable=now --all &&
  36        # and repack
  37        git repack -A -d -l &&
  38        # verify objects are retained unpacked
  39        test 0 = $(git verify-pack -v -- .git/objects/pack/*.idx |
  40                   grep -e "^$fsha1 " -e "^$csha1 " -e "^$tsha1 " |
  41                   sort | uniq | wc -l) &&
  42        git show $fsha1 &&
  43        git show $csha1 &&
  44        git show $tsha1
  45'
  46
  47test_done