threads / discuss / 50611

Tags from each remote in a separate "name-space"?

Subject: Tags from each remote in a separate "name-space"?

## tl;dr

3 messages between Feb 28, 2019 and Mar 1, 2019.

replies: 2people: 2as markdown or json

Sergey Organov· Feb 28, 2019, 05:54 UTC · lore
Hello,

How do I configure git to handle tags from remotes in a manner similar to branches?

Specifically, I want tag 'tag_name' from remote 'origin' to have local name 'origin/tag_name', not 'tag_name', as it is by default. For a repo with a lot of remotes[*] it would allow to keep track of what tag came from where, as well as prevent name conflicts between tags from different remotes (and/or local tags).

Fetch-only solution ('fetch', 'pull', and 'remote update' support only) would do, though push support would be interesting to have as well, so that, say

$ git push origin/tag_name
works as
$ git push origin origin/tag_name:refs/tags/tag_name
Am I dreaming, or is it already supported?

[*] I ran into it managing Linux kernel sources for different ARM architectures. Mainstream Linux plus stable Linux plus 2 vendor-specific remotes plus 3 our local remotes made a mess of various tags in the repository.

-- Sergey
Duy Nguyen· Feb 28, 2019, 08:11 UTC · re: Sergey Organov · lore

Re: Tags from each remote in a separate "name-space"?

On Thu, Feb 28, 2019 at 08:54:23AM +0300, Sergey Organov wrote:
Show 10 quoted lines
> Hello,
> 
> How do I configure git to handle tags from remotes in a manner similar
> to branches?
> 
> Specifically, I want tag 'tag_name' from remote 'origin' to have local
> name 'origin/tag_name', not 'tag_name', as it is by default. For a repo
> with a lot of remotes[*] it would allow to keep track of what tag came from
> where, as well as prevent name conflicts between tags from different
> remotes (and/or local tags).

On the fetch side, something like this in the config file (assuming "origin" remote here) probably would do

[remote "origin"]
	fetch = +refs/tags/*:refs/tags/origin/*
	tagOpt = --no-tags
I'm not so sure about the push side.

PS. it would be nice if "git remote" has --no-shared-tags option or something to do this, assuming that it works perfectly well. -- Duy

Sergey Organov· Mar 1, 2019, 14:51 UTC · re: Duy Nguyen · lore

Re: Tags from each remote in a separate "name-space"?

Duy Nguyen <pclouds@gmail.com> writes:
Show 18 quoted lines
> On Thu, Feb 28, 2019 at 08:54:23AM +0300, Sergey Organov wrote:
>> Hello,
>> 
>> How do I configure git to handle tags from remotes in a manner similar
>> to branches?
>> 
>> Specifically, I want tag 'tag_name' from remote 'origin' to have local
>> name 'origin/tag_name', not 'tag_name', as it is by default. For a repo
>> with a lot of remotes[*] it would allow to keep track of what tag came from
>> where, as well as prevent name conflicts between tags from different
>> remotes (and/or local tags).
>
> On the fetch side, something like this in the config file (assuming
> "origin" remote here) probably would do
>
> [remote "origin"]
> 	fetch = +refs/tags/*:refs/tags/origin/*
> 	tagOpt = --no-tags
Thanks for the clue, Duy!
Just adding
	fetch = +refs/tags/*:refs/tags/origin/*
for each existing remote configuration seems to do the trick indeed.
Now I wonder if it would make sense to implement something like
  $ git remote add --separate-tags ...
to be able to auto-configure this.
-- 
Sergey

← back to recent threads