{"thread":{"id":"37354","subject":"Understanding behavior of git blame -M","startedAt":"2014-08-15T13:40:09Z","lastAt":"2014-08-18T11:41:43Z","messageCount":8,"participants":["Sokolov, Konstantin (ext)","David Kastrup","Junio C Hamano","Duy Nguyen"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"247743","messageId":"71BF70CE41AEE741896AF3A5450D86F11F28C762@DEFTHW99EH3MSX.ww902.siemens.net","threadId":"37354","inReplyTo":null,"subject":"Understanding behavior of git blame -M","fromName":"Sokolov, Konstantin (ext)","fromEmail":"konstantin.sokolov.ext@siemens.com","sentAt":"2014-08-15T13:40:09Z","receivedAt":"2014-08-15T13:40:09Z","isPatch":false,"sender":{"key":"konstantin.sokolov.ext@siemens.com","avatar":null},"body":"Hi Folks,\n\nI'm trying to understand the behavior of git blame -M and find that the actual results differ from what I understood from the documentation. I've already asked longer time ago on stackoverflow and on the user mailing list without any satisfactory results. So here is the example:\n\nInitial content of file.txt (2cd9f7f)\n\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\nCCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\nDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\nEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\nGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\nFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n\nMove line B to the middle (d4bbd97e):\n\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nCCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\nDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\nBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\nEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\nGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\nFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n\n>git blame -s -n -f -w -M20 file.txt\n^2cd9f7f 1 1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n^2cd9f7f 3 2) CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n^2cd9f7f 4 3) DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\nd4bbd97e 4 4) BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n^2cd9f7f 5 5) EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n^2cd9f7f 6 6) GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n^2cd9f7f 7 7) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n\nI wonder, why line B is not recognized as moved. According to the documentation, I would expect git blame to report that it originates from line 2 in revision 2cd9f7f. Can anybody explain the behavior?\n\nThanks in advance\nKonstantin\n"},{"id":"247744","messageId":"874mxderwj.fsf@fencepost.gnu.org","threadId":"37354","inReplyTo":"71BF70CE41AEE741896AF3A5450D86F11F28C762@DEFTHW99EH3MSX.ww902.siemens.net","subject":"Re: Understanding behavior of git blame -M","fromName":"David Kastrup","fromEmail":"dak@gnu.org","sentAt":"2014-08-15T14:42:04Z","receivedAt":"2014-08-15T14:42:04Z","isPatch":false,"sender":{"key":"dak@gnu.org","avatar":"https://avatars.githubusercontent.com/u/52141349?v=4"},"body":"\"Sokolov, Konstantin (ext)\" <konstantin.sokolov.ext@siemens.com> writes:\n\n> Hi Folks,\n>\n> I'm trying to understand the behavior of git blame -M and find that\n> the actual results differ from what I understood from the\n> documentation. I've already asked longer time ago on stackoverflow and\n> on the user mailing list without any satisfactory results. So here is\n> the example:\n>\n> Initial content of file.txt (2cd9f7f)\n>\n> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n> CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n> DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n> EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n> GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n>\n> Move line B to the middle (d4bbd97e):\n>\n> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n> CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n> DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n> EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n> GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n>\n>>git blame -s -n -f -w -M20 file.txt\n> ^2cd9f7f 1 1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n> ^2cd9f7f 3 2) CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n> ^2cd9f7f 4 3) DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n> d4bbd97e 4 4) BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n> ^2cd9f7f 5 5) EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n> ^2cd9f7f 6 6) GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n> ^2cd9f7f 7 7) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n>\n> I wonder, why line B is not recognized as moved. According to the\n> documentation, I would expect git blame to report that it originates\n> from line 2 in revision 2cd9f7f. Can anybody explain the behavior?\n\nSomeone had reasons.  diff_hunks in builtin/blame.c is once called with\n0 as third argument, once with 1.  Change the latter call to using 0 as\nwell and you get your expected result:\n\ndak@lola:/tmp/test$ /usr/local/tmp/git/git blame -s -n -f -w -M20 file.txt\n^2cab496 file.txt 1 1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n^2cab496 file.txt 3 2) CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n^2cab496 file.txt 4 3) DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n^2cab496 file.txt 2 4) BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n^2cab496 file.txt 5 5) EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n^2cab496 file.txt 6 6) GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n^2cab496 file.txt 7 7) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n\nThe function diff_hunks is a wrapper for the diff engine.  Putting the\ncontext length explicitly into this wrapper (rather than not passing an\nargument and just setting the context length to zero anyway in the\nfunction) clearly indicates that somebody _wanted_ it called with\ndifferent values.\n\nThere is no documentation or rationale in the file _why_ as far as\nI remember.  Maybe it can crash or end up in an infinite loop.  Maybe it\ncould do so at one point of time but no longer does.\n\nMaybe Git is just a puzzle from genius to genius.  Good luck figuring it\nout.\n\nI have not touched this when rewriting git-blame recently, and I am not\ninterested in touching it.  I stand absolutely nothing to gain from\nworking on Git.\n\n-- \nDavid Kastrup\n"},{"id":"247747","messageId":"xmqq7g291y21.fsf@gitster.dls.corp.google.com","threadId":"37354","inReplyTo":"71BF70CE41AEE741896AF3A5450D86F11F28C762@DEFTHW99EH3MSX.ww902.siemens.net","subject":"Re: Understanding behavior of git blame -M","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-08-15T17:07:34Z","receivedAt":"2014-08-15T17:07:34Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Sokolov, Konstantin (ext)\" <konstantin.sokolov.ext@siemens.com>\nwrites:\n\n>>git blame -s -n -f -w -M20 file.txt\n> ^2cd9f7f 1 1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n> ^2cd9f7f 3 2) CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n> ^2cd9f7f 4 3) DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n> d4bbd97e 4 4) BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n> ^2cd9f7f 5 5) EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n> ^2cd9f7f 6 6) GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n> ^2cd9f7f 7 7) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n>\n> I wonder, why line B is not recognized as moved. According to the\n> documentation, I would expect git blame to report that it\n> originates from line 2 in revision 2cd9f7f. Can anybody explain\n> the behavior?\n\nInteresting.  Would it make a difference if you move B further away\nfrom lines A and C?\n"},{"id":"247756","messageId":"71BF70CE41AEE741896AF3A5450D86F11F28C786@DEFTHW99EH3MSX.ww902.siemens.net","threadId":"37354","inReplyTo":"874mxderwj.fsf@fencepost.gnu.org","subject":"AW: Understanding behavior of git blame -M","fromName":"Sokolov, Konstantin (ext)","fromEmail":"konstantin.sokolov.ext@siemens.com","sentAt":"2014-08-15T20:54:48Z","receivedAt":"2014-08-15T20:54:48Z","isPatch":false,"sender":{"key":"konstantin.sokolov.ext@siemens.com","avatar":null},"body":"Hi David,\n\nthank you very much for the exhaustive answer. The keyword \"hunk\" made me try a little bit more. So I realized that -M works as expected when at least three lines are moved. \n\nFrom your answer I discern that you find the current behavior correct. In my opinion, it diverges at least from the documented behavior, as the documentation doesn't mention this \"number of lines\" aspect but rather speaks about \"number of alphanumeric characters\". \n\nRegards\nKonstantin\n\n-----Ursprüngliche Nachricht-----\nVon: David Kastrup [mailto:dak@gnu.org] \nGesendet: Freitag, 15. August 2014 16:42\nAn: Sokolov, Konstantin (ext)\nCc: git@vger.kernel.org\nBetreff: Re: Understanding behavior of git blame -M\n\n\"Sokolov, Konstantin (ext)\" <konstantin.sokolov.ext@siemens.com> writes:\n\n> Hi Folks,\n>\n> I'm trying to understand the behavior of git blame -M and find that \n> the actual results differ from what I understood from the \n> documentation. I've already asked longer time ago on stackoverflow and \n> on the user mailing list without any satisfactory results. So here is \n> the example:\n>\n> Initial content of file.txt (2cd9f7f)\n>\n> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n> CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n> DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n> EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n> GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n>\n> Move line B to the middle (d4bbd97e):\n>\n> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n> CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n> DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n> EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n> GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n> FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n>\n>>git blame -s -n -f -w -M20 file.txt\n> ^2cd9f7f 1 1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n> ^2cd9f7f 3 2) CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n> ^2cd9f7f 4 3) DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n> d4bbd97e 4 4) BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n> ^2cd9f7f 5 5) EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n> ^2cd9f7f 6 6) GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n> ^2cd9f7f 7 7) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n>\n> I wonder, why line B is not recognized as moved. According to the \n> documentation, I would expect git blame to report that it originates \n> from line 2 in revision 2cd9f7f. Can anybody explain the behavior?\n\nSomeone had reasons.  diff_hunks in builtin/blame.c is once called with 0 as third argument, once with 1.  Change the latter call to using 0 as well and you get your expected result:\n\ndak@lola:/tmp/test$ /usr/local/tmp/git/git blame -s -n -f -w -M20 file.txt\n^2cab496 file.txt 1 1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n^2cab496 file.txt 3 2) CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n^2cab496 file.txt 4 3) DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n^2cab496 file.txt 2 4) BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n^2cab496 file.txt 5 5) EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n^2cab496 file.txt 6 6) GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n^2cab496 file.txt 7 7) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n\nThe function diff_hunks is a wrapper for the diff engine.  Putting the context length explicitly into this wrapper (rather than not passing an argument and just setting the context length to zero anyway in the\nfunction) clearly indicates that somebody _wanted_ it called with different values.\n\nThere is no documentation or rationale in the file _why_ as far as I remember.  Maybe it can crash or end up in an infinite loop.  Maybe it could do so at one point of time but no longer does.\n\nMaybe Git is just a puzzle from genius to genius.  Good luck figuring it out.\n\nI have not touched this when rewriting git-blame recently, and I am not interested in touching it.  I stand absolutely nothing to gain from working on Git.\n\n--\nDavid Kastrup\n"},{"id":"247757","messageId":"71BF70CE41AEE741896AF3A5450D86F11F28C793@DEFTHW99EH3MSX.ww902.siemens.net","threadId":"37354","inReplyTo":"xmqq7g291y21.fsf@gitster.dls.corp.google.com","subject":"AW: Understanding behavior of git blame -M","fromName":"Sokolov, Konstantin (ext)","fromEmail":"konstantin.sokolov.ext@siemens.com","sentAt":"2014-08-15T20:57:14Z","receivedAt":"2014-08-15T20:57:14Z","isPatch":false,"sender":{"key":"konstantin.sokolov.ext@siemens.com","avatar":null},"body":"No. The distance seems to have no influence. In the meantime I've found out (as mentioned in my other reply) that the movements are detected if at least three lines are moved.\n\n-----Ursprüngliche Nachricht-----\nVon: Junio C Hamano [mailto:gitster@pobox.com] \nGesendet: Freitag, 15. August 2014 19:08\nAn: Sokolov, Konstantin (ext)\nCc: git@vger.kernel.org\nBetreff: Re: Understanding behavior of git blame -M\n\n\"Sokolov, Konstantin (ext)\" <konstantin.sokolov.ext@siemens.com>\nwrites:\n\n>>git blame -s -n -f -w -M20 file.txt\n> ^2cd9f7f 1 1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n> ^2cd9f7f 3 2) CCCCCCCCCCCCCCCCCCCCCCCC2222222222222222222222222\n> ^2cd9f7f 4 3) DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n> d4bbd97e 4 4) BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n> ^2cd9f7f 5 5) EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n> ^2cd9f7f 6 6) GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n> ^2cd9f7f 7 7) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n>\n> I wonder, why line B is not recognized as moved. According to the \n> documentation, I would expect git blame to report that it originates \n> from line 2 in revision 2cd9f7f. Can anybody explain the behavior?\n\nInteresting.  Would it make a difference if you move B further away from lines A and C?\n"},{"id":"247762","messageId":"CACsJy8DhfUY7uL91UGZUbC4g7WsMKkmj+7BF3xZ9RZyf8NcB4g@mail.gmail.com","threadId":"37354","inReplyTo":"874mxderwj.fsf@fencepost.gnu.org","subject":"Re: Understanding behavior of git blame -M","fromName":"Duy Nguyen","fromEmail":"pclouds@gmail.com","sentAt":"2014-08-16T00:06:28Z","receivedAt":"2014-08-16T00:06:28Z","isPatch":false,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Fri, Aug 15, 2014 at 9:42 PM, David Kastrup <dak@gnu.org> wrote:\n> The function diff_hunks is a wrapper for the diff engine.  Putting the\n> context length explicitly into this wrapper (rather than not passing an\n> argument and just setting the context length to zero anyway in the\n> function) clearly indicates that somebody _wanted_ it called with\n> different values.\n>\n> There is no documentation or rationale in the file _why_ as far as\n> I remember.  Maybe it can crash or end up in an infinite loop.  Maybe it\n> could do so at one point of time but no longer does.\n\nNot sure if it helps, but ctxlen = 1 seems to be added back in d24bba8\n(git-pickaxe -M: blame line movements within a file. - 2006-10-19), if\nI track the changes correctly.\n-- \nDuy\n"},{"id":"247771","messageId":"87sikwdihs.fsf@fencepost.gnu.org","threadId":"37354","inReplyTo":"71BF70CE41AEE741896AF3A5450D86F11F28C786@DEFTHW99EH3MSX.ww902.siemens.net","subject":"Re: AW: Understanding behavior of git blame -M","fromName":"David Kastrup","fromEmail":"dak@gnu.org","sentAt":"2014-08-16T07:02:55Z","receivedAt":"2014-08-16T07:02:55Z","isPatch":false,"sender":{"key":"dak@gnu.org","avatar":"https://avatars.githubusercontent.com/u/52141349?v=4"},"body":"\"Sokolov, Konstantin (ext)\" <konstantin.sokolov.ext@siemens.com> writes:\n\n> Hi David,\n>\n> thank you very much for the exhaustive answer. The keyword \"hunk\" made\n> me try a little bit more. So I realized that -M works as expected when\n> at least three lines are moved.\n>\n> From your answer I discern that you find the current behavior\n> correct.\n\nI don't say any such thing and don't imply it.\n\n-- \nDavid Kastrup\n"},{"id":"247835","messageId":"71BF70CE41AEE741896AF3A5450D86F11F28C80E@DEFTHW99EH3MSX.ww902.siemens.net","threadId":"37354","inReplyTo":"xmqq7g291y21.fsf@gitster.dls.corp.google.com","subject":"RE: Understanding behavior of git blame -M","fromName":"Sokolov, Konstantin (ext)","fromEmail":"konstantin.sokolov.ext@siemens.com","sentAt":"2014-08-18T11:41:43Z","receivedAt":"2014-08-18T11:41:43Z","isPatch":false,"sender":{"key":"konstantin.sokolov.ext@siemens.com","avatar":null},"body":"Seems like not detecting single line movements is per design and just the documentation is not precise about this. Could such an enhancement be considered as a feature request? We're using git (blame) as a low level tool for building further functionality on top of it. Maintaining a custom version of git is a big step that we would like to avoid.\n\nRegards\nKonstantin\n"}]}