Subject: Cloning a remote tag without using git-fetch-pack directly?

From: Josh Triplett <[email-masked]>
Date: Tue, 19 Apr 2011 15:20:53 -0700

Using fetch-pack, I can clone a single tag from a repository:

/tmp/testrepo$ git init
Initialized empty Git repository in /tmp/testrepo/.git/
/tmp/testrepo$ git fetch-pack /home/josh/src/linux-2.6/.git refs/tags/v2.6.12
remote: Counting objects: 31617, done.
remote: Compressing objects: 100% (21083/21083), done.
Receiving objects: 100% (31617/31617), 52.56 MiB | 5.27 MiB/s, done.
remote: Total 31617 (delta 12862), reused 19495 (delta 10331)
Resolving deltas: 100% (12862/12862), done.
keep    c80bd1def293bc11591159c96970d8becfe3b2d9
26791a8bcf0e6d33f43aef7682bdb555236d56de refs/tags/v2.6.12
/tmp/testrepo$ git show 26791a8bcf0e6d33f43aef7682bdb555236d56de | head -20
tag v2.6.12

This is the final 2.6.12 release

commit 9ee1c939d1cb936b1f98e8d81aeffab57bae46ab
Author: Linus Torvalds <[email-masked]>
Date:   Fri Jun 17 12:48:29 2005 -0700

    Linux 2.6.12

diff --git a/Makefile b/Makefile
index 9e005e1..0d1e74d 100644
--- a/Makefile

However, I can't seem to find any way to convince git clone to do the
same thing for me.  git clone will clone a branch, but not a tag.

/tmp/testrepo$ git clone /home/josh/src/linux-2.6/.git -b refs/tags/v2.6.12
Cloning into linux-2.6...
done.
warning: Remote branch refs/tags/v2.6.12 not found in upstream origin, using HEAD instead

On a different note, git fetch-pack seems to silently fail if asked to
fetch a remote tag which points at a tree object rather than a commit
object:

/tmp/testrepo$ git init
Initialized empty Git repository in /tmp/testrepo/.git/
/tmp/testrepo$ git fetch-pack /home/josh/src/linux-2.6/.git refs/tags/v2.6.12-tree
(1) /tmp/testrepo$ echo $?
1

I realize that I want to do something strange here, but it seems like a
kind of strange that git already supports in at least some ways, just
not in others.  Am I missing something?

Thanks,
Josh Triplett