Как «hg merge», не затрагивая рабочий каталог? - PullRequest
6 голосов
/ 09 марта 2010

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

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

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

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

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

Ответы [ 5 ]

4 голосов
/ 09 марта 2010

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

3 голосов
/ 09 марта 2010

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

1 голос
/ 09 марта 2010

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

0 голосов
/ 10 марта 2010

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

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

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

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

0 голосов
/ 09 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...