Я не нашел никакой документации об этой функции, но похоже, что конфигурация git svn поддерживает несколько записей выборки. Таким образом, вы также можете добавлять ветки отдельно, без необходимости добавления другой записи удаленного svn-репозитория в вашу конфигурацию или использования подстановочных знаков для получения всех веток определенного каталога.
Предположим, что ваше дерево SVN действительно противное, с множеством веток без какой-либо логики их расположения, например, с ветвями и подкаталогами, содержащими более разветвленные.
т.е.
trunk
branches
-> branch1
-> sub-dir1
-> branch2
-> branch3
-> sub-dir2
-> branch4
-> sub-dir3
-> branchX
<... hundreds more ...>
и вы просто хотите вручную выбрать некоторые ветви, которые будут включены в ваш репозиторий git.
Сначала вы можете запустить свой репозиторий только с транком без каких-либо дополнительных веток:
git svn clone -r 10000:HEAD https://svn.com/MyRepo myrepo --prefix=svn/ --trunk=trunk
После этого вы должны увидеть следующую конфигурацию:
localhost: elhigu$ git config --get-regexp "svn-remote."
svn-remote.svn.url https://svn.com/MyRepo
svn-remote.svn.fetch trunk:refs/remotes/svn/trunk
когда вы хотите получить новую ветку из MyRepo, вы можете просто добавить новые записи в конфигурацию:
git config --add svn-remote.svn.fetch branches/sub-dir2/branch4:refs/remotes/svn/branches/sub-dir2/branch4
Или вы можете отредактировать ту же конфигурацию в .git / config
Чтобы получить новые ветки после добавления их в конфигурацию, просто запустите:
git svn fetch -r 10000:HEAD
[Edit] Иногда кажется необходимым запустить fetch с параметром --all, чтобы получить новые добавленные ветки:
git svn fetch --all -r 10000:HEAD