Cloning a remote tag without using git-fetch-pack directly?
From: Josh Triplett <josh@joshtriplett.org>
Date: 2016-06-15 22:51:04
Subsystem:
kernel build + files below scripts/ (unless maintained elsewhere), the rest · Maintainers:
Nathan Chancellor, Nicolas Schier, Linus Torvalds
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
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
iD8DBQBCsykyF3YsRnbiHLsRAvPNAJ482tCZwuxp/bJRz7Q98MHlN83TpACdHr37
o6X/3T+vm8K3bf3driRr34c=
=sBHn
-----END PGP SIGNATURE-----
commit 9ee1c939d1cb936b1f98e8d81aeffab57bae46ab
Author: Linus Torvalds [off-list ref]
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