Re: [PATCH 03/23] midx: add midx builtin
- From
Derrick Stolee <stolee@gmail.com>
- Date
- Jun 18, 2018, 19:23 UTC
- Message-ID
- <b0484a3f-95ab-f0c1-0dc5-3c75c766ff6e@gmail.com>
- In-Reply-To
- <CACsJy8Ca4B_xjpuTU=sFS+fOEin5fFiSmH+Z7JKjoUA6ZMnv4A@mail.gmail.com>
On 6/7/2018 1:20 PM, Duy Nguyen wrote:
Show 48 quoted lines
> On Thu, Jun 7, 2018 at 4:03 PM, Derrick Stolee <stolee@gmail.com> wrote:
>> diff --git a/Documentation/git-midx.txt b/Documentation/git-midx.txt
>> new file mode 100644
>> index 0000000000..2bd886f1a2
>> --- /dev/null
>> +++ b/Documentation/git-midx.txt
>> @@ -0,0 +1,29 @@
>> +git-midx(1)
>> +============
>> +
>> +NAME
>> +----
>> +git-midx - Write and verify multi-pack-indexes (MIDX files).
> No full stop. This head line is collected automatically with others
> and its having a full stop while the rest does not looks strange/
>
>> diff --git a/builtin/midx.c b/builtin/midx.c
>> new file mode 100644
>> index 0000000000..59ea92178f
>> --- /dev/null
>> +++ b/builtin/midx.c
>> @@ -0,0 +1,38 @@
>> +#include "builtin.h"
>> +#include "cache.h"
>> +#include "config.h"
>> +#include "git-compat-util.h"
> You only need either cache.h or git-compat-util.h. If cache.h is here,
> git-compat-util can be removed.
>
>> +#include "parse-options.h"
>> +
>> +static char const * const builtin_midx_usage[] ={
>> + N_("git midx [--object-dir <dir>]"),
>> + NULL
>> +};
>> +
>> +static struct opts_midx {
>> + const char *object_dir;
>> +} opts;
>> +
>> +int cmd_midx(int argc, const char **argv, const char *prefix)
>> +{
>> + static struct option builtin_midx_options[] = {
>> + { OPTION_STRING, 0, "object-dir", &opts.object_dir,
> For paths (including dir), OPTION_FILENAME may be a better option to
> handle correctly when the command is run in a subdir. See df217ed643
> (parse-opts: add OPT_FILENAME and transition builtins - 2009-05-23)
> for more info.Thanks for the pointer!
Show 39 quoted lines
>
>> + N_("dir"),
>> + N_("The object directory containing set of packfile and pack-index pairs.") },
> Other help strings do not have full stop either (I only checked a
> couple commands though)
>
> Also, doesn't OPT_STRING() work here too (if you avoid OPTION_FILENAME
> for some reason)?
>
>> + OPT_END(),
>> + };
>> +
>> + if (argc == 2 && !strcmp(argv[1], "-h"))
>> + usage_with_options(builtin_midx_usage, builtin_midx_options);
>> +
>> + git_config(git_default_config, NULL);
>> +
>> + argc = parse_options(argc, argv, prefix,
>> + builtin_midx_options,
>> + builtin_midx_usage, 0);
>> +
>> + if (!opts.object_dir)
>> + opts.object_dir = get_object_directory();
>> +
>> + return 0;
>> +}
>> diff --git a/git.c b/git.c
>> index c2f48d53dd..400fadd677 100644
>> --- a/git.c
>> +++ b/git.c
>> @@ -503,6 +503,7 @@ static struct cmd_struct commands[] = {
>> { "merge-recursive-theirs", cmd_merge_recursive, RUN_SETUP | NEED_WORK_TREE | NO_PARSEOPT },
>> { "merge-subtree", cmd_merge_recursive, RUN_SETUP | NEED_WORK_TREE | NO_PARSEOPT },
>> { "merge-tree", cmd_merge_tree, RUN_SETUP | NO_PARSEOPT },
>> + { "midx", cmd_midx, RUN_SETUP },
> If it's a plumbing and can take an --object-dir, then I don't think
> you should require it to run in a repo (with RUN_SETUP).
> RUN_SETUP_GENTLY may be better. You could even leave it empty here and
> only call setup_git_directory() only when --object-dir is not set.I agree. Good point. This could be run to maintain an alternate without any .git folder.
>
>> { "mktag", cmd_mktag, RUN_SETUP | NO_PARSEOPT },
>> { "mktree", cmd_mktree, RUN_SETUP },
>> { "mv", cmd_mv, RUN_SETUP | NEED_WORK_TREE },