aboutsummaryrefslogtreecommitdiff
path: root/builtin-show-ref.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-11-21 23:36:35 -0800
committerJunio C Hamano <junkio@cox.net>2006-11-21 23:37:35 -0800
commitf4204ab9f6a192cdb9a68150e031d7183688bfeb (patch)
tree3c9402e5a9e55dadf6477e44904fcc86fac7c8be /builtin-show-ref.c
parentcf0adba7885342e1bbcf0689fece9d13e39784b4 (diff)
downloadgit-f4204ab9f6a192cdb9a68150e031d7183688bfeb.tar.gz
git-f4204ab9f6a192cdb9a68150e031d7183688bfeb.tar.xz
Store peeled refs in packed-refs (take 2).
This fixes the previous implementation which failed to optimize repositories with tons of lightweight tags. The updated packed-refs format begins with "# packed-refs with:" line that lists the kind of extended data the file records. Currently, there is only one such extension defined, "peeled". This stores the "peeled tag" on a line that immediately follows a line for a tag object itself in the format "^<sha-1>". The header line itself and any extended data are ignored by older implementation, so packed-refs file generated with this version can still be used by older git. packed-refs made by older git can of course be used with this version. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-show-ref.c')
-rw-r--r--builtin-show-ref.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/builtin-show-ref.c b/builtin-show-ref.c
index 9ae3d0854..073979855 100644
--- a/builtin-show-ref.c
+++ b/builtin-show-ref.c
@@ -67,8 +67,10 @@ match:
return 0;
if ((flag & REF_ISPACKED) && !peel_ref(refname, peeled)) {
- hex = find_unique_abbrev(peeled, abbrev);
- printf("%s %s^{}\n", hex, refname);
+ if (!is_null_sha1(peeled)) {
+ hex = find_unique_abbrev(peeled, abbrev);
+ printf("%s %s^{}\n", hex, refname);
+ }
}
else {
obj = parse_object(sha1);