# git-send-email and aliases

11 messages from 2007-03-26 to 2007-03-28. Participants: Francis Moreau, Junio C Hamano, Nicolas Vilz, Jeff King.
Thread: https://gitlist.dev/t/7408

## Francis Moreau, 2007-03-26 09:39

Subject: git-send-email and aliases
Message-ID: <38b2ab8a0703260239j3f3f0be2teee70fc502f6f7c1@mail.gmail.com>
URL: https://gitlist.dev/e/38b2ab8a0703260239j3f3f0be2teee70fc502f6f7c1%40mail.gmail.com

```
Hi,

I'm trying to make an alias for 'git send-email' as following but it's
not working:

[alias]
	send-email = send-email --no-signed-off-cc --suppress-from

Is it failing because git-send-email is an external command ?

Thanks
-- 
Francis

```

## Junio C Hamano, 2007-03-26 09:47

Subject: Re: git-send-email and aliases
Message-ID: <7vwt14wd38.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vwt14wd38.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <38b2ab8a0703260239j3f3f0be2teee70fc502f6f7c1@mail.gmail.com>

```
"Francis Moreau" <francis.moro@gmail.com> writes:

> Hi,
>
> I'm trying to make an alias for 'git send-email' as following but it's
> not working:
>
> [alias]
> 	send-email = send-email --no-signed-off-cc --suppress-from
>
> Is it failing because git-send-email is an external command ?

$ sed -ne '/^alias\.\*/,/^$/p' Documentation/config.txt

```

## Francis Moreau, 2007-03-26 09:57

Subject: Re: git-send-email and aliases
Message-ID: <38b2ab8a0703260257i29d374f9kb63dc18aad0572b8@mail.gmail.com>
URL: https://gitlist.dev/e/38b2ab8a0703260257i29d374f9kb63dc18aad0572b8%40mail.gmail.com
In-Reply-To: <7vwt14wd38.fsf@assigned-by-dhcp.cox.net>

```
On 3/26/07, Junio C Hamano <junkio@cox.net> wrote:
>
> $ sed -ne '/^alias\.\*/,/^$/p' Documentation/config.txt
>

oops sorry. I was so thinking about bash aliases that I didn't take a
look to the documentation.

sorry again.
-- 
Francis

```

## Nicolas Vilz, 2007-03-26 10:08

Subject: Re: git-send-email and aliases
Message-ID: <20070326100849.GA5822@fry.bender.fht>
URL: https://gitlist.dev/e/20070326100849.GA5822%40fry.bender.fht
In-Reply-To: <38b2ab8a0703260239j3f3f0be2teee70fc502f6f7c1@mail.gmail.com>

```
On Mon, Mar 26, 2007 at 11:39:52AM +0200, Francis Moreau wrote:
> Hi,
> 
> I'm trying to make an alias for 'git send-email' as following but it's
> not working:
> 
> [alias]
> 	send-email = send-email --no-signed-off-cc --suppress-from
> 
> Is it failing because git-send-email is an external command ?

i remember that if this command exists in git (built-in or script), then
the built-in is used, for not breaking any scripts. I think, if you set
sm or s-m or something like that, it would work.

Sincerly
Nicolas

```

## Francis Moreau, 2007-03-27 09:38

Subject: Re: git-send-email and aliases
Message-ID: <38b2ab8a0703270238n655bdee1kac227a6675261210@mail.gmail.com>
URL: https://gitlist.dev/e/38b2ab8a0703270238n655bdee1kac227a6675261210%40mail.gmail.com
In-Reply-To: <7vwt14wd38.fsf@assigned-by-dhcp.cox.net>

```
On 3/26/07, Junio C Hamano <junkio@cox.net> wrote:
> > [alias]
> >       send-email = send-email --no-signed-off-cc --suppress-from
> >
> > Is it failing because git-send-email is an external command ?
>
> $ sed -ne '/^alias\.\*/,/^$/p' Documentation/config.txt
>

That said I think it's not really convenient. I'll end up doing:

[aliases]
    my-send-email = send-email --no-signed-off-cc --suppress-from
    my-am = am -3 -s

etc...

Isn't possible to mimic bash alias handling:. From man: "Aliases are
not expanded when the shell is not interactive,... "

IOW is it possible for git to know if it has been invoked interactively ?

thanks
-- 
Francis

```

## Junio C Hamano, 2007-03-27 10:29

Subject: Re: git-send-email and aliases
Message-ID: <7vircnou7i.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vircnou7i.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <38b2ab8a0703270238n655bdee1kac227a6675261210@mail.gmail.com>

