我正在研究一个需要合并的 Ruby 脚本。我想做的是,给定目标引用和合并尝试合并它们,如果存在合并冲突,则将控制权交还给用户以解决它们,基本上完全一样git merge
,因此用户可以处理冲突,然后调用git my-merge --continue
并从我们离开的地方继续。
我到目前为止是这样的:
merge_index = @repo.merge_commits(@commit, target_tip, options)
unless merge_index.conflicts?
options = {
:committer => @commit.committer,
:author => @commit.author,
:parents => [target_tip, @commit],
:message => merge_message,
:update_ref => @target.canonical_name,
:tree => merge_index.write_tree(@repo)
}
commit = Rugged::Commit.create(@repo, options)
else
# Here's where my unwritten code goes
end
问题来了:鉴于merge_index
我有一些冲突,我如何让我的工作目录进入它所代表的状态,以便我可以返回到 shell 并让用户解决它们?似乎我无法将其写出(它会抱怨它无法写出未完全合并的索引),并且我看不到将当前索引设置为它的明显方法。