{"thread":{"id":"22724","subject":"Is git over http (git-http-push) ready for production ?","startedAt":"2010-02-19T10:26:16Z","lastAt":"2010-02-19T19:05:12Z","messageCount":6,"participants":["Fabien","Tay Ray Chuan","Matthieu Moy","Ilari Liusvaara","Shawn Pearce"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"135069","messageId":"hllp07$o78$1@ger.gmane.org","threadId":"22724","inReplyTo":null,"subject":"Is git over http (git-http-push) ready for production ?","fromName":"Fabien","fromEmail":"fabien.ubuntu@gmail.com","sentAt":"2010-02-19T10:26:16Z","receivedAt":"2010-02-19T10:26:16Z","isPatch":false,"sender":{"key":"fabien.ubuntu@gmail.com","avatar":null},"body":"Hi,\n\nFollowing my last email about locks problem with reiserfs (see\ngit-http-push (git v1.5) problems with DAVLockDB on reiserfs FS), I was\nwondering how reliable is git-http-push.\n\nI was able to reproduce the same problem, also with client 1.6.6.2, when\ninterrupting the command in the middle.\n\n$ git push origin master\nFetching remote heads...\n  refs/\n  refs/tags/\n  refs/heads/\nupdating 'refs/heads/master'\n  from a0f6d85d90a52a28628f29765eb61de559c1fd31\n  to   952622ca0f55e76d810a5dc7a1dd1c8c44f8a7d7\nRemoving remote locks...\n\n=> interrupted by Ctrl+C\n\n$ git push origin master\nFetching remote heads...\n  refs/\n  refs/tags/\n  refs/heads/\nupdating 'refs/heads/master'\n  from a0f6d85d90a52a28628f29765eb61de559c1fd31\n  to   952622ca0f55e76d810a5dc7a1dd1c8c44f8a7d7\nUnable to lock remote branch refs/heads/master\nUpdating remote server info\nfatal: git-http-push failed\n\n\nI had to delete the davlock file and restart apache to solve the issue.\nSo, this operation doesn't seem really atomic ?\n\nAnother problem I see is the password in clear text in ~/.netrc to avoid\n  to type passwords all the time.\nIs there any plan to address this problem ? There used to be the same\ncase in subversion (yep, sorry for the comparison), and they finally\naddressed that by supporting GNOME Keyring and KWallet.\nFor what I saw, http support is provided thru libcurl, so it may not be\nthat easy.\n\nFinally, hooks don't work when using git over http (yep, I know, it's a\n\"dumb\" protocol)...\n\nSorry for blaming you and thanks a lot for your help :)\n\n--\nFabien\n"},{"id":"135072","messageId":"be6fef0d1002190314n4300aed3uc58d812b83342db2@mail.gmail.com","threadId":"22724","inReplyTo":"hllp07$o78$1@ger.gmane.org","subject":"Re: Is git over http (git-http-push) ready for production ?","fromName":"Tay Ray Chuan","fromEmail":"rctay89@gmail.com","sentAt":"2010-02-19T11:14:41Z","receivedAt":"2010-02-19T11:14:41Z","isPatch":false,"sender":{"key":"rctay89@gmail.com","avatar":"https://avatars.githubusercontent.com/u/61553?v=4"},"body":"Hi,\n\nOn Fri, Feb 19, 2010 at 6:26 PM, Fabien <fabien.ubuntu@gmail.com> wrote:\n> I had to delete the davlock file and restart apache to solve the issue.\n\nI guess this is a regression. Before remote helpers were introduced,\nthe dumb http-push program was able to release locks on the remote\nside on such signals.\n\n> So, this operation doesn't seem really atomic ?\n\nOverall, git-push over dav isn't atomic. At most, it is atomic at the\nindividual object level - for example, you won't get a blob with SHA-1\n\"abc123\" but hashes to a different SHA-1 value.\n\n> Another problem I see is the password in clear text in ~/.netrc to avoid\n>  to type passwords all the time.\n\nMight sound pathetic, but you could chmod it to make it readable only\nto yourself.\n\n> Is there any plan to address this problem ? There used to be the same\n> case in subversion (yep, sorry for the comparison), and they finally\n> addressed that by supporting GNOME Keyring and KWallet.\n> For what I saw, http support is provided thru libcurl, so it may not be\n> that easy.\n\nYou said it yourself. :)\n\nIf you really think .netrc isn't your cup of tea, you could tunnel through ssh.\n\n-- \nCheers,\nRay Chuan\n"},{"id":"135078","messageId":"vpqr5ohz6bk.fsf@bauges.imag.fr","threadId":"22724","inReplyTo":"hllp07$o78$1@ger.gmane.org","subject":"Re: Is git over http (git-http-push) ready for production ?","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2010-02-19T13:46:39Z","receivedAt":"2010-02-19T13:46:39Z","isPatch":false,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Fabien <fabien.ubuntu@gmail.com> writes:\n\n> Hi,\n>\n> Following my last email about locks problem with reiserfs (see\n> git-http-push (git v1.5) problems with DAVLockDB on reiserfs FS), I was\n> wondering how reliable is git-http-push.\n\nMy experience is: it mostly works, but sometimes break, usually\ndoesn't give very helpfull messages when you mis-use it, ...\n\nRather clearly, git-http-push doesn't have as many users as ssh://,\nread-only http:// and git://, and therefore doesn't have as many\ntesters/developers.\n\nIf \"production\" means \"many users\" and \"need for something\nunbreakable\", then perhaps the HTTP smart protocol is more promising.\n\nBut that's just my experience.\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"135081","messageId":"20100219140419.GB31796@Knoppix","threadId":"22724","inReplyTo":"hllp07$o78$1@ger.gmane.org","subject":"Re: Is git over http (git-http-push) ready for production ?","fromName":"Ilari Liusvaara","fromEmail":"ilari.liusvaara@elisanet.fi","sentAt":"2010-02-19T14:04:19Z","receivedAt":"2010-02-19T14:04:19Z","isPatch":false,"sender":{"key":"ilari.liusvaara@elisanet.fi","avatar":null},"body":"On Fri, Feb 19, 2010 at 11:26:16AM +0100, Fabien wrote:\n> Hi,\n> \n> Following my last email about locks problem with reiserfs (see\n> git-http-push (git v1.5) problems with DAVLockDB on reiserfs FS), I was\n> wondering how reliable is git-http-push.\n\n> Another problem I see is the password in clear text in ~/.netrc to avoid\n>   to type passwords all the time.\n> \n> Finally, hooks don't work when using git over http (yep, I know, it's a\n> \"dumb\" protocol)...\n\n1.6.6 introduced Smart HTTP. It is much more efficient, can run hooks and\nhas same kind of atomicity guarantees as ssh://, but it has few shorcomings:\n\n- Requires server support (CGI script & Git 1.6.6+)\n- Hook messages don't work (at least with 1.6.6.X/1.7.0.X)\n- Requires 1.6.6+ on client side\n- Authentication still sucks (no surprise, auth with HTTP just plain sucks).\n\nBut I regard HTTP fetch/push as backup for cases where git:// and ssh://\nare not possible.\n\n-Ilari\n"},{"id":"135083","messageId":"hlm9i0$ghd$1@ger.gmane.org","threadId":"22724","inReplyTo":"20100219140419.GB31796@Knoppix","subject":"Re: Is git over http (git-http-push) ready for production ?","fromName":"Fabien","fromEmail":"fabien.ubuntu@gmail.com","sentAt":"2010-02-19T15:08:50Z","receivedAt":"2010-02-19T15:08:50Z","isPatch":false,"sender":{"key":"fabien.ubuntu@gmail.com","avatar":null},"body":"Ilari Liusvaara wrote:\n> 1.6.6 introduced Smart HTTP. It is much more efficient, can run hooks and\n> has same kind of atomicity guarantees as ssh://, but it has few shorcomings:\n> \n> - Requires server support (CGI script & Git 1.6.6+)\n> - Hook messages don't work (at least with 1.6.6.X/1.7.0.X)\n> - Requires 1.6.6+ on client side\n> - Authentication still sucks (no surprise, auth with HTTP just plain sucks).\n\nOk, thanks ! I wasn't aware of this new feature.\nI'll give it a try.\nWhat do you mean by \"Hook messages don't work\" ?\n\nThanks.\n\n--\nFabien\n"},{"id":"135106","messageId":"ec874dac1002191105m6022ecdfv932a7e52eb66eb32@mail.gmail.com","threadId":"22724","inReplyTo":"hlm9i0$ghd$1@ger.gmane.org","subject":"Re: Is git over http (git-http-push) ready for production ?","fromName":"Shawn Pearce","fromEmail":"spearce@spearce.org","sentAt":"2010-02-19T19:05:12Z","receivedAt":"2010-02-19T19:05:12Z","isPatch":false,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"On Fri, Feb 19, 2010 at 7:08 AM, Fabien <fabien.ubuntu@gmail.com> wrote:\n> Ilari Liusvaara wrote:\n>> 1.6.6 introduced Smart HTTP. It is much more efficient, can run hooks and\n>> has same kind of atomicity guarantees as ssh://, but it has few shorcomings:\n>>\n>> - Requires server support (CGI script & Git 1.6.6+)\n>> - Hook messages don't work (at least with 1.6.6.X/1.7.0.X)\n>> - Requires 1.6.6+ on client side\n>> - Authentication still sucks (no surprise, auth with HTTP just plain sucks).\n>\n> Ok, thanks ! I wasn't aware of this new feature.\n> I'll give it a try.\n> What do you mean by \"Hook messages don't work\" ?\n\nNormally over ssh:// output from a hook script is sent to the client's\nstderr stream.  This is handled by the SSH connection itself, not by\nGit, as SSH has two data channels from server to client (stdout,\nstderr).  Under http:// we only have one data stream, so only the git\ndata that normally goes over stdout gets sent to  the client.  The\nhook messages that are sent to stderr wind up in the HTTP server's\nerror log file.\n\nI've posted patches to multiplex these messages into the git data\nstream, but as far as I know, they aren't in a shipping version of Git\nyet.\n"}]}