```
"Francis Moreau" <francis.moro@gmail.com> writes:

> On 3/26/07, Junio C Hamano <junkio@cox.net> wrote:
>> > [alias]
>> >       send-email = send-email --no-signed-off-cc --suppress-from
>> >
>> > Is it failing because git-send-email is an external command ?
>>
>> $ sed -ne '/^alias\.\*/,/^$/p' Documentation/config.txt
>
> That said I think it's not really convenient. I'll end up doing:
>
> [aliases]
>    my-send-email = send-email --no-signed-off-cc --suppress-from
>    my-am = am -3 -s
>
> etc...
>
> Isn't possible to mimic bash alias handling:. From man: "Aliases are
> not expanded when the shell is not interactive,... "
>
> IOW is it possible for git to know if it has been invoked interactively ?

I do not think so, but I think alias expanding "git foo" while
not expanding "git-foo" should not be too hard.  You need two
extra preparation steps for such a change to be useful, though.

 (1) Build with $(gitexecdir) set to outside the usual $PATH
     (/usr/libexec/git was suggested in the past) to make sure
     we still support that configuration.  Under this model,
     only a handful programs ("git" wrapper itself and "gitk")
     should be installed on user's PATH and everything else goes
     under $(gitexecdir).  The user's interactive session MUST
     run "git foo" and not "git-foo" as bulk of the stuff is now
     outside of $PATH.  Fix any breakage if found (I do not
     expect many, but there might be some problems around object
     transfers, such as git-daemon spawning git-upload-pack, or
     git-push running git-receive-pack on the other end of the
     connection).

 (2) Audit all our scripts so that they run git commands with
     "git-foo" form, not "git foo" form.  As "git" wrapper is
     supposed to add $(gitexecdir) early in the $PATH while it
     runs itself and its subprocesses, they should find the true
     "git-foo" binary even after $(gitexecdir) is set outside of
     the usual $PATH.  Make sure things still work.

After the above two steps is done, we can be confident that the
scripts will not be broken even if we allow a user to say
something silly like "alias.cat-file = log --stat", as the
scripts will never say "git cat-file" to cause the command to be
expanded to "git log --stat" (instead they say "git-cat-file",
thanks to your audit in step (2)), thusly avoid the confusion.

```

## Jeff King, 2007-03-27 10:46

Subject: Re: git-send-email and aliases
Message-ID: <20070327104623.GA26796@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20070327104623.GA26796%40sigill.intra.peff.net
In-Reply-To: <7vircnou7i.fsf@assigned-by-dhcp.cox.net>

```
On Tue, Mar 27, 2007 at 03:29:37AM -0700, Junio C Hamano wrote:

> > Isn't possible to mimic bash alias handling:. From man: "Aliases are
> > not expanded when the shell is not interactive,... "
> I do not think so, but I think alias expanding "git foo" while
> not expanding "git-foo" should not be too hard.  You need two
> extra preparation steps for such a change to be useful, though.

Might it not be easier to simply add a GIT_NOALIAS variable, and set it
at the top of all git programs?

-Peff

```

## Junio C Hamano, 2007-03-27 10:59

Subject: Re: git-send-email and aliases
Message-ID: <7vlkhjne9k.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vlkhjne9k.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20070327104623.GA26796@sigill.intra.peff.net>

```
Jeff King <peff@peff.net> writes:

> Might it not be easier to simply add a GIT_NOALIAS variable, and set it
> at the top of all git programs?

It might be easier but I do not think that is useful.  When
git-commit runs the $EDITOR for the commit log message, I think
people would expect (if you are using vi) "!!git log" to honor
their alias.

```

## Jeff King, 2007-03-27 11:02

Subject: Re: git-send-email and aliases
Message-ID: <20070327110246.GA30217@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20070327110246.GA30217%40sigill.intra.peff.net
In-Reply-To: <7vlkhjne9k.fsf@assigned-by-dhcp.cox.net>

```
On Tue, Mar 27, 2007 at 03:59:19AM -0700, Junio C Hamano wrote:

> It might be easier but I do not think that is useful.  When
> git-commit runs the $EDITOR for the commit log message, I think
> people would expect (if you are using vi) "!!git log" to honor
> their alias.

Then git-commit can unset GIT_NOALIAS when it expects to call into
"user" code such as the editor.

A potentially bigger problem with any such scheme is that non-git
scripts would have to set GIT_NOALIAS. Not a big deal for new scripts,
but it might break old scripts.

-Peff

```

## Francis Moreau, 2007-03-27 16:08

Subject: Re: git-send-email and aliases
Message-ID: <38b2ab8a0703270908y331a372du7cd340f1d884456d@mail.gmail.com>
URL: https://gitlist.dev/e/38b2ab8a0703270908y331a372du7cd340f1d884456d%40mail.gmail.com
In-Reply-To: <7vircnou7i.fsf@assigned-by-dhcp.cox.net>

```
On 3/27/07, Junio C Hamano <junkio@cox.net> wrote:
> "Francis Moreau" <francis.moro@gmail.com> writes:
> > IOW is it possible for git to know if it has been invoked interactively ?
>
> I do not think so, but I think alias expanding "git foo" while
> not expanding "git-foo" should not be too hard.  You need two
> extra preparation steps for such a change to be useful, though.
>

Isn't that too dangerous to rely on the fact that scripts will always
use "git-foo" syntax ?
-- 
Francis

```

## Junio C Hamano, 2007-03-28 01:52

Subject: Re: git-send-email and aliases
Message-ID: <7vk5x2m8wu.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vk5x2m8wu.fsf%40assigned-by-dhcp.cox.net
In-Reply-To: <20070327110246.GA30217@sigill.intra.peff.net>

```
Jeff King <peff@peff.net> writes:

> On Tue, Mar 27, 2007 at 03:59:19AM -0700, Junio C Hamano wrote:
>
>> It might be easier but I do not think that is useful.  When
>> git-commit runs the $EDITOR for the commit log message, I think
>> people would expect (if you are using vi) "!!git log" to honor
>> their alias.
>
> Then git-commit can unset GIT_NOALIAS when it expects to call into
> "user" code such as the editor.

Surely, but then it is not just a matter of "setting GIT_NOALIAS
at the top of all git programs" anymore.  You need to audit the
code.

> A potentially bigger problem with any such scheme is that non-git
> scripts would have to set GIT_NOALIAS. Not a big deal for new scripts,
> but it might break old scripts.

You are right.  Both GIT_NOALIAS and "write git-foo if you do
not want to be affected with alias" would fail that.

```
