Как к 'hg объединяются', не влияя на рабочий каталог?

Предположим что:

  • У меня есть repo под названием MyRepo.
  • Я отменил фиксацию изменений в своем рабочем каталоге.
  • Я делаю получение по запросу от Repo1, и это создает ответвление в MyRepo
  • Я хочу сделать слияние того, что я уже имел в своем repo с тем, что я только что вытянул.

Как описано здесь, процесс слияния изменяет состояние рабочего каталога.

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

Существует ли способ пройти процесс слияния, включая разрешение конфликтов вручную, не влияя на содержание мой рабочий каталог? Это может обработать быть сделанным во временных файлах только? Или я должен отложить свои изменения, сделать слияние и затем не отложить для восстановления моего рабочего dir к состоянию, которым это было перед слиянием?

6
задан Sylvain 9 March 2010 в 19:47
поделиться

5 ответов

Используйте расширения полку или чердак для временного хранения изменений во время слияния.

4
ответ дан 16 December 2019 в 21:38
поделиться

Я новичок в Mercurial, но не могли бы вы клонировать из своего локального репозитория и скопировать свою рабочую копию в клон? Затем вы могли бы выполнить слияние в оригинале? Вы бы сохранили состояние вашей рабочей копии в клоне, будучи свободным, чтобы разрешить изменение исходной рабочей копии.

Сначала проверьте это. Я никогда не делал этого в hg.

0
ответ дан 16 December 2019 в 21:38
поделиться

Просто сделайте это в клоне.

  1. Клонируйте MyRepo в MyRepo-слияние, которое потянет за собой все зафиксированные изменения, но не ваши незафиксированные.
  2. Внутри MyRepo-слияния выполните извлечение из Repo1.
  3. Внутри MyRepo-merger выполните все hg merge , которые вы хотите
  4. Внутри MyRepo-merger нажмите на Repo1 или исходный MyRepo

Возврат в MyRepo не приведет к изменению рабочего каталога MyRepo, так что это безопасное действие.

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

0
ответ дан 16 December 2019 в 21:38
поделиться

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

3
ответ дан 16 December 2019 в 21:38
поделиться

Вы можете клонировать свой репозиторий до последней отметки, объединить изменения с клоном, зафиксировать, а затем вытащить новый набор изменений из клонированного репозитория обратно в текущий.

1
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: