Подрывная деятельность:что означает “Целевой путь не существует” при слиянии?
Вопрос
Используя subversion 1.5, у меня есть ветвь B, которая была ответвлена от ветви A.После выполнения работы в обеих ветвях я перехожу к объединению изменений из A в B (используя svn merge http://path/to/A
в рабочем каталоге B) и получаем svn: Target path does not exist
.Что это значит?
Решение
Это означает, что в файле в ветке A произошло изменение, которое Subversion пыталась объединить с веткой B, но файл не существует в ветке B, поэтому ему некуда объединить изменения.Например:
- Создать ветку B
- Изменить/README
- Удалить B/README
- Объединить A -> B
Теперь изменение в README не может быть применено в ветке B, поскольку файл там был удален.
Редактировать:Это приведет к конфликт деревьев в Subversion 1.6.
Другие советы
Я получал эту ошибку с svn 1.5.4, даже когда не было несовместимых изменений.Обновление до 1.5.5 исправило это для меня.
У меня возникла эта проблема, потому что мой ствол и ветка имели странную историю.
Вот так:
/---------\
trunk -------+---+ +---\
\-----------BOOM!
Объединение trunk -> branch не сработало.
Однако слияние ветви -> магистрали сработало.
/---------\
trunk -------+---+ +---+-----
\---------/
Вероятно, потому, что в стволе была лучшая информация о последнем предке, которого они разделяли.
В моем случае я не был готов к обратному слиянию с trunk, но я смог создать новую ветку из trunk и объединить туда свою старую ветку.
/---------\
trunk -------+---+ +---+-------
\ \---+--
\-------------/