{"thread":{"id":"28554","subject":"unable to resolve reference refs/tags/v3.1-rc8: Success (Re: git problem)","startedAt":"2011-10-03T03:59:07Z","lastAt":"2011-10-03T05:11:42Z","messageCount":4,"participants":["Jonathan Nieder","Larry Finger"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"176700","messageId":"20111003035907.GA17134@elie","threadId":"28554","inReplyTo":"4E892483.7070605@lwfinger.net","subject":"unable to resolve reference refs/tags/v3.1-rc8: Success (Re: git problem)","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-10-03T03:59:07Z","receivedAt":"2011-10-03T03:59:07Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi,\n\nLarry Finger wrote:\n\n> I had my system freeze when doing a pull from Linus's repo. Since then,\n> every pull results in the following errors:\n>\n> ~> git pull\n> error: unable to resolve reference refs/tags/v3.1-rc8: Success\n> From git://github.com/torvalds/linux\n>  ! [new tag]         v3.1-rc8   -> v3.1-rc8  (unable to update local ref)\n\nCould you try pulling again with\n\"/path/to/git/sources/bin-wrappers/git pull\" after applying this\npatch?\n\nThanks,\n\ndiff --git i/refs.c w/refs.c\nindex a615043b..b15f78a4 100644\n--- i/refs.c\n+++ w/refs.c\n@@ -493,12 +493,15 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *\n \t\tchar *buf;\n \t\tint fd;\n \n-\t\tif (--depth < 0)\n+\t\tif (--depth < 0) {\n+\t\t\terrno = ELOOP;\n \t\t\treturn NULL;\n+\t\t}\n \n \t\tgit_snpath(path, sizeof(path), \"%s\", ref);\n \t\t/* Special case: non-existing file. */\n \t\tif (lstat(path, &st) < 0) {\n+\t\t\tint saved_errno = errno;\n \t\t\tstruct ref_list *list = get_packed_refs(NULL);\n \t\t\twhile (list) {\n \t\t\t\tif (!strcmp(ref, list->name)) {\n@@ -509,6 +512,7 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *\n \t\t\t\t}\n \t\t\t\tlist = list->next;\n \t\t\t}\n+\t\t\terrno = saved_errno;\n \t\t\tif (reading || errno != ENOENT)\n \t\t\t\treturn NULL;\n \t\t\thashclr(sha1);\n@@ -562,7 +566,8 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *\n \t\t\t*flag |= REF_ISSYMREF;\n \t}\n \tif (len < 40 || get_sha1_hex(buffer, sha1))\n-\t\treturn NULL;\n+\t\tdie(\"ref %s is corrupt: length=%d, content=%.*s\", ref,\n+\t\t    (int) len, (int) len, buffer);\n \treturn ref;\n }\n \n"},{"id":"176701","messageId":"4E8936F4.5060506@lwfinger.net","threadId":"28554","inReplyTo":"20111003035907.GA17134@elie","subject":"Re: unable to resolve reference refs/tags/v3.1-rc8: Success (Re: git problem)","fromName":"Larry Finger","fromEmail":"larry.finger@lwfinger.net","sentAt":"2011-10-03T04:15:48Z","receivedAt":"2011-10-03T04:15:48Z","isPatch":false,"sender":{"key":"larry.finger@lwfinger.net","avatar":null},"body":"On 10/02/2011 10:59 PM, Jonathan Nieder wrote:\n> Hi,\n>\n> Larry Finger wrote:\n>\n>> I had my system freeze when doing a pull from Linus's repo. Since then,\n>> every pull results in the following errors:\n>>\n>> ~>  git pull\n>> error: unable to resolve reference refs/tags/v3.1-rc8: Success\n>>  From git://github.com/torvalds/linux\n>>   ! [new tag]         v3.1-rc8   ->  v3.1-rc8  (unable to update local ref)\n>\n> Could you try pulling again with\n> \"/path/to/git/sources/bin-wrappers/git pull\" after applying this\n> patch?\n>\n> Thanks,\n>\n> diff --git i/refs.c w/refs.c\n> index a615043b..b15f78a4 100644\n> --- i/refs.c\n> +++ w/refs.c\n> @@ -493,12 +493,15 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *\n>   \t\tchar *buf;\n>   \t\tint fd;\n>\n> -\t\tif (--depth<  0)\n> +\t\tif (--depth<  0) {\n> +\t\t\terrno = ELOOP;\n>   \t\t\treturn NULL;\n> +\t\t}\n>\n>   \t\tgit_snpath(path, sizeof(path), \"%s\", ref);\n>   \t\t/* Special case: non-existing file. */\n>   \t\tif (lstat(path,&st)<  0) {\n> +\t\t\tint saved_errno = errno;\n>   \t\t\tstruct ref_list *list = get_packed_refs(NULL);\n>   \t\t\twhile (list) {\n>   \t\t\t\tif (!strcmp(ref, list->name)) {\n> @@ -509,6 +512,7 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *\n>   \t\t\t\t}\n>   \t\t\t\tlist = list->next;\n>   \t\t\t}\n> +\t\t\terrno = saved_errno;\n>   \t\t\tif (reading || errno != ENOENT)\n>   \t\t\t\treturn NULL;\n>   \t\t\thashclr(sha1);\n> @@ -562,7 +566,8 @@ const char *resolve_ref(const char *ref, unsigned char *sha1, int reading, int *\n>   \t\t\t*flag |= REF_ISSYMREF;\n>   \t}\n>   \tif (len<  40 || get_sha1_hex(buffer, sha1))\n> -\t\treturn NULL;\n> +\t\tdie(\"ref %s is corrupt: length=%d, content=%.*s\", ref,\n> +\t\t    (int) len, (int) len, buffer);\n>   \treturn ref;\n>   }\n\nAfter applying that patch, I get\n\nfinger@larrylap:~/linux-2.6> ~/git/git pull\nfatal: ref refs/tags/v3.1-rc8 is corrupt: length=41, content=\n\nLarry\n"},{"id":"176702","messageId":"20111003044045.GA17289@elie","threadId":"28554","inReplyTo":"4E8936F4.5060506@lwfinger.net","subject":"Re: unable to resolve reference refs/tags/v3.1-rc8: Success","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-10-03T04:40:55Z","receivedAt":"2011-10-03T04:40:55Z","isPatch":false,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Larry Finger wrote:\n\n> After applying that patch, I get\n>\n> finger@larrylap:~/linux-2.6> ~/git/git pull\n> fatal: ref refs/tags/v3.1-rc8 is corrupt: length=41, content=\n\nGreat, thanks.\n\nIn the short term I'd suggest just removing the corrupt\n.git/refs/tags/v3.1-rc8 file with \"rm\" so it can be fetched again.\nHopefully later tonight I can prepare a real patch to fix this, though\nI wouldn't mind if someone else takes care of it first.\n"},{"id":"176704","messageId":"4E89440E.8060702@lwfinger.net","threadId":"28554","inReplyTo":"20111003044045.GA17289@elie","subject":"Re: unable to resolve reference refs/tags/v3.1-rc8: Success","fromName":"Larry Finger","fromEmail":"larry.finger@lwfinger.net","sentAt":"2011-10-03T05:11:42Z","receivedAt":"2011-10-03T05:11:42Z","isPatch":false,"sender":{"key":"larry.finger@lwfinger.net","avatar":null},"body":"On 10/02/2011 11:40 PM, Jonathan Nieder wrote:\n> Larry Finger wrote:\n>\n>> After applying that patch, I get\n>>\n>> finger@larrylap:~/linux-2.6>  ~/git/git pull\n>> fatal: ref refs/tags/v3.1-rc8 is corrupt: length=41, content=\n>\n> Great, thanks.\n>\n> In the short term I'd suggest just removing the corrupt\n> .git/refs/tags/v3.1-rc8 file with \"rm\" so it can be fetched again.\n> Hopefully later tonight I can prepare a real patch to fix this, though\n> I wouldn't mind if someone else takes care of it first.\n\nThanks. That did the trick.\n\nLarry\n"}]}