]> git.ipfire.org Git - thirdparty/git.git/blame - builtin-write-tree.c
filter-branch: fix variable export logic
[thirdparty/git.git] / builtin-write-tree.c
CommitLineData
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
11static const char write_tree_usage[] =
12"git-write-tree [--missing-ok] [--prefix=<prefix>/]";
75a46f6b 13
a633fca0 14int 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
9ec398d2 21 git_config(git_default_config);
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}