Skip to contentSkip to conversation

Git pull doesn't get the tags

PATCH New Rico Secada 4 participants 7 messages Jun 15, 2016 Documentation

lore
Share & tools
lore
#0 lore raw

Hi.

I am working on a repo on my desktop and I got a clone on my laptop. I needed to pull the new stuff from my desktop unto my laptop, and I noticed that tags doesn't get pulled.

The laptop access the desktop using NFS and I am using "git pull NFS_SOURCE".

The repos are identical except that a few files has been updated and a new tag has been added.

Why doesn't pull get the tag?

Best regards.

#1 lore raw
Quoted 9 lines · Rico Secada

Hi.

I am working on a repo on my desktop and I got a clone on my laptop. I needed to pull the new stuff from my desktop unto my laptop, and I noticed that tags doesn't get pulled.

The laptop access the desktop using NFS and I am using "git pull NFS_SOURCE".

Quoted 6 lines

The repos are identical except that a few files has been updated and a new tag has been added.

Why doesn't pull get the tag?

Best regards.

Try git pull --tags.

Quoted 1 line

From git-pull's manpage:

-t
--tags
Most of the tags are fetched automatically as branch heads are downloaded, but tags that do not point at objects reachable from the branch heads that are being tracked will not be fetched by this mechanism. This flag lets all tags and their associated objects be downloaded. [...]

-Mathias

#2 lore raw

On Fri, 22 Oct 2010 11:04:32 +0200
Mathias Lafeldt <[email protected]> wrote:

I managed to overlook the info from the man page, sorry.

But what does "but tags that do not point at objects reachable from the branch heads that are being tracked will not be fetched by this mechanism" mean?

When is an object not reachable from the branch head? In the repo only the master branch exist, and one repo is cloned from the other.

Quoted 35 lines · Rico Secada
Quoted 9 lines

Hi.

I am working on a repo on my desktop and I got a clone on my laptop. I needed to pull the new stuff from my desktop unto my laptop, and I noticed that tags doesn't get pulled.

The laptop access the desktop using NFS and I am using "git pull NFS_SOURCE".

Quoted 6 lines

The repos are identical except that a few files has been updated and a new tag has been added.

Why doesn't pull get the tag?

Best regards.

Try git pull --tags.

From git-pull's manpage:

(quoted diff) +0 -4
-t
--tags
        Most of the tags are fetched automatically as branch
        heads are downloaded, but tags that do not point at
        objects reachable from the branch heads that are being
        tracked will not be fetched by this mechanism.  This
        flag lets all tags and their associated objects be
        downloaded. [...]
 
-Mathias
--

To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw
Quoted 5 lines · Rico Secada
Quoted 2 lines · On Fri, 22 Oct 2010 11:04:32 +0200 Mathias Lafeldt <[email protected]> wrote:

From git-pull's manpage:

Quoted 8 lines
Quoted 8 lines

-t
--tags
Most of the tags are fetched automatically as branch heads are downloaded, but tags that do not point at objects reachable from the branch heads that are being tracked will not be fetched by this mechanism. This flag lets all tags and their associated objects be downloaded. [...]

[jc: please do not top post, because people tend to read from top to bottom not the other way around]

Quoted 5 lines

I managed to overlook the info from the man page, sorry.

But what does "but tags that do not point at objects reachable from the branch heads that are being tracked will not be fetched by this mechanism" mean?

The above passage in the manual page may be stated rather poorly.

When "git fetch" is run, unless told otherwise by an explicit --no-tags, it automatically fetches tags that point at new commits on branches you fetch. For example, I just tagged v1.7.3.2 last night, so if you fetch from me to get 'maint', 'master' or other integration branches of mine that includes 8a90438 (Git 1.7.3.2, 2010-10-21), "git fetch" would also copy v1.7.3.2 tag from me to your repository.

In the above example, 'maint', 'master', etc. are the branch heads that are being tracked (i.e. you will copy them to the refs/remotes/origin hierarchy in your repository) and v1.7.3.2 is a tag that does point at an object 8a90438 reachable from these branch heads. So you will get the tag without giving the --tags option from the command line.

If you were fetching only 'html' or 'man' branches from me, on the other hand, you would not have gotten v1.7.3.2 tag, as they are separate histories and that particular tag does not live in their ancestry.

