Re: Updated git HOWTO for kernel hackers

From: Linus Torvalds
Date: Wed Jun 22 2005 - 21:38:59 EST




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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/