summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: daae192)
raw | patch | inline | side by side (parent: daae192)
author | Jonathan Nieder <jrnieder@gmail.com> | |
Wed, 26 May 2010 21:50:34 +0000 (16:50 -0500) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Fri, 28 May 2010 22:08:27 +0000 (15:08 -0700) |
daae1922 (fsck: check ident lines in commit objects, 2010-04-24)
taught fsck to expect commit objects to have the form
tree <object name>
<parents>
author <valid ident string>
committer <valid ident string>
log message
The check is overly strict: for example, it errors out with the
message “expected blank line” for perfectly valid commits with an
"encoding ISO-8859-1" line.
Later it might make sense to teach fsck about the rest of the header
and warn about unrecognized header lines, but for simplicity, let’s
accept arbitrary trailing lines for now.
Reported-by: Tuncer Ayaz <tuncer.ayaz@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
taught fsck to expect commit objects to have the form
tree <object name>
<parents>
author <valid ident string>
committer <valid ident string>
log message
The check is overly strict: for example, it errors out with the
message “expected blank line” for perfectly valid commits with an
"encoding ISO-8859-1" line.
Later it might make sense to teach fsck about the rest of the header
and warn about unrecognized header lines, but for simplicity, let’s
accept arbitrary trailing lines for now.
Reported-by: Tuncer Ayaz <tuncer.ayaz@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
fsck.c | patch | blob | history | |
t/t1450-fsck.sh | patch | blob | history |
index ae9ae1abee8e406e838fc32802aeb2c50ba4ca7d..3d05d4a794a4158a421ce1265422d241e28a5278 100644 (file)
--- a/fsck.c
+++ b/fsck.c
err = fsck_ident(&buffer, &commit->object, error_func);
if (err)
return err;
- if (*buffer != '\n')
- return error_func(&commit->object, FSCK_ERROR, "invalid format - expected blank line");
if (!commit->tree)
return error_func(&commit->object, FSCK_ERROR, "could not load commit's tree %s", sha1_to_hex(tree_sha1));
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 22a80c8268b368963d58fd26fffde5cc8d084ee6..759cf12e16bcddc3dab9d6b3ad8abd5590245a94 100755 (executable)
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
. ./test-lib.sh
test_expect_success setup '
+ git config i18n.commitencoding ISO-8859-1 &&
test_commit A fileA one &&
+ git config --unset i18n.commitencoding &&
git checkout HEAD^0 &&
test_commit B fileB two &&
git tag -d A B &&
)
'
+test_expect_success 'valid objects appear valid' '
+ { git fsck 2>out; true; } &&
+ ! grep error out &&
+ ! grep fatal out
+'
+
# Corruption tests follow. Make sure to remove all traces of the
# specific corruption you test afterwards, lest a later test trip over
# it.