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.