Mercurial удалить файл во время слияния - PullRequest
2 голосов
/ 21 февраля 2012

У меня есть ветка с именем "развивающихся" с определенным статусом o файлы с выпуском 500 с a.java и b.java внутри.

STEP - a.java был удален из разработки и затем помещен (501). - ветка создана из 501 с именем (my_branch); - в my_branch я добавил новую версию a.java и новый файл c.java;

ПРОБЛЕМА Когда я пытаюсь объединить my_branch с развивающимся, mercurial удаляет a.java. Результатом является my_branch с b.java и c.java;

Что я думаю, так это то, что Mercurial знает об удалении a.java в основном и без предупреждения удаляет файл, даже если я снова добавил его в my_branch.

Как я могу принудительно объединить файл my_branch?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

Я только что попробовал описанный сценарий. Mercurial не удаляет новую версию ранее удаленного файла.

Шаги для воспроизведения:

  • Создать новый репозиторий hg
  • Создать новый файл a.txt, зафиксировать изменения - версия 1
  • Удалить файл a.txt, зафиксировать изменения - версия 2
  • Создание файла b.txt, принятие изменений - версия 3
  • Обновление до версии 2, hg update -C 2
  • Создайте заново новый файл a.txt, зафиксируйте изменения (создаст новый заголовок)

Слияние двух голов приводит к файлам a.txt и b.txt

0 голосов
/ 21 февраля 2012

Я с @ bbaja42, что в вашем описании отсутствуют некоторые детали - этого не происходит при обычном использовании.

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

hg update my_branch
hg merge developing
hg revert -r my_branch a.java
hg add a.java # might be unnecessary, but it can't hurt
hg commit -m 'committed the merge with a.java from my_branch in place'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...