Wednesday, June 29, 2011

Git Unpack Error Over HTTP Fetch

Had a problem today with a server fetching the latest changes from our upstream repository over HTTP.


git fetch origin
error: packfile .git/objects/pack/pack-385ce85680e3c3ff129907559101b9a4544a9da0.pack does not match index
error: packfile .git/objects/pack/pack-385ce85680e3c3ff129907559101b9a4544a9da0.pack cannot be accessed


I didn't have much luck finding any advice on google, so I thought I'd post my own solution, which was extremely simple!


rm  .git/objects/pack/pack-385ce85680e3c3ff129907559101b9a4544a9da0.pack
git gc
git fetch origin

Getting pack 385ce85680e3c3ff129907559101b9a4544a9da0
which contains dcbe1aa3d3e564aea30acc55a7df105bfdc586a2
# success

Essentially, in the version of git we run (1.6.3.1), git fetch over HTTP will blindly pull down every pack regardless of whether or not it is applicable to the downstream checkout. What was happening was the pack somehow got corrupted and an unfetched pack was dependent on that corrupted pack, so git couldn't resolve the mismatch. Removing the corrupted pack let git re-fetch it and the dependent pack that followed.

1 comment: