diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-09-17 11:40:27 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-09-17 11:40:27 -0700 |
commit | 541dc4dfa07f70e66e244be566480ed4699b4fc9 (patch) | |
tree | 0d389b2e7743d39631d76e7e9dc552a5a8fe7694 /read-cache.c | |
parent | 9b4aa47e7d7c00c9a9225e316b520b62ddfb455c (diff) | |
parent | 83bd7437ca6acbee0db431fc8ec7cf823d9459ec (diff) | |
download | git-541dc4dfa07f70e66e244be566480ed4699b4fc9.tar.gz |
Merge branch 'jk/write-broken-index-with-nul-sha1'
Earlier we started rejecting an attempt to add 0{40} object name to
the index and to tree objects, but it sometimes is necessary to
allow so to be able to use tools like filter-branch to correct such
broken tree objects.
* jk/write-broken-index-with-nul-sha1:
write_index: optionally allow broken null sha1s
Diffstat (limited to 'read-cache.c')
-rw-r--r-- | read-cache.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/read-cache.c b/read-cache.c index 885943a6df..6bbe1b1fb3 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1818,8 +1818,17 @@ int write_index(struct index_state *istate, int newfd) continue; if (!ce_uptodate(ce) && is_racy_timestamp(istate, ce)) ce_smudge_racily_clean_entry(ce); - if (is_null_sha1(ce->sha1)) - return error("cache entry has null sha1: %s", ce->name); + if (is_null_sha1(ce->sha1)) { + static const char msg[] = "cache entry has null sha1: %s"; + static int allow = -1; + + if (allow < 0) + allow = git_env_bool("GIT_ALLOW_NULL_SHA1", 0); + if (allow) + warning(msg, ce->name); + else + return error(msg, ce->name); + } if (ce_write_entry(&c, newfd, ce, previous_name) < 0) return -1; } |