summaryrefslogtreecommitdiff
path: root/builtin-symbolic-ref.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-09-20 22:02:01 -0700
committerJunio C Hamano <junkio@cox.net>2006-09-20 22:02:01 -0700
commit8da197755450d4f16018bd4b5486dc8ed88b0f2a (patch)
tree9317d63e33d83995b6346eea465a4d290f991087 /builtin-symbolic-ref.c
parentcb5d709ff8a4bae19d57a470ba2b137c25938a44 (diff)
downloadgit-8da197755450d4f16018bd4b5486dc8ed88b0f2a.tar.gz
Tell between packed, unpacked and symbolic refs.
This adds a "int *flag" parameter to resolve_ref() and makes for_each_ref() family to call callback function with an extra "int flag" parameter. They are used to give two bits of information (REF_ISSYMREF and REF_ISPACKED) about the ref. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-symbolic-ref.c')
-rw-r--r--builtin-symbolic-ref.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/builtin-symbolic-ref.c b/builtin-symbolic-ref.c
index 13163baa88..d8be0527f4 100644
--- a/builtin-symbolic-ref.c
+++ b/builtin-symbolic-ref.c
@@ -1,5 +1,6 @@
#include "builtin.h"
#include "cache.h"
+#include "refs.h"
static const char git_symbolic_ref_usage[] =
"git-symbolic-ref name [ref]";
@@ -7,10 +8,13 @@ static const char git_symbolic_ref_usage[] =
static void check_symref(const char *HEAD)
{
unsigned char sha1[20];
- const char *refs_heads_master = resolve_ref(HEAD, sha1, 0);
+ int flag;
+ const char *refs_heads_master = resolve_ref(HEAD, sha1, 0, &flag);
if (!refs_heads_master)
die("No such ref: %s", HEAD);
+ else if (!(flag & REF_ISSYMREF))
+ die("ref %s is not a symbolic ref", HEAD);
puts(refs_heads_master);
}