write-tree is now willing to write empty tree
authorPetr Baudis <pasky@ucw.cz>
Sun, 8 May 2005 14:15:59 +0000 (16:15 +0200)
committerPetr Baudis <xpasky@machine.sinus.cz>
Sun, 8 May 2005 14:15:59 +0000 (16:15 +0200)
Cogito wants to be able to do some initial commit at the time of cg-init,
which may be empty in case when cg-init is called in an empty tree.

write-tree.c
index 168352853d37bdca71d68ad8312b87b84477dea1..d801d7fbe9cdec01e410546ce27a76aba98692f0 100644 (file)
@@ -30,7 +30,7 @@ static int write_tree(struct cache_entry **cachep, int maxentries, const char *b
        offset = 0;
 
        nr = 0;
        offset = 0;
 
        nr = 0;
-       do {
+       while (nr < maxentries) {
                struct cache_entry *ce = cachep[nr];
                const char *pathname = ce->name, *filename, *dirname;
                int pathlen = ce_namelen(ce), entrylen;
                struct cache_entry *ce = cachep[nr];
                const char *pathname = ce->name, *filename, *dirname;
                int pathlen = ce_namelen(ce), entrylen;
@@ -75,7 +75,7 @@ static int write_tree(struct cache_entry **cachep, int maxentries, const char *b
                memcpy(buffer + offset, sha1, 20);
                offset += 20;
                nr++;
                memcpy(buffer + offset, sha1, 20);
                offset += 20;
                nr++;
-       } while (nr < maxentries);
+       }
 
        write_sha1_file(buffer, offset, "tree", returnsha1);
        free(buffer);
 
        write_sha1_file(buffer, offset, "tree", returnsha1);
        free(buffer);
@@ -88,8 +88,8 @@ int main(int argc, char **argv)
        int entries = read_cache();
        unsigned char sha1[20];
 
        int entries = read_cache();
        unsigned char sha1[20];
 
-       if (entries <= 0)
-               die("write-tree: no cache contents to write");
+       if (entries < 0)
+               die("write-tree: error reading cache");
 
        /* Verify that the tree is merged */
        unmerged = 0;
 
        /* Verify that the tree is merged */
        unmerged = 0;