SVN объединить ствол в ветку удаления файлов

Я пытаюсь сделать что-то, казалось бы, простое, но у меня возникают проблемы.

По сути, у меня есть репозиторий SVN, он имеет ствол и ветку, которая была создана из ревизии 122.

Я добавил файл (src/utils/foo.py) в ветку, передал его как ревизию 128, все хорошо.

Тем не менее, было несколько коммитов (а именно (123,124,125,126,127) в ствол, который я хотел бы в моей ветке. Поэтому я делаю что-то вроде:

$ svn merge -r122:127 ^/projects/my_project/trunk/src/utils .
--- Merging r123 through r127 into '.':
D    foo.py

Упс! Он удалил мой файл! Что я делаю не так, чтобы этого не случилось?

3 ответа

Решение

Это может иметь большее отношение к папке, которой принадлежит файл, чем к самому файлу. Я полагаю, что большинство инструментов SCM рассматривают папки как файлы в том смысле, что они также имеют версии. Возможно, вам придется подняться на один уровень выше, чтобы убедиться, что папка "utils" также объединена.

Редактировать:

Просто для пояснения: папка "utils" записывает, что файл "foo.py" является его дочерним элементом, поэтому, даже если foo.py существует в trunk, без объединения обновленной папки utils он может не отображаться.,

Сначала вы находитесь в правильном каталоге, где вы выполнили команду svn merge? Вторые никогда не объединять только подпапки в SVN. Просто используйте

svn merge ... ^/projects/my_project/trunk 

в корень вашей рабочей копии. Это будет лучше, в частности, в связи с историей слияния (svn:mergeinfo).

Ах! Кто-то действительно слил ветку в ствол, который добавил файл в ствол, но затем откатил этот коммит, удалив файл из ствола. Спасибо за помощь. Хороший урок о том, как работает SVN Merge.

Другие вопросы по тегам