Как начать работу с svn: externals?
Я ищу краткий и хорошо написанный учебник по использованию svn: externals.
Я уже знаю, как использовать их в основном, но хочу, чтобы хорошая статья, на которую я могу ссылаться, когда отвечаю на такие вопросы, как этот, который появился недавно:
Что делать с несколькими проектами в зависимости от того же источника?
Я сделал бы это сам, но я не использую их достаточно часто, чтобы захотеть высунуть шею и написать учебник по этому вопросу. Google был на удивление бесполезен с этой темой.
Ответы
Ответ 1
Вот несколько разделов об этом в руководстве svnbook/TortoiseSVN:
Это страница svnbook на svn: externals. Это самый полезный ресурс по этому вопросу.
Этот вариант объясняет четыре способа включения подпроектов в рабочий процесс (и в процессе пропускает пятый: символические ссылки).
И этот последний - это страница, специфичная для TortoiseSVN, о том, как импортировать данные в репозиторий (не напрямую связанные с svn: externals).
Ответ 2
Если из приведенных выше ссылок не ясно, как вы устанавливаете свойство svn:externals
, которое привязано к определенной ревизии (пиннинг), вот оно:
svn propset svn:externals "plugins -r12345 https://svn.example.com/common/plugins" extras
Это создаст подкаталог plugins
в каталоге extras
и свяжет его с версией 12345
внешнего URL-адреса SVN https://svn.example.com/common/plugins
.
Существует красная статья Bean, в которой предлагается использовать propedit
, так как svn:externals
может быть многострочным значением. Вышеприведенный пример будет изменен следующим образом, чтобы использовать propedit
.
svn propedit svn:externals extras
Затем вы добавили бы одну строку для каждой внешней ссылки в том же формате, что и выше, для значения.
Ответ 3
root/repo1/proj/base/common/log.c
root/repo1/proj/base/common/log.h
root/repo1/proj/base/client
root/repo2/proj/test/base
Как показано выше, мы хотим скопировать 2 файла и 1 каталог в repo2
Шаг 1
каталог:/home/jack/repo2/proj/
cd /home/jack
Шаг 2
svn propset svn:externals "../repo1/proj/base/client proj/base/client" repo2
что-то вроде: ln repo1/proj/base/client repo2/proj/base/client
Шаг 3
export SVN_EDITOR=vim
Шаг4
svn propedit svn:externals repo2
vim показывает:
../repo1/proj/base/client proj/base/client
Шаг 5: добавьте еще два файла
../repo1/proj/base/client proj/base/client
../repo1/proj/base/common/log.c proj/base/common/log.c
../repo1/proj/base/common/log.h proj/base/common/log.h