Re: Updated git HOWTO for kernel hackers
From: Linus Torvalds <torvalds@osdl.org>
Date: 2005-06-23 02:37:41
Also in:
lkml
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Wed, 22 Jun 2005, Jeff Garzik wrote:
The problem is still that nothing says "oh, btw, I created 'xyz' tag for you" AFAICS? IMO the user (GregKH and me, at least) just wants to know their set of tags and heads is up-to-date on local disk. Wants to know what tags are out there. It's quite annoying when two data sets are out of sync (.git/objects and .git/refs/tags).
Well, I really think this is the exact same issue as when you write any annoucement, and say "please pull from branch xyz of repo abc". What I'm saying is that for a tagged release, that really translates to "please pull tag xyz from repo abc" and the tools like git-ssh-pull will just do the right thing: they'll pull the tag itself _and_ they'll pull the objects it points to. Of course, right now "git fetch" is hardcoded to always write FETCH_HEAD (not the tag name), but I'm saying ythat _literally_ you can do this already: git fetch repo-name tags/xyz && ( cat .git/FETCH_HEAD > .git/tags/xyz ) and it should do exactly what you want. Hmm? So if we script this (maybe teach "git-fetch-script" to take "tag" as its first argument and do this on its own), and people learn to just do git fetch tag v2.6.18.5 when Chris or Greg make an announcement about "v2.6.18.5", then you're all done, no? The change to "git-fetch-script" would look something like the appended.. Totally untested, of course. Give it a try, Linus ---
diff --git a/git-fetch-script b/git-fetch-script
--- a/git-fetch-script
+++ b/git-fetch-script@@ -1,5 +1,12 @@ #!/bin/sh # +destination=FETCH_HEAD + +if [ "$1" = "tag" ]; then + shift + destination="refs/tags/$2" +fi + merge_repo=$1 merge_name=${2:-HEAD}
@@ -35,7 +42,7 @@ download_objects () { } echo "Getting remote $merge_name" -download_one "$merge_repo/$merge_name" "$GIT_DIR"/FETCH_HEAD || exit 1 +download_one "$merge_repo/$merge_name" "$GIT_DIR/$dest" || exit 1 echo "Getting object database" -download_objects "$merge_repo" "$(cat "$GIT_DIR"/FETCH_HEAD)" || exit 1 +download_objects "$merge_repo" "$(cat "$GIT_DIR/$dest")" || exit 1