Я перенес много Git-репозиториев в своей компании, и все было хорошо, пока я не столкнулся с репозиторием с очень специфическим макетом для филиалов:
/trunk/
/branches/
/branches/lvl1branch1
/branches/lvl1branch2
/branches/lvl1branch3
/branches/lvl2/lvl2branch1
/branches/lvl2/lvl2branch2
/branches/lvl2/lvl2branch
/branches/lvl2/lvl3/lvl3branch1
/branches/lvl2/lvl3/lvl3branch2
/branches/lvl2/lvl3/lvl3branch3
/tags/
Как видите, у нас нет филиаловтолько на верхнем уровне / branch / (например, lvl1branch1 ), но только на двух других уровнях (например, lvl2 / lvl2branch1 и lvl2 / lvl3/lvl3branch3).
Это мой .git / config :
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[svn-remote "svn"]
url = https://myrepourl/
fetch = test/trunk:refs/remotes/origin/trunk
branches = test/branches/*:refs/remotes/origin/*
branches = test/branches/lvl2/*:refs/remotes/origin/lvl2/*
branches = test/branches/lvl2/*/*:refs/remotes/origin/lvl2/*/*
И я получаю эту ошибку при попытке запустить git svn fetch команда:
неустранимо: update_ref не удалось для ref 'refs / remotes / origin / lvl2 / lvl3 / lvl3branch1': невозможно заблокировать ref 'refs / remotes / origin / lvl2 / lvl3/ lvl3branch1 ':' refs / remotes / origin / lvl2 / lvl3 'существует;Невозможно создать 'refs / remotes / origin / lvl2 / lvl3 / lvl3branch1' update-ref -m r1638 refs / remotes / origin / lvl2 / lvl3 / lvl3branch1 e421f7d976832aa2efe84da02378e7f89eb55c26: 10 * ** 1025 может возвращаться ошибка: 128видите, я могу создать ветку lvl2 / lvl3 / lvl3branch1 , потому что Git рассматривает lvl2 / lvl3 - ветвь, что не соответствует действительности.Возможно, следующая строка в .git / config вызывает проблему:
branches = test/branches/RT-Delivery/*:refs/remotes/origin/lvl2/*
Как я могу сказать Git, чтобы он не читал lvl2 / lvl3 как ветку?Полагаю, я столкнусь с той же проблемой с lvl2 , который не является веткой.Есть ли способ добавить исключения?