2014-02-09 5 views
0

я пытаюсь объединить филиал в мастер:Как сделать 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 содержит Ф.Ф. OID (как в documentaion) и репо не изменился.

Что мне делать после изменения хранилища?

ответ

4

Функция слияния делает слияние (или в этом случае говорит вам, что вы можете пропустить его), но зависит от вас (или пользователя инструмента), хотите ли вы переместить текущую ветку в новую позицию.

Выполнение этого же, как и в любое другое время, когда вы хотите изменить ссылку. В этом случае вы хотите перейти к текущей ветке, которую вы делаете, разрешив HEAD на несимволическую ссылку и установив ее цель.

repo.lookup_reference('HEAD').resolve().target = merge_result.fastforward_oid 
+0

'' merge_result' ака repo.merge (подъязычная) 'возвращает для меня NoneType, и это означает, что я не могу тянуть' result.fastforward_oid'. Почему слияние возвращает что-то для вас? [Я не могу видеть это в документах] (http://www.pygit2.org/merge.html#pygit2.Repository.merge) – GuySoft

+0

Кажется, этот ответ устарел, согласно [этой фиксации в документах ] (https://github.com/libgit2/pygit2/commit/9a7348a9d0af13e2d4bcf2ab19e167e64f173cd7) – GuySoft

+1

Этот ответ охватывает v0.20, который был выпущен в то время. v0.21 фиксировал некоторую глупость, создавая метод слияния, всегда выполняющий слияние и вводя «merge_analysis», чтобы вы могли видеть, что такое связь между коммитами. –