2014-01-15 4 views
1

Я только что спросил у другого разработчика, нужно ли им что-либо делать, когда появится это окно слияния. По-видимому, их курс по умолчанию заключался в том, чтобы просто закрыть окно немедленно.Mercurial: ретроспективно слияние версий

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

Итак, мы находимся в ситуации, когда есть ревизия x с изменениями, которые мы хотим, ревизия y с необходимыми изменениями и ревизия z, которая является слиянием x + y, но на самом деле просто содержит код из y.

Есть ли способ ретроспективно вернуться в инструмент слияния?

Я хотел бы запустить команду и получить окно meld, чтобы позволить мне объединиться в изменениях от y до текущей версии.

ответ

3

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

hg clone yourrepo testrepo 
cd testrepo 

Вы можете проверить код с ревизии x и повторить слияние. Это даст вам новую голову. Затем, если вы не вносили изменений с тех пор, вы можете использовать hg strip, чтобы избавиться от плохого. Если вы не хотите рисковать полосой, то слейте две головки, сообщив hg, чтобы версия кода была в хорошей версии. Если вы его проверили, как вы сразу же после его принятия, дайте аргумент -t internal:local, чтобы выбросить изменения из другого, плохого, голова. Это намного проще сделать, чем объяснить:

hg update x 
hg merge -r y 
hg commit -m 'Redo the merge.' 

Тогда либо:

hg strip z 

или:

hg merge -t internal:local -r z 
hg commit -m 'Get rid of the bad merge.' 

Вы можете посмотреть на состояние графа с очень полезным hg view расширение.

Еще раз, я проверил это на игрушечном репозитории. Сделайте это первым!

+1

Резервное копирование действительно не нужно - каждый может вернуться в необходимый набор изменений и повторить слияние снова и снова, если необходимо: «плохие слияния» просто добавят бесполезные новые HEADS для затронутой ветки –

+0

полоса - плохая идея (для уже настроенного хранилища) КСТАТИ –

Смежные вопросы