Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
---
 read-cache.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/read-cache.c b/read-cache.c
index fda78bc..4579215 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1720,6 +1720,26 @@ static int ce_write_entry(git_SHA_CTX *c, int fd, struct 
cache_entry *ce,
                              ce->name + common, ce_namelen(ce) - common);
        }
 
+       if (object_database_contaminated) {
+               struct object_info oi;
+               switch (ce->ce_mode) {
+               case S_IFGITLINK:
+                       break;
+               case S_IFDIR:
+                       if (sha1_object_info_extended(ce->sha1, &oi) != 
OBJ_TREE ||
+                           (oi.alt && oi.alt->external))
+                               die("cannot create index referring to an 
external tree %s",
+                                   sha1_to_hex(ce->sha1));
+                       break;
+               default:
+                       if (sha1_object_info_extended(ce->sha1, &oi) != 
OBJ_BLOB ||
+                                   (oi.alt && oi.alt->external))
+                               die("cannot create index referring to an 
external blob %s",
+                                   sha1_to_hex(ce->sha1));
+                       break;
+               }
+       }
+
        result = ce_write(c, fd, ondisk, size);
        free(ondisk);
        return result;
-- 
1.8.0.rc3.18.g0d9b108

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to