{"thread":{"id":"3590","subject":"Libify puzzle","startedAt":"2006-03-07T11:00:02Z","lastAt":"2006-03-07T15:40:26Z","messageCount":2,"participants":["Johannes Schindelin","Fredrik Kuivinen"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"17292","messageId":"Pine.LNX.4.63.0603071151520.14200@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"3590","inReplyTo":null,"subject":"Libify puzzle","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2006-03-07T11:00:02Z","receivedAt":"2006-03-07T11:00:02Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nI was just thinking a bit about teaching git-blame about renames, and hit \na problem: When rev-list stops because none of the parents has the file of \ninterest, the program should look if the parents contained a similar file \nwhich got deleted. But the commit's parents were explicitely culled!\n\nThe problem seems to affect more programs when we try to libify them: What \nused to be a pipe between two programs, can no longer just set \nsave_commit_buffer = 0 in the first stage, since the second might depend \non the buffer.\n\nWould the correct solution be something like reparse_commit(commit)?\n\nCiao,\nDscho\n"},{"id":"17299","messageId":"20060307154026.GA4457@c165.ib.student.liu.se","threadId":"3590","inReplyTo":"Pine.LNX.4.63.0603071151520.14200@wbgn013.biozentrum.uni-wuerzburg.de","subject":"Re: Libify puzzle","fromName":"Fredrik Kuivinen","fromEmail":"freku045@student.liu.se","sentAt":"2006-03-07T15:40:26Z","receivedAt":"2006-03-07T15:40:26Z","isPatch":false,"sender":{"key":"frekui@gmail.com","avatar":"https://avatars.githubusercontent.com/u/13770967?v=4"},"body":"On Tue, Mar 07, 2006 at 12:00:02PM +0100, Johannes Schindelin wrote:\n> Hi,\n> \n> I was just thinking a bit about teaching git-blame about renames, and hit \n> a problem: When rev-list stops because none of the parents has the file of \n> interest, the program should look if the parents contained a similar file \n> which got deleted. But the commit's parents were explicitely culled!\n> \n> The problem seems to affect more programs when we try to libify them: What \n> used to be a pipe between two programs, can no longer just set \n> save_commit_buffer = 0 in the first stage, since the second might depend \n> on the buffer.\n> \n> Would the correct solution be something like reparse_commit(commit)?\n> \n\nI have started on the rename support for git-blame but it isn't\nworking code yet.\n\nMy idea is to change the revision.h interface a bit. Instead having\nthe pathname pruning hard-coded in try_to_simplify_commit as it is\ntoday we could have a pointer to a function in the rev_info structure\nwhich is called the same way as try_to_simplify_commit is called\nnow. Then users of the revision walking interface could populate the\nrev_info structure with their own try_to_simplify_commit-like\nfunction. In the case of git-blame that function could then do the\nappropriate rename detection.\n\nThoughts/comments?\n\n- Fredrik\n"}]}