Re: [RFC PATCH] config: learn the "onbranch:" includeIf condition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Denton,

On Fri, 31 May 2019, Denton Liu wrote:

> On Fri, May 31, 2019 at 02:58:30PM +0200, Johannes Schindelin wrote:
>
> > On Thu, 30 May 2019, Denton Liu wrote:
> >
> > > Currently, if a user wishes to have individual settings per branch,
> > > they are required to manually keep track of the settings in their
> > > head and manually set the options on the command-line or change the
> > > config at each branch.
> > >
> > > Teach config the "onbranch:" includeIf condition so that it can
> > > conditionally include configuration files if the branch is checked
> > > out in the current worktree.
> >
> > What a coincidence. I actually wished for something like this, to have
> > branch-specific aliases.
> >
> > However, I would need this to handle patterns (via `wildmatch()`?)
> > rather than branch names.
>
> Do you mean that we should be able to match a branch by pattern? So, for
> example, if we had
>
> 	[includeIf "onbranch:mas*"]
>
> we'd match if we were on "master"?

Yes, precisely.

I would use this for the "ever-green" branches of Git for Windows, i.e.
the branches that are continuously rebasing Git for Windows' branch
thicket on top of maint, master, next & pu. Those are called
`shears/maint`, `shears/master`, etc (for historical reasons) in
https://github.com/git-for-windows/git.

> > > I decided to go ahead and implement the includeIf onbranch semantics
> > > for fun. For completeness, I'm sending it to the list but I'm not
> > > really sure if this should get merged, since I don't really have a
> > > use-case for this, especially if we go the branch-specific
> > > format-patch config route.
> > >
> > > Another thing to note is that this change doesn't completely cover
> > > all the use-cases that the branch-specific format-patch does. In
> > > particular, if I run
> > >
> > > 	$ git checkout foo
> > > 	$ git format-patch master..bar
> > >
> > > with the `format.bar.*`, we'd get bar-specific configs, whereas with
> > > `includeIf "onbranch:bar"`, we'd fail to include bar-specific configs
> > > and, more dangerously, we'd be including foo's configs.
> >
> > I actually think that this is fine. "on branch" means that you are on the
> > specified branch, not that you merely mention the branch name on the
> > command-line (in which case there would be the ambiguity "did the user
> > mean `master` or `bar`?").
>
> The reason why I brought this up as a use case was because currently,
> when format-patch generates a cover letter, with the above, it'll use
> bar's branch description to populate it even if "foo" is checked out. As
> a result, when implementing the branch-specific format-patch stuff, I
> wanted to make this consistent so that we wouldn't end up in a situation
> where the cover letter has the branch's description but is missing its
> Cc's.

That strikes me as a different use case than `includeIf`. I could imagine
that you'd want a setting like `formatpatch.detecttargetbranch = auto` or
some such that would pick up the `format.bar*` settings if there was *one*
rev argument, and it was a commit range (or a tip commit), *and* it
obviously referred to a single target branch.

It's just a scenario that is *very* specific to `git format-patch`.

For example, I would not, ever, want `git log ..next` to pick up a
config specific to `next` just because I mentioned a commit range with
`range` as the tip to start from.

Ciao,
Dscho




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux