Re: [PATCh] jit-trackdown
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:41:55
quoted
quoted
quoted
quoted
"DG" == David Greaves [off-list ref] writes:
DG> Should really be cg-trackdown
Thanks for your kind words and the patch.
head="$1"
+if [ $head == "HEAD" ]; then
+ head=$(cat .git/HEAD)
+elif [ -f .git/refs/tags/$head ]; then
+ head=$(cat .git/refs/tags/$head)
+elif [ -f .git/refs/heads/$head ]; then
+ head=$(cat .git/refs/heads/$head)
+fi
+
I have been primarily looking at the plumbing side and not the
toilet side, and I still have not grokked cg-* yet. That's why
I did not do the right thing with these .git/refs/* stuff. If
this were to become part of cg-* suite, I would recommend just
using $(commit-id) there, which should be the only one that
needs to know the .git/* structure convention.
Have toilet side gitters reached a concensus (or semi-concensus)
on how things under .git/ should be organized? Is there a
summary somewhere, something along the following lines?
In subdirectories under $GIT_PROJECT_TOP/.git, you have
files that have some special meaning to the Cogito layer.
These files are all 41-byte long, which stores a 40-byte
SHA1 with terminating newline. What is stored in each
location is as follows:
.git/HEAD Head commit object of the
current tree.
.git/refs/heads/$ext Head commit object of the
external tree $ext. [*Q1*]
.git/refs/tags/$tag Named Tag object. [*Q2*]
*Q1* What is the syntax and semantics rule for $ext, like
"$ext matches '^[-A-Za-z0-9_]$' and is one of the
entries in .git/remotes"?
*Q2* What is the syntax and semantics rule for $tag, like
"$tag matches '^[-A-Za-z0-9_]$' and can be anything not
just commit"?