user-manual: don't assume refs are stored under .git/refs

The scripts taken from Tony Luck's howto assume all refs can be found
under .git/refs, but this is not necessarily true, especially since
git-gc runs git-pack-refs.

Also add a note warning of this in the chapter that introduces refs, and
fix the same incorrect assumption in one other spot.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
J. Bruce Fields 2007-09-09 22:07:02 -04:00
parent 806ea701ce
commit fc74ecc12c

View File

@ -369,6 +369,11 @@ shorthand:
The full name is occasionally useful if, for example, there ever The full name is occasionally useful if, for example, there ever
exists a tag and a branch with the same name. exists a tag and a branch with the same name.
(Newly created refs are actually stored in the .git/refs directory,
under the path given by their name. However, for efficiency reasons
they may also be packed together in a single file; see
gitlink:git-pack-refs[1]).
As another useful shortcut, the "HEAD" of a repository can be referred As another useful shortcut, the "HEAD" of a repository can be referred
to just using the name of that repository. So, for example, "origin" to just using the name of that repository. So, for example, "origin"
is usually a shortcut for the HEAD branch in the repository "origin". is usually a shortcut for the HEAD branch in the repository "origin".
@ -2189,9 +2194,9 @@ test|release)
git checkout $1 && git pull . origin git checkout $1 && git pull . origin
;; ;;
origin) origin)
before=$(cat .git/refs/remotes/origin/master) before=$(git rev-parse refs/remotes/origin/master)
git fetch origin git fetch origin
after=$(cat .git/refs/remotes/origin/master) after=$(git rev-parse refs/remotes/origin/master)
if [ $before != $after ] if [ $before != $after ]
then then
git log $before..$after | git shortlog git log $before..$after | git shortlog
@ -2216,11 +2221,10 @@ usage()
exit 1 exit 1
} }
if [ ! -f .git/refs/heads/"$1" ] git show-ref -q --verify -- refs/heads/"$1" || {
then
echo "Can't see branch <$1>" 1>&2 echo "Can't see branch <$1>" 1>&2
usage usage
fi }
case "$2" in case "$2" in
test|release) test|release)
@ -2251,7 +2255,7 @@ then
git log test..release git log test..release
fi fi
for branch in `ls .git/refs/heads` for branch in `git show-ref --heads | sed 's|^.*/||'`
do do
if [ $branch = test -o $branch = release ] if [ $branch = test -o $branch = release ]
then then
@ -2946,7 +2950,7 @@ nLE/L9aUXdWeTFPron96DLA=
See the gitlink:git-tag[1] command to learn how to create and verify tag See the gitlink:git-tag[1] command to learn how to create and verify tag
objects. (Note that gitlink:git-tag[1] can also be used to create objects. (Note that gitlink:git-tag[1] can also be used to create
"lightweight tags", which are not tag objects at all, but just simple "lightweight tags", which are not tag objects at all, but just simple
references in .git/refs/tags/). references whose names begin with "refs/tags/").
[[pack-files]] [[pack-files]]
How git stores objects efficiently: pack files How git stores objects efficiently: pack files