Ответ 1
Для каждого svn-remote git -svn хранится последняя исправленная версия в файле .git/svn/.metadata
. Он никогда не получает ревизий меньше, чем это значение. Вот почему он не получает ветку, добавленную в конфигурацию; git -svn считает, что ветвь fuze_node
уже конвертирована.
Однако вы можете получить эту ветку без повторного клонирования всего репозитория еще раз:
- Добавьте еще один svn-remote со всеми ветвями, которые нужно извлечь,
- Удалите старый svn-remote;
- Запустите
git svn fetch -R newer-svn-remote
, чтобы извлечь ревизии из добавленной ветки.
Ваша конфигурация должна выглядеть так:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
# [svn-remote "svn"]
# url = https://svn.example.com/repository
# fetch = trunk/Python:refs/remotes/trunk
# branches = branches/{stage,prod,stage_with_proxy}/ucapi/:refs/remotes/*
# branches = branches/{active}/Python/:refs/remotes/*
[svn-remote "newer-svn-remote"]
url = https://svn.example.com/repository
fetch = trunk/Python:refs/remotes/trunk
branches = branches/{stage,prod,stage_with_proxy}/ucapi/:refs/remotes/*
branches = branches/{active}/Python/:refs/remotes/*
branches = branches/{fuze_node}/:refs/remotes/*
Обратите внимание, что вам нужно точно указать одно и то же отображение ветвей, как в старшем svn-remote:
branches = branches/{stage,prod,stage_with_proxy}/ucapi/:refs/remotes/*
То есть, refs/remotes/* все равно будет находиться в правой части отображений. В противном случае git -svn не сможет обнаружить уже преобразованные коммиты и пытается извлечь их еще раз.
На самом деле есть другой способ добиться того же. Это связано с некоторыми манипуляциями с внутренними файлами git -svn.
Вы можете просто добавить необходимую ветвь к .git/config
и обновить файл .git/svn/.metadata
, так что последняя извлеченная ревизия станет 0:
[svn-remote "svn"]
reposRoot = https://svn.example.com/repository
uuid = 8a6ef855-a4ab-4527-adea-27b4edd9acb6
branches-maxRev = 0
tags-maxRev = 0
После этого git svn fetch
выберет только необходимые изменения.