threads / discuss / 54568

support comma-separated fetch specs list?

Subject: support comma-separated fetch specs list?

## tl;dr

4 messages between Nov 4, 2020 and Nov 9, 2020.

replies: 3people: 2as markdown or json

ryenus· Nov 4, 2020, 03:11 UTC · lore

It's nice to have negative ref spec support with 2.29 release, so now we can have

```
[remote "origin"]
  fetch = +refs/heads/*:refs/remotes/origin/*
  fetch = ^refs/heads/gh-pages
```

What about having all the fetch specs put together in one comma-separated list? Like this:

```
[remote "origin"]
  fetch = +refs/heads/*:refs/remotes/origin/*,^refs/heads/gh-pages
```
Thanks
Junio C Hamano· Nov 4, 2020, 05:41 UTC · re: ryenus · lore

Re: support comma-separated fetch specs list?

ryenus <ryenus@gmail.com> writes:
Show 16 quoted lines
> It's nice to have negative ref spec support with 2.29 release, so now
> we can have
>
> ```
> [remote "origin"]
>   fetch = +refs/heads/*:refs/remotes/origin/*
>   fetch = ^refs/heads/gh-pages
> ```
>
> What about having all the fetch specs put together in one comma-separated list?
> Like this:
>
> ```
> [remote "origin"]
>   fetch = +refs/heads/*:refs/remotes/origin/*,^refs/heads/gh-pages
> ```

I thought comma was a valid character that you can have in refnames, so no, I do not think it would fly without breaking existing users.

What problem are you trying to solve?
ryenus· Nov 7, 2020, 10:11 UTC · re: Junio C Hamano · lore

Re: support comma-separated fetch specs list?

On Wed, 4 Nov 2020 at 13:41, Junio C Hamano <gitster@pobox.com> wrote:
Show 24 quoted lines
>
> ryenus <ryenus@gmail.com> writes:
>
> > It's nice to have negative ref spec support with 2.29 release, so now
> > we can have
> >
> > ```
> > [remote "origin"]
> >   fetch = +refs/heads/*:refs/remotes/origin/*
> >   fetch = ^refs/heads/gh-pages
> > ```
> >
> > What about having all the fetch specs put together in one comma-separated list?
> > Like this:
> >
> > ```
> > [remote "origin"]
> >   fetch = +refs/heads/*:refs/remotes/origin/*,^refs/heads/gh-pages
> > ```
>
> I thought comma was a valid character that you can have in refnames,
> so no, I do not think it would fly without breaking existing users.
>
> What problem are you trying to solve?

I guess the problem is mainly about intuition? Since comma-separated lists are everywhere.

Personally I never thought about using comma in refnames, or even knew it's allowed.

Well, now I know because, after skimming through the 2.29 release notes, I tried out the negative refspec feature in a repo where I'd like to exclude the gh-pages branch. But somehow I appended a comma and the negative refspec to the existing fetch line, and expected it to work, then, oops, I got dozens of those refnames with commas, and had to go inside the .git dir and managed the clean up all the mess. And that's for sure and nice and hard lesson :-)

Maybe the cause is also my ignorance or lack of carefulness to read the docs, but searching for "comma separated list" in Git manual would return hundreds of results: https://www.google.com/search?q=%22comma+separated%22+list+site%3Agit-scm.com

So I guess it's fair to expect it to work in the fetch spec as well?
Junio C Hamano· Nov 9, 2020, 22:45 UTC · re: ryenus · lore

Re: support comma-separated fetch specs list?

ryenus <ryenus@gmail.com> writes:
Show 6 quoted lines
> Maybe the cause is also my ignorance or lack of carefulness to read the
> docs, but searching for "comma separated list" in Git manual would
> return hundreds of results:
> https://www.google.com/search?q=%22comma+separated%22+list+site%3Agit-scm.com
>
> So I guess it's fair to expect it to work in the fetch spec as well?
I doubt it.

The contents of these "comma separated list" are taken from a fixed vocabulary and not from unbounded set of things the end-user can freely come up with that allows a comma as part of values.

In other words, "--option=ours,theirs" may make sense only because we control the vocabulary 'common', 'ours', and 'theirs', and we make sure the vocabulary does not contain any word with comma in it.

When somebody adds a new option, we try hard during the review not to allow "--option=thing1,thing2,thing3" as the syntax we give at the UI level where thing$n are end-user controlled values, because that would rob end-users from the option of having a comma in their thing$n (for whatever reason). Certain kind of things naturally do not make sense to contain comma in them (e.g. list of numbers, for example) and we may allow end-user controlled input as part of a comma separated tuple, and when the tuple has a fixed length whose size will never change, we may allow end-user controlled thing as the last element of such a comma-separated tuple, but extending that to refspec, pathspec, etc. is a bit of stretch, I would have to say.

← back to recent threads