I am using GitPython. Below I print the total number of lines changed in a specific commit:
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)
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.
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