From: Ævar Arnfjörð Bjarmason Date: Wed, 01 Feb 2012 21:25:31 GMT Subject: Re: General support for ! in git-config values Message-ID: In-Reply-To: <20120201184020.GA29374@sigill.intra.peff.net> On Wed, Feb 1, 2012 at 19:40, Jeff King wrote: > On Wed, Feb 01, 2012 at 06:33:47PM +0100, Ævar Arnfjörð Bjarmason wrote: > >> For a program I'm working on (git-deploy) I'd like to have this as a >> general facility, i.e. users can specify either: >> >>     foo.bar = value >> >> Or: >> >>     foo.bar = !cat /some/path >> >> I'm wondering why git-config doesn't do this already, if there's no >> reason in particular I can just patch it in, either as a new option: >> >>     git config --with-exec --get foo.bar > > I'm not clear on what you want --with-exec to do. By default, config > values are strings. I would expect the "!" to be a special marker that > the caller would recognize in the string, and then act appropriately. > > So if I were implementing git aliases in the shell, the code would look > like: > >  v=$(git config alias.$alias) >  case "$v" in >  "") >          die "no such alias: $alias" ;; >  "!*) >          cmd="${v#!}" ;; >  *) >          cmd="git $v" ;; >  esac >  eval "$cmd" > > I.e., everything pertaining to "!" happens after we get the config > string. So what is it that you want "git config --with-exec" to do? I agree that that's how it should work, I just suggested --with-exec in case anyone complained about the backwards compatibility issue of changing the meaning of "!" for existing configs.