]>
Commit | Line | Data |
---|---|---|
8bc9a0c7 LT |
1 | /* |
2 | * GIT - The information manager from hell | |
3 | * | |
4 | * Copyright (C) Linus Torvalds, 2005 | |
5 | */ | |
8ed05fb5 | 6 | #include "builtin.h" |
e83c5163 | 7 | #include "cache.h" |
8e440259 | 8 | #include "tree.h" |
a52139b4 | 9 | #include "cache-tree.h" |
e83c5163 | 10 | |
6bd20358 JH |
11 | static const char write_tree_usage[] = |
12 | "git-write-tree [--missing-ok] [--prefix=<prefix>/]"; | |
75a46f6b | 13 | |
a633fca0 | 14 | int cmd_write_tree(int argc, const char **argv, const char *unused_prefix) |
8ed05fb5 LS |
15 | { |
16 | int missing_ok = 0, ret; | |
17 | const char *prefix = NULL; | |
18 | unsigned char sha1[20]; | |
45525bd0 | 19 | const char *me = "git-write-tree"; |
8ed05fb5 | 20 | |
ef90d6d4 | 21 | git_config(git_default_config, NULL); |
8ed05fb5 LS |
22 | while (1 < argc) { |
23 | const char *arg = argv[1]; | |
24 | if (!strcmp(arg, "--missing-ok")) | |
25 | missing_ok = 1; | |
cc44c765 | 26 | else if (!prefixcmp(arg, "--prefix=")) |
8ed05fb5 LS |
27 | prefix = arg + 9; |
28 | else | |
8cdf3364 | 29 | usage(write_tree_usage); |
8ed05fb5 LS |
30 | argc--; argv++; |
31 | } | |
32 | ||
33 | if (argc > 2) | |
34 | die("too many options"); | |
35 | ||
45525bd0 JH |
36 | ret = write_cache_as_tree(sha1, missing_ok, prefix); |
37 | switch (ret) { | |
38 | case 0: | |
39 | printf("%s\n", sha1_to_hex(sha1)); | |
40 | break; | |
41 | case WRITE_TREE_UNREADABLE_INDEX: | |
42 | die("%s: error reading the index", me); | |
43 | break; | |
44 | case WRITE_TREE_UNMERGED_INDEX: | |
45 | die("%s: error building trees; the index is unmerged?", me); | |
46 | break; | |
47 | case WRITE_TREE_PREFIX_ERROR: | |
48 | die("%s: prefix %s not found", me, prefix); | |
49 | break; | |
50 | } | |
8ed05fb5 LS |
51 | return ret; |
52 | } |