Subject: [Bug] git gc with alternates tries accessing non-existing directory

From: Ephrim Khong <[email-masked]>
Date: Wed, 18 Mar 2015 09:11:48 +0100

I have a non-bare repository /home/a set up with an alternate to the 
bare repository /b. Running  git gc  on /home/a produces below's error

   error: unable to open 
/b/objects/56/b969ffdf64343777a069260f41761dc0551bfa/00: Not a directory

The referenced file

   /b/objects/56/b969ffdf64343777a069260f41761dc0551bfa

exists, but is not a directory.

Thanks,
- Eph

 > git --version
git version 2.3.0

 > cat /home/a/.git/objects/info/alternates
/b/objects

 > cd /home/a && git gc
Counting objects: 4046, done.
Delta compression using up to 32 threads.
Compressing objects: 100% (970/970), done.
Writing objects: 100% (4046/4046), done.
Total 4046 (delta 3074), reused 4046 (delta 3074)
error: unable to open 
/b/objects/56/b969ffdf64343777a069260f41761dc0551bfa/00: Not a directory
fatal: unable to mark recent objects
error: failed to run prune

 > ls -al /b/objects/56
-r--r--r-- ##   199 Mar 11 11:21 0ae39e1f65160f0256aa1411d6c3c6d36cb79a
-r--r--r-- ##  1717 Mar 10 17:15 0c22f578c0f47c54bcd9de899701fceb08607a
-r--r--r-- ##   477 Mar  5 11:34 0dc6b1dac39e4366c739ede698232ce1a02d1a
-r--r--r-- ##    51 Mar  5 09:04 14ee4b890b61b9e8ac07a05b878d44ed2138da
-r--r----- ##   431 Mar  5 15:58 161adcb8a02868940f2fab2e7eb084de9a106a
-r--r--r-- ##   264 Mar 11 14:35 30af07890c31e54bc92da16ee6557d9ffba21a
-r--r----- ##   795 Mar 13 09:35 4ab2cb69f2f2e22215772f2ae604d24863ab9a
-r--r--r-- ##   181 Mar  9 12:38 ad631112e5971e872a88946cbae8176b4563ba
-r--r----- ## 14574 Mar  2 16:25 b969ffdf64343777a069260f41761dc0551bfa
-r--r--r-- ##   821 Mar  6 11:16 c55b01a68613c0ea1946869bb9b72370b8738a
-r--r--r-- ##  8199 Mar  4 12:14 cb732d06ae2adf04150766a70ca079e11801aa
-r--r----- ##   261 Mar 10 09:47 fadac9ce2f87392986438737b329fc6cab18ca