GitPython "blame" 没有给我所有更改的行
GitPython "blame" does not give me all changed lines
我正在使用 GitPython。下面我打印了特定提交中更改的总行数: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
输出为 38。但是,如果您只是转到 https://github.com/apache/lucene-solr/commit/f092795fe94ba727f7368b63d8eb1ecd39749fc4 并自己查看文件 /lucene/analysis/Analyzer.java
的提交,实际更改的行数不是 38,而是 47。有些行完全丢失了。
为什么我得到了错误的值?
git blame
告诉您哪个提交最后更改了给定文件中的每一行。
您计算的不是该提交中更改的行数,而是该特定提交最后修改的当前 HEAD 文件中的行数。
将 HEAD
更改为 f092795fe94ba727f7368b63d8eb1ecd39749fc4
应该会得到您期望的结果。
$ 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
我正在使用 GitPython。下面我打印了特定提交中更改的总行数: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
输出为 38。但是,如果您只是转到 https://github.com/apache/lucene-solr/commit/f092795fe94ba727f7368b63d8eb1ecd39749fc4 并自己查看文件 /lucene/analysis/Analyzer.java
的提交,实际更改的行数不是 38,而是 47。有些行完全丢失了。
为什么我得到了错误的值?
git blame
告诉您哪个提交最后更改了给定文件中的每一行。
您计算的不是该提交中更改的行数,而是该特定提交最后修改的当前 HEAD 文件中的行数。
将 HEAD
更改为 f092795fe94ba727f7368b63d8eb1ecd39749fc4
应该会得到您期望的结果。
$ 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