{"thread":{"id":"18146","subject":"More git bisect modes","startedAt":"2009-03-05T09:49:26Z","lastAt":"2009-03-05T20:59:06Z","messageCount":9,"participants":["John Tapsell","Nanako Shiraishi","Junio C Hamano","Johannes Schindelin","Christian Couder"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"107041","messageId":"43d8ce650903050149u4ca98444w28efceb9084efa68@mail.gmail.com","threadId":"18146","inReplyTo":null,"subject":"More git bisect modes","fromName":"John Tapsell","fromEmail":"johnflux@gmail.com","sentAt":"2009-03-05T09:49:26Z","receivedAt":"2009-03-05T09:49:26Z","isPatch":false,"sender":{"key":"johnflux@gmail.com","avatar":"https://gravatar.com/avatar/25f70d4c0f96396b84a2e34bcd9bdc233462c7b4be29b5fdca8266fc53f30b0c?d=mp&s=160"},"body":"Hi,\n\n  Although \"git bisect\" is called, well, bisect, it would be nice to\nhave other modes.\n\n* A completely linear version - check every version.  Particularly\nuseful after rebasing to make sure all the commits still compile.\n* An allow-for-mistakes-bisect.  This would use a bisection technique\nthat would allow for a minimum of 1 mistake when marking a commit good\nor bad.  This point isn't particularly to help those with fat fingers,\nbut for bugs that are subtle and for bugs that are caused by multiple\ncommits.  (I can go into the details of how to do such a bisect\nlater).\n* An exponential back-off.  Typically I know that HEAD is broken, and\nI don't know when it used to work.  It would be nice to exponentially\ngo back through the commits to find the first working commit, then\nbisect from there.\n\n\n  Before I start working on the code for any of these, do people like\nthis?  Would this fit into the 'git bisect' command?\n\nJohn\n"},{"id":"107042","messageId":"20090305190542.6117@nanako3.lavabit.com","threadId":"18146","inReplyTo":"43d8ce650903050149u4ca98444w28efceb9084efa68@mail.gmail.com","subject":"Re: More git bisect modes","fromName":"Nanako Shiraishi","fromEmail":"nanako3@lavabit.com","sentAt":"2009-03-05T10:05:42Z","receivedAt":"2009-03-05T10:05:42Z","isPatch":false,"sender":{"key":"nanako3@lavabit.com","avatar":"https://gravatar.com/avatar/3777b9e201c5883a62b1a6fdf7c53f2d712d1d80989146063ea861e33aad72a8?d=mp&s=160"},"body":"Quoting John Tapsell <johnflux@gmail.com>:\n\n> * An exponential back-off.  Typically I know that HEAD is broken, and\n> I don't know when it used to work.\n\nI thought 'git bisect' already worked with only bad commit(s) without any good commit for a long time?\n\n-- \nNanako Shiraishi\nhttp://ivory.ap.teacup.com/nanako3/\n"},{"id":"107047","messageId":"43d8ce650903050217m2885692dkcef08ab2a5f60082@mail.gmail.com","threadId":"18146","inReplyTo":"20090305190542.6117@nanako3.lavabit.com","subject":"Re: More git bisect modes","fromName":"John Tapsell","fromEmail":"johnflux@gmail.com","sentAt":"2009-03-05T10:17:22Z","receivedAt":"2009-03-05T10:17:22Z","isPatch":false,"sender":{"key":"johnflux@gmail.com","avatar":"https://gravatar.com/avatar/25f70d4c0f96396b84a2e34bcd9bdc233462c7b4be29b5fdca8266fc53f30b0c?d=mp&s=160"},"body":"2009/3/5 Nanako Shiraishi <nanako3@lavabit.com>:\n> Quoting John Tapsell <johnflux@gmail.com>:\n>\n>> * An exponential back-off.  Typically I know that HEAD is broken, and\n>> I don't know when it used to work.\n>\n> I thought 'git bisect' already worked with only bad commit(s) without any good commit for a long time?\n\nI believe this makes it start from the very first commit.  This\nprobably much further back than most people would actually want to\nstart from.\n(Also there seems to be a bug here, in that  'git bisect run' requires\nyou to have both a good and a bad commit.  Also the man page doesn't\ndocument this)\n\nJohn Tapsell\n"},{"id":"107050","messageId":"7vvdqo1csl.fsf@gitster.siamese.dyndns.org","threadId":"18146","inReplyTo":"43d8ce650903050217m2885692dkcef08ab2a5f60082@mail.gmail.com","subject":"Re: More git bisect modes","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-03-05T10:31:22Z","receivedAt":"2009-03-05T10:31:22Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"John Tapsell <johnflux@gmail.com> writes:\n\n> 2009/3/5 Nanako Shiraishi <nanako3@lavabit.com>:\n>> Quoting John Tapsell <johnflux@gmail.com>:\n>>\n>>> * An exponential back-off.  Typically I know that HEAD is broken, and\n>>> I don't know when it used to work.\n>>\n>> I thought 'git bisect' already worked with only bad commit(s) without any good commit for a long time?\n>\n> I believe this makes it start from the very first commit.  This\n> probably much further back than most people would actually want to\n> start from.\n> (Also there seems to be a bug here, in that  'git bisect run' requires\n> you to have both a good and a bad commit.  Also the man page doesn't\n> document this)\n\nHmm, interesting.  I am sure we will soon hear from Christian, but\npersonally I never felt the need for \"run\" to work without any bad one, as\nthe first few rounds would almost always end up to be a debugging session\nof the run script for me, as in:\n\n\t... oh, somebody broke this somewhere ...\n\t... write a validate script ...\n\t$ edit runme ; chmod +x runme\n        $ ./runme\n        ... yeah, it is broken and runme script detects breakage\n        $ git checkout HEAD~200\n        $ ./runme\n        ... ok, it used to work here and runme exits Ok\n        $ git bisect good\n        $ git bisect bad @{-1}\n        $ ./runme\n        ... ok, runme script appears to be ok\n        $ git bisect run ./runme\n"},{"id":"107059","messageId":"alpine.DEB.1.00.0903051207480.6524@intel-tinevez-2-302","threadId":"18146","inReplyTo":"7vvdqo1csl.fsf@gitster.siamese.dyndns.org","subject":"bisect run, was Re: More git bisect modes","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-03-05T11:09:17Z","receivedAt":"2009-03-05T11:09:17Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Thu, 5 Mar 2009, Junio C Hamano wrote:\n\n> [...] personally I never felt the need for \"run\" to work without any bad \n> one, as the first few rounds would almost always end up to be a \n> debugging session of the run script for me, as in:\n> \n> \t... oh, somebody broke this somewhere ...\n> \t... write a validate script ...\n> \t$ edit runme ; chmod +x runme\n>         $ ./runme\n>         ... yeah, it is broken and runme script detects breakage\n>         $ git checkout HEAD~200\n>         $ ./runme\n>         ... ok, it used to work here and runme exits Ok\n>         $ git bisect good\n>         $ git bisect bad @{-1}\n>         $ ./runme\n>         ... ok, runme script appears to be ok\n>         $ git bisect run ./runme\n\nThat reminds me of a personal gripe with \"bisect run\": You cannot use it \nlike this:\n\n\t$ git bisect run 'make test'\n\nas it interprets 'make test' as a name of an executable.  That makes \n'bisect run' rather less useful to me.\n\nCiao,\nDscho\n"},{"id":"107060","messageId":"43d8ce650903050318g6ab81e6es9869b9f526c5eb24@mail.gmail.com","threadId":"18146","inReplyTo":"alpine.DEB.1.00.0903051207480.6524@intel-tinevez-2-302","subject":"Re: bisect run, was Re: More git bisect modes","fromName":"John Tapsell","fromEmail":"johnflux@gmail.com","sentAt":"2009-03-05T11:18:08Z","receivedAt":"2009-03-05T11:18:08Z","isPatch":false,"sender":{"key":"johnflux@gmail.com","avatar":"https://gravatar.com/avatar/25f70d4c0f96396b84a2e34bcd9bdc233462c7b4be29b5fdca8266fc53f30b0c?d=mp&s=160"},"body":"2009/3/5 Johannes Schindelin <Johannes.Schindelin@gmx.de>:\n> Hi,\n>\n> On Thu, 5 Mar 2009, Junio C Hamano wrote:\n>\n>> [...] personally I never felt the need for \"run\" to work without any bad\n>> one, as the first few rounds would almost always end up to be a\n>> debugging session of the run script for me, as in:\n>>\n>>       ... oh, somebody broke this somewhere ...\n>>       ... write a validate script ...\n>>       $ edit runme ; chmod +x runme\n>>         $ ./runme\n>>         ... yeah, it is broken and runme script detects breakage\n>>         $ git checkout HEAD~200\n>>         $ ./runme\n>>         ... ok, it used to work here and runme exits Ok\n>>         $ git bisect good\n>>         $ git bisect bad @{-1}\n>>         $ ./runme\n>>         ... ok, runme script appears to be ok\n>>         $ git bisect run ./runme\n>\n> That reminds me of a personal gripe with \"bisect run\": You cannot use it\n> like this:\n>\n>        $ git bisect run 'make test'\n>\n> as it interprets 'make test' as a name of an executable.  That makes\n> 'bisect run' rather less useful to me.\n\nA very quick test seems to show that:\n\n$ git bisect run make test\n\nWorks as you want.  Maybe a quick example of this could be added to\nthe man page.\n\n>\n> Ciao,\n> Dscho\n>\n>\n"},{"id":"107061","messageId":"alpine.DEB.1.00.0903051231070.6524@intel-tinevez-2-302","threadId":"18146","inReplyTo":"43d8ce650903050318g6ab81e6es9869b9f526c5eb24@mail.gmail.com","subject":"Re: bisect run, was Re: More git bisect modes","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-03-05T11:31:41Z","receivedAt":"2009-03-05T11:31:41Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Thu, 5 Mar 2009, John Tapsell wrote:\n\n> 2009/3/5 Johannes Schindelin <Johannes.Schindelin@gmx.de>:\n>\n> > That reminds me of a personal gripe with \"bisect run\": You cannot use it\n> > like this:\n> >\n> >        $ git bisect run 'make test'\n> >\n> > as it interprets 'make test' as a name of an executable.  That makes\n> > 'bisect run' rather less useful to me.\n> \n> A very quick test seems to show that:\n> \n> $ git bisect run make test\n> \n> Works as you want.  Maybe a quick example of this could be added to\n> the man page.\n\nIndeed, the source code agrees with you.\n\nThanks,\nDscho\n"},{"id":"107103","messageId":"200903052153.41391.chriscool@tuxfamily.org","threadId":"18146","inReplyTo":"43d8ce650903050149u4ca98444w28efceb9084efa68@mail.gmail.com","subject":"Re: More git bisect modes","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2009-03-05T20:53:41Z","receivedAt":"2009-03-05T20:53:41Z","isPatch":false,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Le jeudi 5 mars 2009, John Tapsell a écrit :\n> Hi,\n>\n>   Although \"git bisect\" is called, well, bisect, it would be nice to\n> have other modes.\n>\n> * A completely linear version - check every version.  Particularly\n> useful after rebasing to make sure all the commits still compile.\n\nI will answer this one bellow along with the exponential back-off.\n\n> * An allow-for-mistakes-bisect.  This would use a bisection technique\n> that would allow for a minimum of 1 mistake when marking a commit good\n> or bad.  This point isn't particularly to help those with fat fingers,\n> but for bugs that are subtle and for bugs that are caused by multiple\n> commits.  (I can go into the details of how to do such a bisect\n> later).\n\nYeah, Ingo Molnar also asked for something like this. But I think it is \nquite complex. I hope it will be easier after the improvements I am \ncurrently working on. I hope to send something early next week.\n\n> * An exponential back-off.  Typically I know that HEAD is broken, and\n> I don't know when it used to work.  It would be nice to exponentially\n> go back through the commits to find the first working commit, then\n> bisect from there.\n\nI think your first idea above and this one could be implemented in a new \ncommand called for example \"git check\".\n\nIt could be used it like this:\n\n$ git check COMMAND $(git rev-list HEAD~10..)\n\nthat would check out each of the 10 last revisions and run COMMAND on each \none after check out, and at the end it could report about the exit code of \ncommand for each of these revisions.\n\nIt could be used also with tags like that:\n\n$ git check COMMAND $(git tag | tail -10)\n\nAfter that a --bisect flag could be implemented. That would automatically \ncall \"git bisect\" to bisect if the exit code changed from \"bad\" to \"good\" \nat one point.\n\nThen if one adds a --expo flag to \"git rev-list\" that could be used for the \nexponential back off you want.\n\n>   Before I start working on the code for any of these, do people like\n> this?  Would this fit into the 'git bisect' command?\n\nI think it would be usefull, but I don't think the first and last one would \nfit well into the \"git bisect\" command.\n\nBest regards,\nChristian.\n"},{"id":"107104","messageId":"200903052159.06537.chriscool@tuxfamily.org","threadId":"18146","inReplyTo":"43d8ce650903050217m2885692dkcef08ab2a5f60082@mail.gmail.com","subject":"Re: More git bisect modes","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2009-03-05T20:59:06Z","receivedAt":"2009-03-05T20:59:06Z","isPatch":false,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Le jeudi 5 mars 2009, John Tapsell a écrit :\n> 2009/3/5 Nanako Shiraishi <nanako3@lavabit.com>:\n> > Quoting John Tapsell <johnflux@gmail.com>:\n> >> * An exponential back-off.  Typically I know that HEAD is broken, and\n> >> I don't know when it used to work.\n> >\n> > I thought 'git bisect' already worked with only bad commit(s) without\n> > any good commit for a long time?\n>\n> I believe this makes it start from the very first commit.  This\n> probably much further back than most people would actually want to\n> start from.\n> (Also there seems to be a bug here, in that  'git bisect run' requires\n> you to have both a good and a bad commit.  Also the man page doesn't\n> document this)\n\nYeah you are right. Do you want to try to fix this bug ?\n\nThanks in advance,\nChristian.\n"}]}