{"thread":{"id":"30010","subject":"git rev-list -S ?","startedAt":"2012-03-20T18:34:12Z","lastAt":"2012-03-21T11:14:50Z","messageCount":5,"participants":["Holger Hellmuth","Christopher Tiwald","Junio C Hamano","Jeff King","Thomas Rast"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"187351","messageId":"4F68CDA4.6060109@ira.uka.de","threadId":"30010","inReplyTo":null,"subject":"git rev-list -S ?","fromName":"Holger Hellmuth","fromEmail":"hellmuth@ira.uka.de","sentAt":"2012-03-20T18:34:12Z","receivedAt":"2012-03-20T18:34:12Z","isPatch":false,"sender":{"key":"hellmuth@ira.uka.de","avatar":null},"body":"I read the GsoC page about the ultimate tracking tool just now and \ncouldn't find the -S option in git rev-list documentation nor in 'What's \ncooking'. Stealth command or am I just blind?\n"},{"id":"187357","messageId":"20120320202124.GF3601@gmail.com","threadId":"30010","inReplyTo":"4F68CDA4.6060109@ira.uka.de","subject":"Re: git rev-list -S ?","fromName":"Christopher Tiwald","fromEmail":"christiwald@gmail.com","sentAt":"2012-03-20T20:21:24Z","receivedAt":"2012-03-20T20:21:24Z","isPatch":false,"sender":{"key":"christiwald@gmail.com","avatar":"https://avatars.githubusercontent.com/u/667276?v=4"},"body":"On Tue, Mar 20, 2012 at 07:34:12PM +0100, Holger Hellmuth wrote:\n> I read the GsoC page about the ultimate tracking tool just now and\n> couldn't find the -S option in git rev-list documentation nor in\n> 'What's cooking'. Stealth command or am I just blind?\n\nI use 'git log -S<string>' to pickaxe search my histories for commits\nthat affect <string> nigh daily. I can't find reference to it in\n'git rev-list', but I know similar functionality is available in\n'git diff'. Maybe it's just a typo in the wiki page?\n\n--\nChristopher Tiwald\n"},{"id":"187358","messageId":"7vaa3b570l.fsf@alter.siamese.dyndns.org","threadId":"30010","inReplyTo":"4F68CDA4.6060109@ira.uka.de","subject":"Re: git rev-list -S ?","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-03-20T20:53:14Z","receivedAt":"2012-03-20T20:53:14Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Holger Hellmuth <hellmuth@ira.uka.de> writes:\n\n> I read the GsoC page about the ultimate tracking tool just now and\n> couldn't find the -S option in git rev-list documentation...\n\nSlippery finger.\n\n|    $ git log -S'it drives an external\n|   an external' master Documentation/RelNotes\n\nis a way to find commits that introduced and then removed the block of\ntext to files in the named directory, starting at the tip of 'master'.\n\nMost of the \"ultimate tracking tool\" dream has already been realized in\n\"git blame\" except one major part.  Once you find where the blame lies,\nthe tool _could_ help the user to find where these blamed lines came from\nmore than it currently does.  Were they typed anew?  Were similar lines\nremoved by the commit from other files?  Often people run \"blame\" on a\nline range they are interested in, find the commits that were blamed, look\nat \"git show $the_found_commit\" to see if they can find similar lines in\ndeleted parts of other files and then finally run blame again on the\ndeleted line range of these other files starting from the parent commit of\nthe found commit to do this (and this needs to be repeated).  A good GUI\nshould be able to help this process quite a lot, if backed by a good logic\nto detect \"similar\" code blocks.\n"},{"id":"187362","messageId":"20120320220032.GA29233@sigill.intra.peff.net","threadId":"30010","inReplyTo":"7vaa3b570l.fsf@alter.siamese.dyndns.org","subject":"Re: git rev-list -S ?","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2012-03-20T22:00:32Z","receivedAt":"2012-03-20T22:00:32Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Mar 20, 2012 at 01:53:14PM -0700, Junio C Hamano wrote:\n\n> |    $ git log -S'it drives an external\n> |   an external' master Documentation/RelNotes\n> \n> is a way to find commits that introduced and then removed the block of\n> text to files in the named directory, starting at the tip of 'master'.\n> \n> Most of the \"ultimate tracking tool\" dream has already been realized in\n> \"git blame\" except one major part.  Once you find where the blame lies,\n> the tool _could_ help the user to find where these blamed lines came from\n> more than it currently does.  Were they typed anew?  Were similar lines\n> removed by the commit from other files?  Often people run \"blame\" on a\n> line range they are interested in, find the commits that were blamed, look\n> at \"git show $the_found_commit\" to see if they can find similar lines in\n> deleted parts of other files and then finally run blame again on the\n> deleted line range of these other files starting from the parent commit of\n> the found commit to do this (and this needs to be repeated).  A good GUI\n> should be able to help this process quite a lot, if backed by a good logic\n> to detect \"similar\" code blocks.\n\nRelated to this is the line-level history browser project. The idea was\nbasically to get a log-like view (i.e., reverse chronological commits)\nof a chunk of code, tracing the ancestry of a particular chunk of lines.\n\nThis was done by Bo Yang as a GSoC project in 2010, but the code still\nhasn't been merged. As I recall, it mostly works, but there are perhaps\nsome corner cases or ugly parts of the code still to be re-worked.\nThomas Rast was cleaning it up some, and could say more on the current\nstate.\n\n-Peff\n"},{"id":"187385","messageId":"874ntixl1x.fsf@thomas.inf.ethz.ch","threadId":"30010","inReplyTo":"20120320220032.GA29233@sigill.intra.peff.net","subject":"Re: git rev-list -S ?","fromName":"Thomas Rast","fromEmail":"trast@student.ethz.ch","sentAt":"2012-03-21T11:14:50Z","receivedAt":"2012-03-21T11:14:50Z","isPatch":false,"sender":{"key":"tr@thomasrast.ch","avatar":"https://avatars.githubusercontent.com/u/153510?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> On Tue, Mar 20, 2012 at 01:53:14PM -0700, Junio C Hamano wrote:\n>\n>> |    $ git log -S'it drives an external\n>> |   an external' master Documentation/RelNotes\n>> \n>> is a way to find commits that introduced and then removed the block of\n>> text to files in the named directory, starting at the tip of 'master'.\n>> \n>> Most of the \"ultimate tracking tool\" dream has already been realized in\n>> \"git blame\" except one major part.  Once you find where the blame lies,\n>> the tool _could_ help the user to find where these blamed lines came from\n>> more than it currently does.\n> \n> Related to this is the line-level history browser project. The idea was\n> basically to get a log-like view (i.e., reverse chronological commits)\n> of a chunk of code, tracing the ancestry of a particular chunk of lines.\n>\n> This was done by Bo Yang as a GSoC project in 2010, but the code still\n> hasn't been merged. As I recall, it mostly works, but there are perhaps\n> some corner cases or ugly parts of the code still to be re-worked.\n> Thomas Rast was cleaning it up some, and could say more on the current\n\nThis is all correct.  It mostly works, which is the main impediment to\nfurther work :-)  You can try it by merging\n\n  git://github.com/trast/git.git line-log-cleanup\n\nIt segfaults if you attempt to track more than one range, however.\n\nI have started some rewriting, which tries to phrase it more in terms of\nsimple operations on sets of lines, and pushed that as\n\n  git://github.com/trast/git.git line-log-WIP\n\nThis was successful in that the newly written code is easier to read and\ncompletely broken.\n\n-- \nThomas Rast\ntrast@{inf,student}.ethz.ch\n"}]}