Merge branch 'sv/objfixes'
authorJunio C Hamano <gitster@pobox.com>
Wed, 6 Jun 2007 22:43:24 +0000 (15:43 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 6 Jun 2007 22:43:24 +0000 (15:43 -0700)
* sv/objfixes:
Don't assume tree entries that are not dirs are blobs
git-cvsimport: Make sure to use $git_dir always instead of .git sometimes
fix documentation of unpack-objects -n
Accept dates before 2000/01/01 when specified as seconds since the epoch

1  2 
tree.c
diff --combined tree.c
index a3728270b4027cd56e09e1a56ec17e177d0a6998,e946dac06938b44ce13d7e30dd93e26eda75e5ef..04fe653a8e25feb0fc15f76ba487d0f8dbd52f82
--- 1/tree.c
--- 2/tree.c
+++ b/tree.c
@@@ -157,7 -157,7 +157,7 @@@ static void track_tree_refs(struct tre
        /* Count how many entries there are.. */
        init_tree_desc(&desc, item->buffer, item->size);
        while (tree_entry(&desc, &entry)) {
 -              if (S_ISDIRLNK(entry.mode))
 +              if (S_ISGITLINK(entry.mode))
                        continue;
                n_refs++;
        }
        while (tree_entry(&desc, &entry)) {
                struct object *obj;
  
 -              if (S_ISDIRLNK(entry.mode))
 +              if (S_ISGITLINK(entry.mode))
                        continue;
                if (S_ISDIR(entry.mode))
                        obj = &lookup_tree(entry.sha1)->object;
-               else
+               else if (S_ISREG(entry.mode) || S_ISLNK(entry.mode))
                        obj = &lookup_blob(entry.sha1)->object;
+               else {
+                       warning("in tree %s: entry %s has bad mode %.6o\n",
+                            sha1_to_hex(item->object.sha1), entry.path, entry.mode);
+                       obj = lookup_unknown_object(entry.sha1);
+               }
                refs->ref[i++] = obj;
        }
        set_object_refs(&item->object, refs);