diff --git a/write-tree.c b/write-tree.c
index a794ea15b89ece14570bb8bf3ed0b42ab65cd413..f866059f24bacd314fa4a979334a9893dbfc19ba 100644 (file)
--- a/write-tree.c
+++ b/write-tree.c
*/
#include "cache.h"
*/
#include "cache.h"
+static int missing_ok = 0;
+
static int check_valid_sha1(unsigned char *sha1)
{
int ret;
static int check_valid_sha1(unsigned char *sha1)
{
int ret;
sha1 = subdir_sha1;
}
sha1 = subdir_sha1;
}
- if (check_valid_sha1(sha1) < 0)
+ if (!missing_ok && check_valid_sha1(sha1) < 0)
exit(1);
entrylen = pathlen - baselen;
exit(1);
entrylen = pathlen - baselen;
@@ -81,11 +83,26 @@ static int write_tree(struct cache_entry **cachep, int maxentries, const char *b
return nr;
}
return nr;
}
+static const char write_tree_usage[] = "git-write-tree [--missing-ok]";
+
int main(int argc, char **argv)
{
int i, funny;
int main(int argc, char **argv)
{
int i, funny;
- int entries = read_cache();
+ int entries;
unsigned char sha1[20];
unsigned char sha1[20];
+
+ setup_git_directory();
+
+ entries = read_cache();
+ if (argc == 2) {
+ if (!strcmp(argv[1], "--missing-ok"))
+ missing_ok = 1;
+ else
+ die(write_tree_usage);
+ }
+
+ if (argc > 2)
+ die("too many options");
if (entries < 0)
die("git-write-tree: error reading cache");
if (entries < 0)
die("git-write-tree: error reading cache");