Я сделал некоторый экспериментальный код, который я хотел бы сохранить в репозитории, но я не хочу его на основном ответвлении. Как Вы передали бы это ответвлению?
Возможно, я понял это превратно, но того, что я понял о ветвлении, все, Вы на самом деле делаете копирует уже зарегистрированный код к другому каталогу в репозитории. Я предполагаю, что можно было скопировать основное ответвление в другое местоположение и затем изменить рабочий указатель местоположения хранилища копии, чтобы указать на то местоположение и затем фиксировать экспериментальный код. Но это кажется немного многоречивым. Это действительно, как Вы делаете это?
Это действительно так (по крайней мере, в Subversion). Например:
svn cp svn://server/repo/trunk svn://server/repo/branches/experiment svn switch svn://server/repo/branches/experiment svn commit -m "testing stuff"
Операция Subversion cp
(копирование) спроектирована так, чтобы быть очень дешевой и фактически не делает копию всего кода в вашем репозитории снова. Он просто устанавливает указатели на ревизию, из которой вы скопировали в стволе
.
Не все системы работают таким образом; например, в Git вы можете создать новую ветку и переключиться на нее с помощью одной команды: git checkout -b эксперимент
.
Ветвь SVN не копирует весь код снова, она просто ссылается на оригинал и добавляет различие вашего нового кода. Еще одна хорошая вещь ветки - это то, что вы всегда можете объединить или синхронизировать ее с исходным кодом. Ветвь - это просто еще одна папка в репозитории SVN, такая как теги или ствол.
Я бы посоветовал создать резервную копию перед переключением ветвей на случай, если вы по ошибке перезапишете существующие изменения.
Вы можете найти команды и дополнительную информацию о ветвях SVN в бесплатной книге SVN
AFAIK большинство клиентов SVN с графическим интерфейсом (например, Tortoise, Subclipse, SvnX имеют команду ветвления, которая творит за вас волшебство.
В противном случае см. Ответ Грега. .