threads / patch / 485

patchhave commit-id dereference git tags

Subject: [PATCH] have commit-id dereference git tags

## tl;dr

2 messages between May 5, 2005 and May 5, 2005. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Alexander Beyn· May 5, 2005, 07:48 UTC · lore

With this patch, if commit-id is passed a git tag, it will check to see if the tag points to a commit. If it does, commit-id will return that commit's id.

I'm not sure if this is the proper place to handle git tags, but it does make things like "cg-diff -r v2.6.12-rc2:v2.6.12-rc3" work in the Linus kernel tree. I've not noticed any problems this introduces, but I didn't do a thorough check.

Signed-Off-By: Alexander Beyn <malex-git@fatelectrons.org>
Show changes to diff +9 −1
Index: commit-id
===================================================================
--- 6a20fd05c468097d5a5a47cd37b41581c963cf63/commit-id  (mode:100755 sha1:daf0ea1e35f1bee22eb4c4771495b2212d15f4e7)
+++ 66fded2e9d931ecc8b03aa282a7eb9559955c172/commit-id  (mode:100755 sha1:978c3ffeb072422436af7af1ad4a8de0e91c9632)
@@ -32,7 +32,15 @@
 	exit 1
 fi
 
-if [ "$(git-cat-file -t "$id")" != "commit" ]; then
+type="$(git-cat-file -t "$id")"
+
+if [ "$type" = "tag" ]; then
+	id=$(git-cat-file tag "$id" | egrep -m 1 "^object $SHA1")
+	id="${id#object }"
+	type="$(git-cat-file -t "$id")"
+fi
+
+if [ "$type" != "commit" ]; then
 	echo "Invalid id: $id" >&2
 	exit 1
 fi
Matt Porter· May 5, 2005, 21:14 UTC · re: Alexander Beyn · lore

Re: [PATCH] have commit-id dereference git tags

On Thu, May 05, 2005 at 12:48:23AM -0700, Alexander Beyn wrote:
Show 8 quoted lines
> With this patch, if commit-id is passed a git tag, it will check to see
> if the tag points to a commit. If it does, commit-id will return that
> commit's id.
> 
> I'm not sure if this is the proper place to handle git tags, but it does
> make things like "cg-diff -r v2.6.12-rc2:v2.6.12-rc3" work in the Linus
> kernel tree. I've not noticed any problems this introduces, but I didn't 
> do a thorough check.

I like this feature and it works on the Linus tree for me as well. However, it fails on the cogito tree as follows:

mporter@beef:~/src/cogito$ cg-diff -r git-pasky-0.7:cogito-0.8 .git/objects/c8/3b95297c2a6336c2007548f909769e0862b509: No such file or directory fatal: git-cat-file c83b95297c2a6336c2007548f909769e0862b509: bad file Invalid id: c83b95297c2a6336c2007548f909769e0862b509 usage: git-cat-file [-t | tagname] <sha1> usage: git-cat-file [-t | tagname] <sha1> Invalid id:

I haven't looked any further at it yet though.
-Matt

← back to recent threads