GitPython "blame" does not give me all changed lines
Question: I am using GitPython. Below I print the total number of lines changed in a
specific commit: `f092795fe94ba727f7368b63d8eb1ecd39749fc4`:

    
    
    from git import Repo
    
    repo = Repo("C:/Users/shiro/Desktop/lucene-solr/")
    
    sum_lines = 0
    for blame_commit, lines_list in repo.blame('HEAD', 'lucene/core/src/java/org/apache/lucene/analysis/Analyzer.java'):
        if blame_commit.hexsha == 'f092795fe94ba727f7368b63d8eb1ecd39749fc4':
            sum_lines += len(lines_list)
    print sum_lines
    

The output is 38. However, if you simply go to
<https://github.com/apache/lucene-
solr/commit/f092795fe94ba727f7368b63d8eb1ecd39749fc4> and look at the commit
yourself for file `/lucene/analysis/Analyzer.java`, the actual number of lines
changed is not 38 but it is 47. Some lines are completely missing.

Why am I getting a wrong value ?


Answer: `git blame` tells you which commit last changed each line in a given file.

You're not counting the number of lines changed in that commit, but rather the
number of lines in the file at your current HEAD that were last modified by
that specific commit.

Changing `HEAD` to `f092795fe94ba727f7368b63d8eb1ecd39749fc4` should give you
the result you expect.

    
    
    $ git blame f092795fe94ba727f7368b63d8eb1ecd39749fc4 ./lucene/core/src/java/org/apache/lucene/analysis/Analyzer.java | grep f092795 | wc -l
    47
    $ git blame master ./lucene/core/src/java/org/apache/lucene/analysis/Analyzer.java | grep f092795 | wc -l
    38
    

