On Thu, Feb 25, 2016 at 12:32 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Jacob Keller <jacob.keller@xxxxxxxxx> writes: > >> On Wed, Feb 24, 2016 at 11:11 PM, Jeff King <peff@xxxxxxxx> wrote: >>> static int clone_submodule(const char *path, const char *gitdir, const char *url, >>> const char *depth, const char *reference, int quiet) >>> { >>> @@ -145,7 +166,7 @@ static int clone_submodule(const char *path, const char *gitdir, const char *url >>> argv_array_push(&cp.args, path); >>> >>> cp.git_cmd = 1; >>> - cp.env = local_repo_env; >>> + add_submodule_repo_env(&cp.env_array); >>> cp.no_stdin = 1; >>> >>> return run_command(&cp); >> >> >> Ignore my previous comment. The cp.env API is *very* subtle. If the >> line is just a name, it removes the environment variable, while >> "name=value" adds it. That is definitely not what I was expecting >> here, so I misread how it works. > > I think that is modelled after how putenv(3) is made capable of > removing an existing environment variable. Yes. It makes perfect sense once you read it, i was just very confused at the initial glance because it felt like it was copying the entire local_repo_env into the submodule child process. I just read the technical API documentation and understand it now. Thanks, Jake -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html