Как вы наверняка обнаружили, копирование в целевой каталог, который уже существует , не будет работать:
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk
, поскольку транк уже существует, поэтому вы получите:
svn://my_project/trunk/1.1
Использование слияния имеет прискорбное свойство не хранить историю тега vendor 1.1 в subversion до версии 1.5, которая ввела отслеживание слияния. Вам может быть все равно. В этом случае слияние будет правильным решением:
svn co svn://my_project/trunk trunk-wc
svn merge svn://my_project/trunk svn://my_project/vendor/1.1 trunk-wc
Лучший способ прочитать это объединение: сначала определить изменения, необходимые для того, чтобы сделать trunk
идентичным vendor/1.1
, затем применить эти изменения к данной рабочей копии (в данном случае также к стволу).
Я должен отметить, что это слияние будет эффективно уничтожать все, что было в стволе ранее. Итак, если у вас уже есть локальные (не вендорные) модификации в магистрали, вам нужно применить только изменения между 1.1 и предыдущим выпуском вендора:
svn co svn://my_project/trunk trunk-wc
svn merge svn://my_project/vendor/1.0 svn://my_prjoect/vendor/1.1 trunk-wc
Если транк существует, но пуст , у вас есть два варианта: заменить транк или написать небольшой цикл оболочки:
Замена багажника выглядит так:
svn rm svn://my_project/trunk
svn cp svn://my_project/vendor/1.1 svn://my_project/trunk
Использование оболочки (bash):
svn co svn://my_project/trunk trunk
svn co svn://my_project/vendor/1.1 1.1
( cd 1.1
for x in * ; do
svn cp $x ../trunk
done
)
svn ci trunk