Большая часть документации Dulwich предполагает достаточное знание форматов / протоколов файлов Git.
Вы сможете открыть существующий репозиторий с помощью Repo
:
from dulwich.repo import Repo
x = Repo("/path/to/git/repo")
или создать новый:
x = Repo.init("/path/to/new/repo")
Чтобы получить diff дляконкретный коммит (diff с его первым родителем)
from dulwich.patch import write_tree_diff
commit = x[commit_id]
parent_commit = x[commit.parents[0]]
write_tree_diff(sys.stdout, x.object_store, parent_commit.tree, commit.tree)
Протокол Git позволяет только получать / отправлять пакеты, он не разрешает прямой доступ к определенным объектам в базе данных.Это означает, что для проверки удаленного репозитория сначала необходимо получить соответствующие коммиты из удаленного репозитория, а затем просмотреть их:
from dulwich.client import get_transport_and_path
client, path = get_transport_and_path(remote_url)
remote_refs = client.fetch(path, x)
print x[remote_refs["refs/heads/master"]]