Я работаю над скриптом 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
, который у меня есть с некоторыми конфликтами, как мне привести мой рабочий каталог в состояние, представляемое им, чтобы я мог вернуться в оболочку и позволить пользователю разрешить их? Кажется, я не могу его записать (он будет жаловаться, что не может записать индекс, который не полностью объединен), и я не вижу очевидного способа установить для него мой текущий индекс.