diff options
author | Linus Torvalds <torvalds@osdl.org> | 2005-09-25 09:59:37 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-10-01 23:19:32 -0700 |
commit | ca8db1424d1808a1f78bc9905efd267f7c154d8e (patch) | |
tree | fc2086ca262fc07a0da736b5a46f872b9ecc9cda /sha1_name.c | |
parent | 9b143c6e155a8eead165b2a813b533e0f3e0018a (diff) | |
download | git-ca8db1424d1808a1f78bc9905efd267f7c154d8e.tar.gz git-ca8db1424d1808a1f78bc9905efd267f7c154d8e.tar.xz |
[PATCH] Allow reading "symbolic refs" that point to other refs
This extends the ref reading to understand a "symbolic ref": a ref file
that starts with "ref: " and points to another ref file, and thus
introduces the notion of ref aliases.
This is in preparation of allowing HEAD to eventually not be a symlink,
but one of these symbolic refs instead.
[jc: Linus originally required the prefix to be "ref: " five bytes
and nothing else, but I changed it to allow and strip any number of
leading whitespaces to match what update-ref.c does.]
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'sha1_name.c')
-rw-r--r-- | sha1_name.c | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/sha1_name.c b/sha1_name.c index b4fed924f..57e6cd3bd 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -119,21 +119,6 @@ static int get_short_sha1(const char *name, int len, unsigned char *sha1) return -1; } -static int get_sha1_file(const char *path, unsigned char *result) -{ - char buffer[60]; - int fd = open(path, O_RDONLY); - int len; - - if (fd < 0) - return -1; - len = read(fd, buffer, sizeof(buffer)); - close(fd); - if (len < 40) - return -1; - return get_sha1_hex(buffer, result); -} - static int get_sha1_basic(const char *str, int len, unsigned char *sha1) { static const char *prefix[] = { @@ -150,7 +135,7 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1) for (p = prefix; *p; p++) { char *pathname = git_path("%s/%.*s", *p, len, str); - if (!get_sha1_file(pathname, sha1)) + if (!read_ref(pathname, sha1)) return 0; } |