Git pull doesn't get the tags
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.
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
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
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
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!
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.
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
@@ -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