Как переустановить с pygit2?

Я застрял , пытаясь реализовать git rebaseс pygit2.

Предполагая эту историю репо, как переустанавливать topicна masterиспользование pygit2? (т. е. эквивалент git rebase master topic):

      A---B---C topic
     /
D---E---F---G master

Согласно документации pygit2 , merge_treesможно использовать с этой целью. До сих пор я получил:

import pygit2 as git

repo = git.Repository(".")

master = repo.lookup_branch("master")
topic = repo.lookup_branch("topic")

base = repo.merge_base(master.target, topic.target)

master_tree = repo.get(master.target).tree
topic_tree = repo.get(topic.target).tree
base_tree = repo.get(base).tree

index = repo.merge_trees(base_tree,topic,master)
tree_id = index.write_tree(repo)

sig = git.Signature('FooBar', 'foo@bar.org')

# this is not going to work -> several commits need to be re-created
repo.create_commit(topic.name,sig,sig,"msg?",tree_id,[master.target])

Это не удается с ошибкой GitError: failed to create commit: current tip is not the first parent.

Другие вопросы SO ( здесь и здесь ) обсуждают ускоренные слияния, но не правильную перезагрузку.

python,git,pygit2,

2

Ответов: 0

Как переустановить с pygit2?

Я застрял , пытаясь реализовать git rebaseс pygit2.

Предполагая эту историю репо, как переустанавливать topicна masterиспользование pygit2? (т. е. эквивалент git rebase master topic):

      A---B---C topic
     /
D---E---F---G master

Согласно документации pygit2 , merge_treesможно использовать с этой целью. До сих пор я получил:

import pygit2 as git

repo = git.Repository(".")

master = repo.lookup_branch("master")
topic = repo.lookup_branch("topic")

base = repo.merge_base(master.target, topic.target)

master_tree = repo.get(master.target).tree
topic_tree = repo.get(topic.target).tree
base_tree = repo.get(base).tree

index = repo.merge_trees(base_tree,topic,master)
tree_id = index.write_tree(repo)

sig = git.Signature('FooBar', 'foo@bar.org')

# this is not going to work -> several commits need to be re-created
repo.create_commit(topic.name,sig,sig,"msg?",tree_id,[master.target])

Это не удается с ошибкой GitError: failed to create commit: current tip is not the first parent.

Другие вопросы SO ( здесь и здесь ) обсуждают ускоренные слияния, но не правильную перезагрузку.

02питон, мерзавец, pygit2,
Похожие вопросы