On 8/31/2021 4:32 AM, Ævar Arnfjörð Bjarmason wrote: > > On Mon, Aug 30 2021, Johannes Schindelin via GitGitGadget wrote: > >> The `git` executable has these two very useful options: >> >> -C <directory>: >> switch to the specified directory before performing any actions >> >> -c <key>=<value>: >> temporarily configure this setting for the duration of the >> specified scalar subcommand >> >> With this commit, we teach the `scalar` executable the same trick. >> [...] >> + while (argc > 1 && *argv[1] == '-') { >> + if (!strcmp(argv[1], "-C")) { >> + if (argc < 3) >> + die(_("-C requires a <directory>")); >> + if (chdir(argv[2]) < 0) >> + die_errno(_("could not change to '%s'"), >> + argv[2]); >> + argc -= 2; >> + argv += 2; >> + } else if (!strcmp(argv[1], "-c")) { >> + if (argc < 3) >> + die(_("-c requires a <key>=<value> argument")); >> + git_config_push_parameter(argv[2]); >> + argc -= 2; >> + argv += 2; >> + } else >> + break; >> + } > > This along with my earlier comment about the Makefile copy/pasting makes > me wonder if an easier way to integrate this wouldn't be to refactor > git.c a bit to have it understand either "git" or "scalar", then instead > of "ls-tree" etc. as "git" the subcommands would become "built-ins". > > Which would give us both "[git|scalar] [-c ...] <cmd>" for free, and > elimante the need for the inevetable future divergence of wanting -p, > -P, --exec-path etc. in both. Such a change would likely eliminate the ability to not include Scalar when building the Git codebase, which we tried to avoid by keeping it within contrib and have it be compiled via an opt-in flag. If we want to talk about integrating Scalar into Git in a deeper way, then that is an interesting discussion to have, but it lives at a much higher level than Makefile details. The questions we are really looking to answer in this RFC are: 1. Will the Git project accept Scalar into its codebase? 2. What is the best place for Scalar to live in the Git codebase? We erred on the side of keeping Scalar as optional as possible. If the community is more interested in a deeper integration, then that could be an interesting direction. In my opinion, I think the current tactic is safest. We could always decide on a deeper integration later by moving the code around. It seems harder to do the reverse. Thanks, -Stolee