Как сделать git-слияние с помощью pygit2
Я пытаюсь слить ветку в мастер:
repo = pygit2.Repository("/path/to/repo/")
branch = repo.lookup_branch("upstream/branch", pygit2.GIT_BRANCH_REMOTE)
oid = branch.target
merge_result = repo.merge(oid)
И merge_result содержит ff oid (как в документации), и репо не изменилось.
Что мне делать дальше, чтобы изменить хранилище?
1 ответ
Решение
Функция слияния выполняет слияние (или в этом случае говорит, что вы можете его пропустить), но решать вам (или пользователю инструмента), хотите ли вы переместить текущую ветку на новую позицию.
Это то же самое, что и в любой другой момент, когда вы хотите изменить ссылку. В этом случае вы хотите попасть в текущую ветку, что вы делаете через разрешение HEAD
на несимвольную ссылку и установление ее цели.
repo.lookup_reference('HEAD').resolve().target = merge_result.fastforward_oid