{"thread":{"id":"28832","subject":"error from 'git push' on v1.7.8-rc0","startedAt":"2011-11-03T11:43:54Z","lastAt":"2011-11-03T19:15:08Z","messageCount":5,"participants":["Stefan Näwe","Stefan Naewe","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"178767","messageId":"CAJzBP5Q1_zX+H0jeBZNB81KLYAbtJWhUuHA3rf8CuW-_OSFXbg@mail.gmail.com","threadId":"28832","inReplyTo":null,"subject":"error from 'git push' on v1.7.8-rc0","fromName":"Stefan Näwe","fromEmail":"stefan.naewe@gmail.com","sentAt":"2011-11-03T11:43:54Z","receivedAt":"2011-11-03T11:43:54Z","isPatch":false,"sender":{"key":"stefan.naewe@gmail.com","avatar":"https://avatars.githubusercontent.com/u/4468?v=4"},"body":"I get errors from git push when trying to delete a (remote) branch:\n\n$ ./bin-wrappers/git versiongit version 1.7.8.rc0\n$ ./bin-wrappers/git push -q . :refs/heads/nogofatal: bad object\n0000000000000000000000000000000000000000fatal: bad object\n0000000000000000000000000000000000000000remote: warning: Allowing\ndeletion of corrupt ref.\nI bisected this to: 52fed6e receive-pack: check connectivity before\nconcluding \"git push\"\n\n$ git describe 52fed6e~1\nv1.7.5.3-492-gf96400c\n\n$ ./bin-wrappers/git version\ngit version 1.7.5.3.492.gf9640\n\n$ ./bin-wrappers/git push -q . :refs/heads/nogo\nremote: warning: Allowing deletion of corrupt ref.\n\nIt makes no difference if the branch to be deleted exists, or not.\n\nRegards,\n  Stefan\n-- \n----------------------------------------------------------------\npython -c \"print '73746566616e2e6e6165776540676d61696c2e636f6d'.decode('hex')\"\n"},{"id":"178768","messageId":"CAJzBP5Q1LaUBL_wHFfaY-cLatd_=oez9j+=60z3kxwg_47GN_Q@mail.gmail.com","threadId":"28832","inReplyTo":"CAJzBP5Q1_zX+H0jeBZNB81KLYAbtJWhUuHA3rf8CuW-_OSFXbg@mail.gmail.com","subject":"Re: error from 'git push' on v1.7.8-rc0","fromName":"Stefan Näwe","fromEmail":"stefan.naewe@gmail.com","sentAt":"2011-11-03T11:49:20Z","receivedAt":"2011-11-03T11:49:20Z","isPatch":false,"sender":{"key":"stefan.naewe@gmail.com","avatar":"https://avatars.githubusercontent.com/u/4468?v=4"},"body":"On Thu, Nov 3, 2011 at 12:43 PM, Stefan Näwe <stefan.naewe@gmail.com> wrote:\n> I get errors from git push when trying to delete a (remote) branch:\n>\n> $ ./bin-wrappers/git versiongit version 1.7.8.rc0\n> $ ./bin-wrappers/git push -q . :refs/heads/nogofatal: bad object\n$ ./bin-wrappers/git push -q . :refs/heads/nogo\n\n(re-wrapped)\n\n$ ./bin-wrappers/git push -q . :refs/heads/nogo\nfatal: bad object 0000000000000000000000000000000000000000\nfatal: bad object 0000000000000000000000000000000000000000\nremote: warning: Allowing deletion of corrupt ref.\n\n\nStefan\n-- \n----------------------------------------------------------------\npython -c \"print '73746566616e2e6e6165776540676d61696c2e636f6d'.decode('hex')\"\n"},{"id":"178782","messageId":"loom.20111103T182501-714@post.gmane.org","threadId":"28832","inReplyTo":"CAJzBP5Q1LaUBL_wHFfaY-cLatd_=oez9j+=60z3kxwg_47GN_Q@mail.gmail.com","subject":"Re: error from 'git push' on v1.7.8-rc0","fromName":"Stefan Naewe","fromEmail":"stefan.naewe@gmail.com","sentAt":"2011-11-03T17:26:58Z","receivedAt":"2011-11-03T17:26:58Z","isPatch":false,"sender":{"key":"stefan.naewe@gmail.com","avatar":"https://avatars.githubusercontent.com/u/4468?v=4"},"body":"Stefan Näwe <stefan.naewe <at> gmail.com> writes:\n\n> \n> On Thu, Nov 3, 2011 at 12:43 PM, Stefan Näwe <stefan.naewe <at> gmail.com> \nwrote:\n> > I get errors from git push when trying to delete a (remote) branch:\n> >\n> > $ ./bin-wrappers/git versiongit version 1.7.8.rc0\n> > $ ./bin-wrappers/git push -q . :refs/heads/nogofatal: bad object\n> $ ./bin-wrappers/git push -q . :refs/heads/nogo\n> \n> (re-wrapped)\n> \n> $ ./bin-wrappers/git push -q . :refs/heads/nogo\n> fatal: bad object 0000000000000000000000000000000000000000\n> fatal: bad object 0000000000000000000000000000000000000000\n> remote: warning: Allowing deletion of corrupt ref.\n\nI think the problem lies actually in 'rev-list':\n\n\n$ git rev-list --verify-objects 0000000000000000000000000000000000000000 \\\n   --not --all\nfatal: bad object 0000000000000000000000000000000000000000\n\n\nRegards,\n  Stefan\n"},{"id":"178789","messageId":"7vmxcdf2x7.fsf@alter.siamese.dyndns.org","threadId":"28832","inReplyTo":"CAJzBP5Q1_zX+H0jeBZNB81KLYAbtJWhUuHA3rf8CuW-_OSFXbg@mail.gmail.com","subject":"Re: error from 'git push' on v1.7.8-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-11-03T18:59:00Z","receivedAt":"2011-11-03T18:59:00Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Stefan Näwe <stefan.naewe@gmail.com> writes:\n\n> I get errors from git push when trying to delete a (remote) branch:\n>\n> $ ./bin-wrappers/git versiongit version 1.7.8.rc0\n> $ ./bin-wrappers/git push -q . :refs/heads/nogofatal: bad object\n> 0000000000000000000000000000000000000000fatal: bad object\n> 0000000000000000000000000000000000000000remote: warning: Allowing\n> deletion of corrupt ref.\n\nThanks. I think the operation does _not_ error out and fail to delete, but\nI agree that the \"fatal:\" message should be squelched.\n"},{"id":"178792","messageId":"7vhb2lf26b.fsf@alter.siamese.dyndns.org","threadId":"28832","inReplyTo":"7vmxcdf2x7.fsf@alter.siamese.dyndns.org","subject":"Re: error from 'git push' on v1.7.8-rc0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2011-11-03T19:15:08Z","receivedAt":"2011-11-03T19:15:08Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Stefan Näwe <stefan.naewe@gmail.com> writes:\n>\n>> I get errors from git push when trying to delete a (remote) branch:\n>>\n>> $ ./bin-wrappers/git versiongit version 1.7.8.rc0\n>> $ ./bin-wrappers/git push -q . :refs/heads/nogofatal: bad object\n>> 0000000000000000000000000000000000000000fatal: bad object\n>> 0000000000000000000000000000000000000000remote: warning: Allowing\n>> deletion of corrupt ref.\n>\n> Thanks. I think the operation does _not_ error out and fail to delete, but\n> I agree that the \"fatal:\" message should be squelched.\n\n-- >8 --\nSubject: receive-pack: do not expect object 0{40} to exist\n\nWhen pushing to delete a ref, it uses 0{40} as an object name to signal\nthat the request is a deletion. We shouldn't trigger \"deletion of a\ncorrupt ref\" warning in such a case, which was designed to notice that a\nref points at an object that is truly missing from the repository.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n builtin/receive-pack.c |   17 +++++++++++------\n 1 files changed, 11 insertions(+), 6 deletions(-)\n\ndiff --git a/builtin/receive-pack.c b/builtin/receive-pack.c\nindex 261b610..7ec68a1 100644\n--- a/builtin/receive-pack.c\n+++ b/builtin/receive-pack.c\n@@ -634,7 +634,7 @@ static int command_singleton_iterator(void *cb_data, unsigned char sha1[20])\n \tstruct command **cmd_list = cb_data;\n \tstruct command *cmd = *cmd_list;\n \n-\tif (!cmd)\n+\tif (!cmd || is_null_sha1(cmd->new_sha1))\n \t\treturn -1; /* end of list */\n \t*cmd_list = NULL; /* this returns only one */\n \thashcpy(sha1, cmd->new_sha1);\n@@ -659,11 +659,16 @@ static int iterate_receive_command_list(void *cb_data, unsigned char sha1[20])\n \tstruct command **cmd_list = cb_data;\n \tstruct command *cmd = *cmd_list;\n \n-\tif (!cmd)\n-\t\treturn -1; /* end of list */\n-\t*cmd_list = cmd->next;\n-\thashcpy(sha1, cmd->new_sha1);\n-\treturn 0;\n+\twhile (cmd) {\n+\t\tif (!is_null_sha1(cmd->new_sha1)) {\n+\t\t\thashcpy(sha1, cmd->new_sha1);\n+\t\t\t*cmd_list = cmd->next;\n+\t\t\treturn 0;\n+\t\t}\n+\t\tcmd = cmd->next;\n+\t}\n+\t*cmd_list = NULL;\n+\treturn -1; /* end of list */\n }\n \n static void execute_commands(struct command *commands, const char *unpacker_error)\n"}]}