git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Cogito: Use git-rev-parse instead of cg-Xnormid.

From
BGBrian Gerst <bgerst@didntduck.org>
Date
Jul 3, 2005, 05:59 UTC
Message-ID
<42C77ECE.2080903@didntduck.org>

Use git-rev-parse instead of cg-Xnormid. This allows Cogito to work properly with packed objects.

Signed off by: Brian Gerst <bgerst@didntduck.org>
Use git-rev-parse instead of cg-Xnormid.  This allows Cogito to work properly with packed objects.
Signed off by: Brian Gerst <bgerst@didntduck.org>

--- commit 32c6125190d7d183110790b556a8e1128f29c52d tree 0e53bc37eb8ad12f093cfb0e903689ef95c54ece parent 266e27c48ba20c1af33f6a3eb966e8cd0d3c8b65 author Brian Gerst <bgerst@didntduck.org> Sun, 03 Jul 2005 01:53:22 -0400 committer Brian Gerst <bgerst@didntduck.org> Sun, 03 Jul 2005 01:53:22 -0400

 Makefile   |    2 +-
 cg-Xnormid |   63 ------------------------------------------------------------
 commit-id  |   12 +----------
 parent-id  |    4 +---
 tree-id    |    4 ++--
 5 files changed, 5 insertions(+), 80 deletions(-)
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -67,7 +67,7 @@ SCRIPT=	commit-id tree-id parent-id cg-a
 	cg-pull cg-restore cg-rm cg-seek cg-status cg-tag cg-tag-ls cg-update \
 	cg cg-admin-ls cg-push cg-branch-chg
 
-LIB_SCRIPT=cg-Xlib cg-Xmergefile cg-Xnormid
+LIB_SCRIPT=cg-Xlib cg-Xmergefile
 
 GEN_SCRIPT= cg-version
 
diff --git a/cg-Xnormid b/cg-Xnormid
deleted file mode 100755
--- a/cg-Xnormid
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env bash
-#
-# Normalize an ID to an SHA1 hash value.
-# Copyright (c) Petr Baudis, 2005
-# Copyright (c) Philip Pokorny, 2005
-#
-# Strings resolve in this order:
-# 	NULL, this, HEAD  => .git/HEAD
-# 	<tags>
-# 	<heads>
-# 	short SHA1 (4 or more hex digits)
-#
-# Takes the ID to normalize and returns the normalized ID.
-
-. ${COGITO_LIB}cg-Xlib
-
-id="$1"
-
-if [ ! "$id" ] || [ "$id" = "this" ] || [ "$id" = "HEAD" ]; then
-	read id < "$_git/HEAD"
-
-elif [ -r "$_git/refs/tags/$id" ]; then
-	read id < "$_git/refs/tags/$id"
-
-elif [ -r "$_git/refs/heads/$id" ]; then
-	read id < "$_git/refs/heads/$id"
-
-# Short id's must be lower case and at least 4 digits.
-elif [[ "$id" == [0-9a-z][0-9a-z][0-9a-z][0-9a-z]* ]]; then
-	idpref=${id:0:2}
-	idpost=${id:2}
-
-	# Assign array elements to matching names
-	idmatch=($_git_objects/$idpref/$idpost*)
-
-	if [ ${#idmatch[*]} -eq 1 ] && [ -r "$idmatch" ]; then
-		id=$idpref${idmatch#$_git_objects/$idpref/}
-	elif [ ${#idmatch[*]} -gt 1 ]; then
-		echo "Ambiguous id: $id" >&2
-		exit 1
-	fi
-fi
-
-if ([ "$id" ] && [ "$id" != " " ]) && ([ ${#id} -ne 40 ] || [ ! -f .git/objects/${id:0:2}/${id:2} ]); then
-	reqsecs=$(date --date="$id" +'%s' 2>/dev/null)
-
-	if [ "$reqsecs" ]; then
-		id=$(git-rev-list --min-age=$reqsecs --max-count=1 HEAD)
-	fi
-fi
-
-# If we don't have a 40-char ID by now, it's an error
-if [ ${#id} -ne 40 ] || [ ! -f $_git_objects/${id:0:2}/${id:2} ]; then
-	echo "Invalid id: $id" >&2
-	exit 1
-fi
-
-if [ "$(git-cat-file -t "$id")" = "tag" ]; then
-	id=$(git-cat-file tag "$id" | head -n 1)
-	id="${id#object }"
-fi
-
-echo $id
diff --git a/commit-id b/commit-id
--- a/commit-id
+++ b/commit-id
@@ -5,14 +5,4 @@
 #
 # Takes the appropriate ID, defaults to HEAD.
 
-. ${COGITO_LIB}cg-Xlib
-
-id="$1"
-normid=$(${COGITO_LIB}cg-Xnormid "$id") || exit 1
-
-if [ "$(git-cat-file -t "$normid")" != "commit" ]; then
-	echo "Invalid commit id: $id" >&2
-	exit 1
-fi
-
-echo $normid
+git-rev-parse "${1:-HEAD}"
diff --git a/parent-id b/parent-id
--- a/parent-id
+++ b/parent-id
@@ -7,6 +7,4 @@
 #
 # NOTE: Will return multiple SHA1s if ID is a commit with multiple parents.
 
-id=$(commit-id "$1") || exit 1
-
-git-cat-file commit $id | awk '/^parent/{print $2};/^$/{exit}'
+git-rev-parse "${1:-HEAD}^"
diff --git a/tree-id b/tree-id
--- a/tree-id
+++ b/tree-id
@@ -5,8 +5,8 @@
 #
 # Takes ID of the appropriate commit, defaults to HEAD.
 
-id="$1"
-normid=$(${COGITO_LIB}cg-Xnormid "$id") || exit 1
+id="${1:-HEAD}"
+normid=$(git-rev-parse "$id")
 type=$(git-cat-file -t "$normid")
 
 if [ "$type" = "commit" ]; then
Next: Petr Baudis
Message 1 of 8 in “Cogito: Use git-rev-parse instead of cg-Xnormid.”
  1. Cogito: Use git-rev-parse instead of cg-Xnormid.Brian Gerst, Jul 3, 2005
  2. Petr BaudisJul 3, 2005
  3. Brian GerstJul 3, 2005
  4. Petr BaudisJul 3, 2005
  5. Sven VerdoolaegeJul 3, 2005
  6. Petr BaudisJul 3, 2005
  7. Linus TorvaldsJul 3, 2005
  8. Petr BaudisJul 3, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.