Matthias Kestenholz <lists@xxxxxxxxxxxx> writes: > $ sudo chown root .git/objects/* > > repeat the modification and commit commands until you get a message > similar to the following: > > unable to write sha1 filename .git/objects/90/b33..: Permission denied > fatal: 90b33... is not a valid 'tree' object > unable to write sha1 filename .git/objects/ba/fe4..: Permission denied > error: file: failed to insert into database > fatal: Unable to process file file > etc... > > The result of this all is: refs/heads/master might now point to a > non-existant commit object. Every git command now errors out with: > > fatal: bad tree object HEAD > > and git-log shows no output (probably since it does not find a > commit to begin with) You are right. commit-tree does not seem to check if it successfully wrote the commit object. How about this? -- >8 -- diff --git a/commit-tree.c b/commit-tree.c index 88871b0..16c1787 100644 --- a/commit-tree.c +++ b/commit-tree.c @@ -125,7 +125,10 @@ int main(int argc, char **argv) while (fgets(comment, sizeof(comment), stdin) != NULL) add_buffer(&buffer, &size, "%s", comment); - write_sha1_file(buffer, size, "commit", commit_sha1); - printf("%s\n", sha1_to_hex(commit_sha1)); - return 0; + if (!write_sha1_file(buffer, size, "commit", commit_sha1)) { + printf("%s\n", sha1_to_hex(commit_sha1)); + return 0; + } + else + return 1; } - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html