2 * GIT - The information manager from hell
4 * Copyright (C) Linus Torvalds, 2005
9 #include "cache-tree.h"
11 static const char write_tree_usage[] =
12 "git write-tree [--missing-ok] [--prefix=<prefix>/]";
14 int cmd_write_tree(int argc, const char **argv, const char *unused_prefix)
17 const char *prefix = NULL;
18 unsigned char sha1[20];
19 const char *me = "git-write-tree";
21 git_config(git_default_config, NULL);
23 const char *arg = argv[1];
24 if (!strcmp(arg, "--missing-ok"))
25 flags |= WRITE_TREE_MISSING_OK;
26 else if (!prefixcmp(arg, "--prefix="))
28 else if (!prefixcmp(arg, "--ignore-cache-tree"))
30 * This is only useful for debugging, so I
31 * do not bother documenting it.
33 flags |= WRITE_TREE_IGNORE_CACHE_TREE;
35 usage(write_tree_usage);
40 die("too many options");
42 ret = write_cache_as_tree(sha1, flags, prefix);
45 printf("%s\n", sha1_to_hex(sha1));
47 case WRITE_TREE_UNREADABLE_INDEX:
48 die("%s: error reading the index", me);
50 case WRITE_TREE_UNMERGED_INDEX:
51 die("%s: error building trees", me);
53 case WRITE_TREE_PREFIX_ERROR:
54 die("%s: prefix %s not found", me, prefix);