svn switch, что делает --relocate? - PullRequest
2 голосов
/ 21 июня 2011

Когда кто-то делает svn switch <source> <target>, я понимаю, что он переключает рабочий каталог на целевой путь.

Я бы хотел понять, для чего используется --relocate. Я думал, что это использовалось только когда URL репозитория изменился и кто-то хотел обновить URL рабочей копии, чтобы он указывал на новое расположение сервера svn. Но похоже Relocate can only change the repository part of an URL.

Итак, мой вопрос: что делает переключатель --relocate? В частности, можно использовать для интеграции в ветку пользователя ветки поставщика, которая имеет много различий по сравнению с предыдущей версией , то есть

svn co path\to\vendor\lib

svn --relocate lib url\path\to\my\branch

svn commit -m "Updated my branch with vendor code without using cp, this way _I think_ enables deleting folders and files that don't exist in new version of vendor lib.

Я правильно понял?

Ответы [ 2 ]

4 голосов
/ 21 июня 2011

SVN Relocate предназначен для случаев, когда эти надоедливые администраторы перемещают путь к вашему хранилищу.

Например, оригинал:

http://mydomain.com/svn/repo/Project/MyApplication/trunk

Администратору скучно и он меняет его:

http://mydomain.com/svn/MyApplication/trunk

Вам нужно будет выполнить svn relocate, чтобы сообщить svn, что путь к вашему проекту изменился.


Что касается предоставленного вами примера, то этоне может использоваться для реинтеграции веток, команда должна позволить клиенту svn обновить все свои пути до нового местоположения вашего хранилища.Вам нужно svn объединить их.

3 голосов
/ 21 июня 2011

Я думал, что это использовалось только когда URL репозитория изменился и кто-то хотел обновить работающий скопируйте URL-адрес, чтобы указать местоположение нового сервера SVN.

Это именно то, что он делает. Если ваш сервер Subversion изменил свое местоположение, используйте «switch --relocate», он просто свяжется с сервером и проверит его, если он все еще там, а затем перепишет URL-адреса в вашей рабочей копии на новый URL-адрес. Ваша рабочая копия не обновляется с какими-либо отличиями от сервера (пока вы не запустите svn update снова)

svn switch, без --relocate переключает вашу рабочую копию в новое место (обычно ветвь) и вносит все необходимые изменения в вашу рабочую копию, чтобы преобразовать ее в эту ветку. Это почти то же самое, что просто проверить эту ветку , но обычно быстрее и удобнее.

Подробнее здесь / здесь

В частности, может ли он использоваться для интеграции в ветку пользователя ветки поставщика, которая имеет много различий с предыдущей версии, т.е.

Нет, для этого svn merge.

Хотя svn-переключатель может позволить вам сначала проверить эту ветку поставщика в вашей рабочей копии. Вы оставляете свой основной проект прежним, но переключаете подкаталог, в котором находится материал поставщика, на новый филиал поставщика.

Обратите внимание, что Subversion (пока) не поддерживает слияние / ветвление между различными серверами Subversion, поэтому ветвь вашего поставщика должна быть импортирована на сервер, где ваша "ветвь пользователя" является первой. Затем вы можете объединить эту новую ветку поставщика с вашей веткой пользователя.

Вы также можете использовать svn: external и для этого, обычно код поставщика хранится вне пути вашего проекта и «импортируется» в рабочую копию с помощью svn: external. например у тебя есть /myproject/trunk/ как ваш проект и /3party/libraryFoo/version1/

При работе с myproject вы хотите, чтобы он был под /myproject/trunk/libraryFoo, поэтому вы просто добавляете svn: external на /myproject/trunk/, например, к. libraryFoo <a href="http://myserverver//3party/libraryFoo/version1/" rel="nofollow">http://myserverver//3party/libraryFoo/version1/</a>. Когда вы хотите перейти на новую версию, вы просто меняете svn: external на, например. libraryFoo <a href="http://myserverver//3party/libraryFoo/version2" rel="nofollow">http://myserverver//3party/libraryFoo/version2</a>. Это позволяет вам получать данные с другого сервера Subversion, например, непосредственно к серверу 3.party, хотя это не очень полезно, если вы собираетесь вносить локальные изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...