Also tags that point at non-commits (e.g. in git.git, junio-gpg-pub and spearce-gpg-pub are pointing at blob objects, and v2.6.11 and v2.6.11-tree tags in the kernel repository are pointing at tree objects) will not be fetched automatically either. You would need to explicitly ask for them if you want them by either (1) find them via ls-remote and name them on the command line, or (2) use --tags option

#4 lore raw
Quoted 21 lines · On Fri, 22 Oct 2010 15:25:52 -0700 Junio C Hamano <[email protected]> wrote:

The above passage in the manual page may be stated rather poorly.

When "git fetch" is run, unless told otherwise by an explicit --no-tags, it automatically fetches tags that point at new commits on branches you fetch. For example, I just tagged v1.7.3.2 last night, so if you fetch from me to get 'maint', 'master' or other integration branches of mine that includes 8a90438 (Git 1.7.3.2, 2010-10-21), "git fetch" would also copy v1.7.3.2 tag from me to your repository.

In the above example, 'maint', 'master', etc. are the branch heads that are being tracked (i.e. you will copy them to the refs/remotes/origin hierarchy in your repository) and v1.7.3.2 is a tag that does point at an object 8a90438 reachable from these branch heads. So you will get the tag without giving the --tags option from the command line.

If you were fetching only 'html' or 'man' branches from me, on the other hand, you would not have gotten v1.7.3.2 tag, as they are separate histories and that particular tag does not live in their ancestry.

Quoted 6 lines

Also tags that point at non-commits (e.g. in git.git, junio-gpg-pub and spearce-gpg-pub are pointing at blob objects, and v2.6.11 and v2.6.11-tree tags in the kernel repository are pointing at tree objects) will not be fetched automatically either. You would need to explicitly ask for them if you want them by either (1) find them via ls-remote and name them on the command line, or (2) use --tags option

A nice and meaningful explanation. Thanks for the details!

#5 lore raw
In reply to Mathias Lafeldt
Quoted 4 lines · Mathias Lafeldt

Try git pull --tags.

From git-pull's manpage:

Quoted 8 lines

-t
--tags
Most of the tags are fetched automatically as branch heads are downloaded, but tags that do not point at objects reachable from the branch heads that are being tracked will not be fetched by this mechanism. This flag lets all tags and their associated objects be downloaded. [...]

Can somebody submit a patch to stop this part of "fetch-options.txt" from getting included in "git pull" manpage please, by the way?

This is one of the options that are passed to the underlying "git fetch" without sanitizing by "git pull". "Fetch all tags and merge them" does not make any sense as a request at the logical level, even though it might be more convenient to type.

I do not recall offhand if we made sure the stuff fetched with --tags request are marked as not-for-merge, and if we didn't that is certainly a bug.

#6 lore raw

PATCH 1/1 pull: Remove --tags option from manpage

"Fetch all tags and merge them" does not make any sense as a request at the logical level, even though it might be more convenient to type.

---

Am 22.10.2010 23:33, schrieb Junio C Hamano:

Quoted 12 lines
Quoted 10 lines · Mathias Lafeldt

From git-pull's manpage:

-t
--tags
Most of the tags are fetched automatically as branch heads are downloaded, but tags that do not point at objects reachable from the branch heads that are being tracked will not be fetched by this mechanism. This flag lets all tags and their associated objects be downloaded. [...]

Quoted 2 lines

Can somebody submit a patch to stop this part of "fetch-options.txt" from getting included in "git pull" manpage please, by the way?

Maybe something like this?

 Documentation/fetch-options.txt |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Documentation/fetch-options.txt +2 -0
index 470ac31..5ce1e72 100644
@@ -53,6 +53,7 @@ endif::git-pull[]
 	behavior for a remote may be specified with the remote.<name>.tagopt
 	setting. See linkgit:git-config[1].
 
+ifndef::git-pull[]
 -t::
 --tags::
 	Most of the tags are fetched automatically as branch
@@ -63,6 +64,7 @@ endif::git-pull[]
 	downloaded. The default behavior for a remote may be
 	specified with the remote.<name>.tagopt setting. See
 	linkgit:git-config[1].
+endif::git-pull[]
 
 -u::
 --update-head-ok::
Signature · 1 line
1.7.3.2.213.g5fe186