summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b10d0ec)
raw | patch | inline | side by side (parent: b10d0ec)
author | Linus Torvalds <torvalds@g5.osdl.org> | |
Fri, 8 Jul 2005 20:56:05 +0000 (13:56 -0700) | ||
committer | Linus Torvalds <torvalds@g5.osdl.org> | |
Fri, 8 Jul 2005 20:56:05 +0000 (13:56 -0700) |
It always uses a git-relative pathname, ie "refs/heads/master" instead of
".git/refs/heads/master" or whatever your GIT_DIR might be.
This way when we send refs back-and-forth between repositories, there's
never any question about GIT_DIR on either side.
".git/refs/heads/master" or whatever your GIT_DIR might be.
This way when we send refs back-and-forth between repositories, there's
never any question about GIT_DIR on either side.
refs.c | patch | blob | history |
index 09c9f904f0a5e1050ad1014a65aaef1e3d84e90a..774f1630fe79b00780be91f7937eb75c16fd3b16 100644 (file)
--- a/refs.c
+++ b/refs.c
#include <errno.h>
-static int read_ref(const char *path, unsigned char *sha1)
+static int read_ref(const char *refname, unsigned char *sha1)
{
int ret = -1;
- int fd = open(path, O_RDONLY);
+ int fd = open(git_path(refname), O_RDONLY);
if (fd >= 0) {
char buffer[60];
static int do_for_each_ref(const char *base, int (*fn)(const char *path, const unsigned char *sha1))
{
int retval = 0;
- DIR *dir = opendir(base);
+ DIR *dir = opendir(git_path(base));
if (dir) {
struct dirent *de;
if (namelen > 255)
continue;
memcpy(path + baselen, de->d_name, namelen+1);
- if (lstat(path, &st) < 0)
+ if (lstat(git_path(path), &st) < 0)
continue;
if (S_ISDIR(st.st_mode)) {
retval = do_for_each_ref(path, fn);
@@ -71,15 +71,14 @@ static int do_for_each_ref(const char *base, int (*fn)(const char *path, const u
int head_ref(int (*fn)(const char *path, const unsigned char *sha1))
{
unsigned char sha1[20];
- const char *headpath = git_path("HEAD");
- if (!read_ref(headpath, sha1))
- return fn(headpath, sha1);
+ if (!read_ref("HEAD", sha1))
+ return fn("HEAD", sha1);
return 0;
}
int for_each_ref(int (*fn)(const char *path, const unsigned char *sha1))
{
- return do_for_each_ref(get_refs_directory(), fn);
+ return do_for_each_ref("refs", fn);
}
static char *ref_file_name(const char *ref)