From: Shawn O. Pearce Date: Thu, 24 May 2007 07:15:27 GMT Subject: Re: [PATCH 10/22] run-command: optionally clear git environment Message-ID: <20070524071527.GM28023@spearce.org> In-Reply-To: <81b0412b0705232357i535be2adl6570847942ecb9c0@mail.gmail.com> Alex Riesen wrote: > On 5/24/07, skimo@liacs.nl wrote: > >+ if (cmd->clear_git_env) { > >+ unsetenv(ALTERNATE_DB_ENVIRONMENT); > >+ unsetenv(DB_ENVIRONMENT); > >+ unsetenv(CONFIG_ENVIRONMENT); > >+ unsetenv(GIT_DIR_ENVIRONMENT); > >+ unsetenv(GRAFT_ENVIRONMENT); > >+ unsetenv(INDEX_ENVIRONMENT); > >+ } > > You might want to try the alternative approach from the recently > proposed patches to do the same, but more generic. Would > be less code, too. Unfortunately Alex's approach means the caller must know the list of "special Git envvars" that should be cleared when entering into a subproject Git repository to execute a command. That's horrible code duplication in the callers of run_command, and is just asking for trouble later when/if another magic environment variable is added. As long as the above unsetenv list is, I'd really rather have a specific clear_git_env bit in struct child_process, just so that the callers don't have to be bothered with the precise list of names. Of course declaring those names in a static const char** and looping over it before doing Alex's env array thing would probably be less code and let the two play along together rather nicely. -- Shawn.