Skip to content
Browse files

git-repack: Properly abort in corrupt repository

In a corrupt repository, git-repack produces a pack that does not
contain needed objects without complaining, and the result of this
combined with -d flag can be very painful -- e.g. a lossage of one
tree object can lead to lossage of blobs reachable only through that
tree.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information...
1 parent b17e659 commit ef07618fdd660057b80fe75007405c62502a5820 Linus Torvalds committed with Junio C Hamano Nov 21, 2005
Showing with 2 additions and 2 deletions.
  1. +1 −1 git-repack.sh
  2. +1 −1 pack-objects.c
View
2 git-repack.sh
@@ -41,7 +41,7 @@ esac
if [ "$local" ]; then
pack_objects="$pack_objects --local"
fi
-name=$(git-rev-list --objects $rev_list $(git-rev-parse $rev_parse) |
+name=$(git-rev-list --objects $rev_list $(git-rev-parse $rev_parse) 2>&1 |
git-pack-objects --non-empty $pack_objects .tmp-pack) ||
exit 1
if [ -z "$name" ]; then
View
2 pack-objects.c
@@ -524,7 +524,7 @@ int main(int argc, char **argv)
unsigned char sha1[20];
if (get_sha1_hex(line, sha1))
- die("expected sha1, got garbage");
+ die("expected sha1, got garbage:\n %s", line);
hash = 0;
p = line+40;
while (*p) {

0 comments on commit ef07618

Please sign in to comment.
Something went wrong with that request. Please try again.