diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-07-22 21:20:26 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-07-22 15:59:27 -0700 |
commit | 16a7fcfe5e568b50ddebe2369600e71da67d1405 (patch) | |
tree | de76309328d1dd4c9863b1179ab121410f1cfbf1 /builtin-fsck.c | |
parent | c4640fe8d9e25fd3e206a39233c71a6dbb68917e (diff) | |
download | git-16a7fcfe5e568b50ddebe2369600e71da67d1405.tar.gz git-16a7fcfe5e568b50ddebe2369600e71da67d1405.tar.xz |
fsck --lost-found: write blob's contents, not their SHA-1
When looking for a lost blob, it is much nicer to be able to grep
through .git/lost-found/other/* than to write an inefficient loop
over the file names. So write the contents of the dangling blobs,
not their object names.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-fsck.c')
-rw-r--r-- | builtin-fsck.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/builtin-fsck.c b/builtin-fsck.c index 350ec5e14..8d12287f0 100644 --- a/builtin-fsck.c +++ b/builtin-fsck.c @@ -152,7 +152,17 @@ static void check_unreachable_object(struct object *obj) } if (!(f = fopen(filename, "w"))) die("Could not open %s", filename); - fprintf(f, "%s\n", sha1_to_hex(obj->sha1)); + if (obj->type == OBJ_BLOB) { + enum object_type type; + unsigned long size; + char *buf = read_sha1_file(obj->sha1, + &type, &size); + if (buf) { + fwrite(buf, size, 1, f); + free(buf); + } + } else + fprintf(f, "%s\n", sha1_to_hex(obj->sha1)); fclose(f); } return; |