mirror of
https://github.com/git/git
synced 2024-08-24 02:11:08 +00:00
![Jeff King](/assets/img/avatar_default.png)
The "prefix" variable passed by git.c into the builtin cmd_read_tree() and cmd_write_tree() functions is named "unused_prefix". But we do in fact pass it to parse_options(), which may use the prefix to adjust any filename options. Let's get rid of this confusing name. However, we can't just call it "prefix". The reason these variables were renamed in the first place is that they shadowed local variables named "prefix", because these commands both take a "--prefix" option. So let's rename the parameters, but try to reduce further confusion: 1. In both cases we'll call them "cmd_prefix" to mark that they're part of the cmd_* interface. 2. In cmd_write_tree(), we'll rename the local prefix variable to "tree_prefix" to make it more clear that we're talking about the prefix to be used for the tree we're writing. 3. In cmd_read_tree(), the "prefix" local has since migrated into "struct unpack_trees_options". We'll leave that alone, as the context within the struct makes its meaning clear (we actually _could_ just call the parameter "prefix" now, but that invites confusion in the other direction). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
/*
|
|
* GIT - The information manager from hell
|
|
*
|
|
* Copyright (C) Linus Torvalds, 2005
|
|
*/
|
|
#define USE_THE_INDEX_COMPATIBILITY_MACROS
|
|
#include "builtin.h"
|
|
#include "cache.h"
|
|
#include "config.h"
|
|
#include "tree.h"
|
|
#include "cache-tree.h"
|
|
#include "parse-options.h"
|
|
|
|
static const char * const write_tree_usage[] = {
|
|
N_("git write-tree [--missing-ok] [--prefix=<prefix>/]"),
|
|
NULL
|
|
};
|
|
|
|
int cmd_write_tree(int argc, const char **argv, const char *cmd_prefix)
|
|
{
|
|
int flags = 0, ret;
|
|
const char *tree_prefix = NULL;
|
|
struct object_id oid;
|
|
const char *me = "git-write-tree";
|
|
struct option write_tree_options[] = {
|
|
OPT_BIT(0, "missing-ok", &flags, N_("allow missing objects"),
|
|
WRITE_TREE_MISSING_OK),
|
|
OPT_STRING(0, "prefix", &tree_prefix, N_("<prefix>/"),
|
|
N_("write tree object for a subdirectory <prefix>")),
|
|
{ OPTION_BIT, 0, "ignore-cache-tree", &flags, NULL,
|
|
N_("only useful for debugging"),
|
|
PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, NULL,
|
|
WRITE_TREE_IGNORE_CACHE_TREE },
|
|
OPT_END()
|
|
};
|
|
|
|
git_config(git_default_config, NULL);
|
|
argc = parse_options(argc, argv, cmd_prefix, write_tree_options,
|
|
write_tree_usage, 0);
|
|
|
|
ret = write_cache_as_tree(&oid, flags, tree_prefix);
|
|
switch (ret) {
|
|
case 0:
|
|
printf("%s\n", oid_to_hex(&oid));
|
|
break;
|
|
case WRITE_TREE_UNREADABLE_INDEX:
|
|
die("%s: error reading the index", me);
|
|
break;
|
|
case WRITE_TREE_UNMERGED_INDEX:
|
|
die("%s: error building trees", me);
|
|
break;
|
|
case WRITE_TREE_PREFIX_ERROR:
|
|
die("%s: prefix %s not found", me, tree_prefix);
|
|
break;
|
|
}
|
|
return ret;
|
|
}
|