X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=refs.c;h=f324be50325d1ba765fbbb823937bf68ef91c0aa;hb=refs%2Ftags%2Fv0.99.9j;hp=d7f8dfddf4979c0dda2b888435e6c343b29409ad;hpb=82ed2bcd920d73d218e94c95178be6a61ec7ed54;p=git.git diff --git a/refs.c b/refs.c index d7f8dfdd..f324be50 100644 --- a/refs.c +++ b/refs.c @@ -2,7 +2,6 @@ #include "cache.h" #include -#include /* We allow "recursive" symbolic refs. Only within reason, though */ #define MAXDEPTH 5 @@ -117,14 +116,19 @@ const char *resolve_ref(const char *path, unsigned char *sha1, int reading) int create_symref(const char *git_HEAD, const char *refs_heads_master) { -#if USE_SYMLINK_HEAD - unlink(git_HEAD); - return symlink(refs_heads_master, git_HEAD); -#else const char *lockpath; char ref[1000]; int fd, len, written; +#if USE_SYMLINK_HEAD + if (!only_use_symrefs) { + unlink(git_HEAD); + if (!symlink(refs_heads_master, git_HEAD)) + return 0; + fprintf(stderr, "no symlink - falling back to symbolic ref\n"); + } +#endif + len = snprintf(ref, sizeof(ref), "ref: %s\n", refs_heads_master); if (sizeof(ref) <= len) { error("refname too long: %s", refs_heads_master); @@ -145,7 +149,6 @@ int create_symref(const char *git_HEAD, const char *refs_heads_master) return -3; } return 0; -#endif } int read_ref(const char *filename, unsigned char *sha1)