{"thread":{"id":"2232","subject":"[PATCH 2/4] create_symref: if symlink fails, fall back to writing a \"symbolic ref\"","startedAt":"2005-10-25T23:40:31Z","lastAt":"2005-10-25T23:40:31Z","messageCount":1,"participants":["Johannes Schindelin"],"isPatch":true,"patchVersion":1,"patchTotal":4},"messages":[{"id":"10628","messageId":"Pine.LNX.4.63.0510260139250.30576@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"2232","inReplyTo":null,"subject":"[PATCH 2/4] create_symref: if symlink fails, fall back to writing a \"symbolic ref\"","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2005-10-25T23:40:31Z","receivedAt":"2005-10-25T23:40:31Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"There are filesystems out there which do not understand symlinks, even if \nthe OS is perfectly capable of writing them. So, do not fail right away, \nbut try to write a symbolic ref first. If that fails, you can die().\n\nSigned-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>\n\n---\n\n refs.c |   11 ++++++-----\n 1 files changed, 6 insertions(+), 5 deletions(-)\n\napplies-to: ccd3f478f6bdf8174f7d5d24d54434e66fa9068e\n2e920b7169ad9661385ba02412cdbdc4e69e00a1\ndiff --git a/refs.c b/refs.c\nindex 97506a4..8b544e0 100644\n--- a/refs.c\n+++ b/refs.c\n@@ -116,14 +116,16 @@ const char *resolve_ref(const char *path\n \n int create_symref(const char *git_HEAD, const char *refs_heads_master)\n {\n-#if USE_SYMLINK_HEAD\n-\tunlink(git_HEAD);\n-\treturn symlink(refs_heads_master, git_HEAD);\n-#else\n \tconst char *lockpath;\n \tchar ref[1000];\n \tint fd, len, written;\n \n+#if USE_SYMLINK_HEAD\n+\tunlink(git_HEAD);\n+\tif (!symlink(refs_heads_master, git_HEAD))\n+\t\treturn 0;\n+#endif\n+\n \tlen = snprintf(ref, sizeof(ref), \"ref: %s\\n\", refs_heads_master);\n \tif (sizeof(ref) <= len) {\n \t\terror(\"refname too long: %s\", refs_heads_master);\n@@ -144,7 +146,6 @@ int create_symref(const char *git_HEAD, \n \t\treturn -3;\n \t}\n \treturn 0;\n-#endif\n }\n \n int read_ref(const char *filename, unsigned char *sha1)\n---\n0.99.8.GIT\n"}]}