author | Junio C Hamano <gitster@pobox.com> | |
Thu, 21 Feb 2008 00:13:28 +0000 (16:13 -0800) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Thu, 21 Feb 2008 00:13:28 +0000 (16:13 -0800) |
* jk/empty-tree:
add--interactive: handle initial commit better
hard-code the empty tree object
add--interactive: handle initial commit better
hard-code the empty tree object
1 | 2 | |||
---|---|---|---|---|
sha1_file.c | patch | | diff1 | | diff2 | | blob | history |
diff --combined sha1_file.c
index d9da7c8f75c8f44a62661d92b6f8e5266df83a73,f7b75b2acc1f52775d70f94fa20c0ca98b8f58c9..1ddb96bb82b60f4da8489664d13f398d88bf5a15
--- 1/sha1_file.c
--- 2/sha1_file.c
+++ b/sha1_file.c
} *cached_objects;
static int cached_object_nr, cached_object_alloc;
+ static struct cached_object empty_tree = {
+ /* empty tree sha1: 4b825dc642cb6eb9a060e54bf8d69288fbee4904 */
+ "\x4b\x82\x5d\xc6\x42\xcb\x6e\xb9\xa0\x60"
+ "\xe5\x4b\xf8\xd6\x92\x88\xfb\xee\x49\x04",
+ OBJ_TREE,
+ "",
+ 0
+ };
+
static struct cached_object *find_cached_object(const unsigned char *sha1)
{
int i;
if (!hashcmp(co->sha1, sha1))
return co;
}
+ if (!hashcmp(sha1, empty_tree.sha1))
+ return &empty_tree;
return NULL;
}
}
ref_length = strlen(ref_type);
- if (memcmp(buffer, ref_type, ref_length) ||
+ if (ref_length + 40 > isize ||
+ memcmp(buffer, ref_type, ref_length) ||
get_sha1_hex((char *) buffer + ref_length, actual_sha1)) {
free(buffer);
return NULL;
if ((type == OBJ_BLOB) && S_ISREG(st->st_mode)) {
struct strbuf nbuf;
strbuf_init(&nbuf, 0);
- if (convert_to_git(path, buf, size, &nbuf)) {
+ if (convert_to_git(path, buf, size, &nbuf,
+ write_object ? safe_crlf : 0)) {
munmap(buf, size);
buf = strbuf_detach(&nbuf, &size);
re_allocated = 1;