threads / discuss / 62056

git log alias with --all and --exclude

Subject: git log alias with --all and --exclude

## tl;dr

6 messages between Sep 4, 2024 and Sep 5, 2024.

replies: 5people: 4as markdown or json

Rene Kita· Sep 4, 2024, 09:06 UTC · lore

I have an alias 'gr = log --oneline --abbrev-commit --all --graph --decorate --color' and I would like to be able to sometimes exclude a branch, so call it with: $ git gr --exclude=pattern

This does not work, though. Also does not work without the alias and typing the complete command by hand. Apparently the --exclude must be put before the --all to take effect.

May I ask to change that behavior and allow to put the --exclude at the end of the alias?

Rene
Johannes Sixt· Sep 4, 2024, 16:49 UTC · re: Rene Kita · lore

Re: git log alias with --all and --exclude

Am 04.09.24 um 11:06 schrieb Rene Kita:
Show 9 quoted lines
> I have an alias
> 'gr = log --oneline --abbrev-commit --all --graph --decorate --color'
> and I would like to be able to sometimes exclude a branch, so call it
> with:
> $ git gr --exclude=pattern
> 
> This does not work, though. Also does not work without the alias and
> typing the complete command by hand. Apparently the --exclude must be
> put before the --all to take effect.

That is very much by design, so that you can express "branches except the wip and preview branches and remotes except those from the remote archive" with

--exclude=wip/* --exclude=preview* --branches --exclude=archive/* --remotes

These collective branch options --branches, --remotes, and --all clear the exclude patterns after having them applied. Therefore, in this example, the first two --exclude do not affect --remotes.

-- Hannes
Rene Kita· Sep 4, 2024, 18:08 UTC · re: Johannes Sixt · lore

Re: git log alias with --all and --exclude

On Wed, Sep 04, 2024 at 06:49:12PM +0200, Johannes Sixt wrote:
Show 20 quoted lines
> Am 04.09.24 um 11:06 schrieb Rene Kita:
> > I have an alias
> > 'gr = log --oneline --abbrev-commit --all --graph --decorate --color'
> > and I would like to be able to sometimes exclude a branch, so call it
> > with:
> > $ git gr --exclude=pattern
> > 
> > This does not work, though. Also does not work without the alias and
> > typing the complete command by hand. Apparently the --exclude must be
> > put before the --all to take effect.
> 
> That is very much by design, so that you can express "branches except
> the wip and preview branches and remotes except those from the remote
> archive" with
> 
> --exclude=wip/* --exclude=preview* --branches --exclude=archive/* --remotes
> 
> These collective branch options --branches, --remotes, and --all clear
> the exclude patterns after having them applied. Therefore, in this example,
> the first two --exclude do not affect --remotes.

OK, certainly not the answer I hoped for, but something I still expected. Thanks for the explanation.

> -- Hannes
> 
Jacob Keller· Sep 4, 2024, 19:58 UTC · re: Rene Kita · lore

Re: git log alias with --all and --exclude

On Wed, Sep 4, 2024 at 11:15 AM Rene Kita <mail@rkta.de> wrote:
Show 26 quoted lines
>
> On Wed, Sep 04, 2024 at 06:49:12PM +0200, Johannes Sixt wrote:
> > Am 04.09.24 um 11:06 schrieb Rene Kita:
> > > I have an alias
> > > 'gr = log --oneline --abbrev-commit --all --graph --decorate --color'
> > > and I would like to be able to sometimes exclude a branch, so call it
> > > with:
> > > $ git gr --exclude=pattern
> > >
> > > This does not work, though. Also does not work without the alias and
> > > typing the complete command by hand. Apparently the --exclude must be
> > > put before the --all to take effect.
> >
> > That is very much by design, so that you can express "branches except
> > the wip and preview branches and remotes except those from the remote
> > archive" with
> >
> > --exclude=wip/* --exclude=preview* --branches --exclude=archive/* --remotes
> >
> > These collective branch options --branches, --remotes, and --all clear
> > the exclude patterns after having them applied. Therefore, in this example,
> > the first two --exclude do not affect --remotes.
>
> OK, certainly not the answer I hoped for, but something I still
> expected. Thanks for the explanation.
>

You could implement this as a shell alias so that your options get included before the --all. I'm not sure how trivial that would be to do, but thats how I would go about implementing this alias.

Junio C Hamano· Sep 4, 2024, 20:45 UTC · re: Jacob Keller · lore

Re: git log alias with --all and --exclude

Jacob Keller <jacob.keller@gmail.com> writes:
Show 5 quoted lines
>> > > 'gr = log --oneline --abbrev-commit --all --graph --decorate --color'
>
> You could implement this as a shell alias so that your options get
> included before the --all. I'm not sure how trivial that would be to
> do, but thats how I would go about implementing this alias.
True.  If I were doing this, I would at least do something like
    [alias]
	rg = "!sh -c 'git log --oneline --abbrev-commit --graph \
		--decorate --color ${1-\"--all\"} \"$@\"' -"
so that
 (1) "git rg" without any argument will default to "--all"
 (2) "git rg --exclude 'wip*' --branches" would work as expected,
     just like "git rg --first-parent master..seen" would.
Thanks.
Rene Kita· Sep 5, 2024, 05:23 UTC · re: Junio C Hamano · lore

Re: git log alias with --all and --exclude

On Wed, Sep 04, 2024 at 01:45:50PM -0700, Junio C Hamano wrote:
Show 21 quoted lines
> Jacob Keller <jacob.keller@gmail.com> writes:
> 
> >> > > 'gr = log --oneline --abbrev-commit --all --graph --decorate --color'
> >
> > You could implement this as a shell alias so that your options get
> > included before the --all. I'm not sure how trivial that would be to
> > do, but thats how I would go about implementing this alias.
> 
> True.  If I were doing this, I would at least do something like
> 
>     [alias]
> 	rg = "!sh -c 'git log --oneline --abbrev-commit --graph \
> 		--decorate --color ${1-\"--all\"} \"$@\"' -"
> 
> so that
> 
>  (1) "git rg" without any argument will default to "--all"
>  (2) "git rg --exclude 'wip*' --branches" would work as expected,
>      just like "git rg --first-parent master..seen" would.
> 
> Thanks.
Thanks for the ideas, I will adjust my alias.

← back to recent threads