There are filesystems out there which do not understand symlinks, even if the OS is perfectly capable of writing them. So, do not fail right away, but try to write a symbolic ref first. If that fails, you can die(). Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> --- refs.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-) applies-to: ccd3f478f6bdf8174f7d5d24d54434e66fa9068e 2e920b7169ad9661385ba02412cdbdc4e69e00a1 diff --git a/refs.c b/refs.c index 97506a4..8b544e0 100644 --- a/refs.c +++ b/refs.c @@ -116,14 +116,16 @@ const char *resolve_ref(const char *path 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 + unlink(git_HEAD); + if (!symlink(refs_heads_master, git_HEAD)) + return 0; +#endif + len = snprintf(ref, sizeof(ref), "ref: %s\n", refs_heads_master); if (sizeof(ref) <= len) { error("refname too long: %s", refs_heads_master); @@ -144,7 +146,6 @@ int create_symref(const char *git_HEAD, return -3; } return 0; -#endif } int read_ref(const char *filename, unsigned char *sha1) --- 0.99.8.GIT - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Wed Oct 26 09:41:05 2005
This archive was generated by hypermail 2.1.8 : 2005-10-26 09:41:11 EST