# support comma-separated fetch specs list?

4 messages from 2020-11-04 to 2020-11-09. Participants: ryenus, Junio C Hamano.
Thread: https://gitlist.dev/t/54568

## ryenus, 2020-11-04 03:11

Subject: support comma-separated fetch specs list?
Message-ID: <CAKkAvaxrG0aYw-wo_WW7zSkX=mjU8ABgXGbbPCFOhMBa4WTJ+Q@mail.gmail.com>
URL: https://gitlist.dev/e/CAKkAvaxrG0aYw-wo_WW7zSkX%3DmjU8ABgXGbbPCFOhMBa4WTJ%2BQ%40mail.gmail.com

```
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, 2020-11-04 05:41

Subject: Re: support comma-separated fetch specs list?
Message-ID: <xmqq1rh9ptka.fsf@gitster.c.googlers.com>
URL: https://gitlist.dev/e/xmqq1rh9ptka.fsf%40gitster.c.googlers.com
In-Reply-To: <CAKkAvaxrG0aYw-wo_WW7zSkX=mjU8ABgXGbbPCFOhMBa4WTJ+Q@mail.gmail.com>

```
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?

```

## ryenus, 2020-11-07 10:11

Subject: Re: support comma-separated fetch specs list?
Message-ID: <CAKkAvawVbyTPxDFQMEJMh+dzgQ_C0PXtbQKMo8xMNjgL_buGng@mail.gmail.com>
URL: https://gitlist.dev/e/CAKkAvawVbyTPxDFQMEJMh%2BdzgQ_C0PXtbQKMo8xMNjgL_buGng%40mail.gmail.com
In-Reply-To: <xmqq1rh9ptka.fsf@gitster.c.googlers.com>

```
On Wed, 4 Nov 2020 at 13:41, Junio C Hamano <gitster@pobox.com> wrote:
>
> 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, 2020-11-09 22:45

Subject: Re: support comma-separated fetch specs list?
Message-ID: <xmqqsg9i9mk4.fsf@gitster.c.googlers.com>
URL: https://gitlist.dev/e/xmqqsg9i9mk4.fsf%40gitster.c.googlers.com
In-Reply-To: <CAKkAvawVbyTPxDFQMEJMh+dzgQ_C0PXtbQKMo8xMNjgL_buGng@mail.gmail.com>

```
ryenus <ryenus@gmail.com> writes:

> 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.




```
