Предоставляет ли gitpython (или, в крайнем случае, любой из API-интерфейсов git python) способ размещения выбранных фрагментов из файла в рабочем дереве, как это позволяет вам делать git add -i
?
Я думаю, что я могу увидеть, как получить итерацию ханков, используя difflib
в свойствах a_blob
и b_blob
git.diff.Diff
, но тогда как мне подготовить конкретный ханк?
И, для бонусных баллов, есть ли лучший способ перебрать изменения в файле, чем:
diff = repo.head.commit.diff(None)[0]
a = diff.a_blob.read().split(b'\n')
b = diff.b_blob.read().split(b'\n')
diff_generator = difflib.Differ().compare(a, b)
Я думаю о чем-то, что сравнивает потоки, вместо того, чтобы загружать всю партию в память, а затем разбивать ее на строки.