summaryrefslogtreecommitdiff
path: root/read-cache.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-09-17 11:40:27 -0700
committerJunio C Hamano <gitster@pobox.com>2013-09-17 11:40:27 -0700
commit541dc4dfa07f70e66e244be566480ed4699b4fc9 (patch)
tree0d389b2e7743d39631d76e7e9dc552a5a8fe7694 /read-cache.c
parent9b4aa47e7d7c00c9a9225e316b520b62ddfb455c (diff)
parent83bd7437ca6acbee0db431fc8ec7cf823d9459ec (diff)
downloadgit-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.c13
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;
}