diff options
author | Junio C Hamano <junkio@cox.net> | 2006-11-21 23:36:35 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-11-21 23:37:35 -0800 |
commit | f4204ab9f6a192cdb9a68150e031d7183688bfeb (patch) | |
tree | 3c9402e5a9e55dadf6477e44904fcc86fac7c8be /builtin-show-ref.c | |
parent | cf0adba7885342e1bbcf0689fece9d13e39784b4 (diff) | |
download | git-f4204ab9f6a192cdb9a68150e031d7183688bfeb.tar.gz |
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.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/builtin-show-ref.c b/builtin-show-ref.c index 9ae3d08546..073979855b 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); |