Как сделать полную историю клонов SVN несмотря на копию SVN
В моей компании мы собираемся перейти с SVN на GIT. SVN, который мы используем, очень большой, не имеет svn-разметки, и при каждом разбивании версии мы делали svn-копию.
Структура репозитория SVN:
- svnserver.company.de
- продукт ху
- Majorversionnumber 1
- Majorversionnumber 2
- Majorversionnumber 3
- minorversionnumber 3.0.0
- несовершеннолетний номер версии 3.0.1
- младший номер...
- Majorversionnumber 4
- ....
- продукт ZW
- продукт ху
Что мы хотим или что я ожидал сделать от Git:
git svn clone делает клонирование всех файлов из одной подпапки / копии с полной историей этих файлов (как это делает черепаха, снимая флажок "Stop on copy/rename").
Что делает Git:
git svn clone --prefix = origin / --username = spe --authors-file =hors.txt https://svnserver.company.de/repos/product/majorversionnumber/Master/Source product
-> клонирует все файлы из одной подпапки / копии, но только с историей, пока не произойдет копирование.
Вопрос:
Имеет ли git эквивалент svns "Остановка при копировании / переименовании" или как клонировать полную историю, несмотря на svn copy?
Что я нашел до сих пор: Git-svn - импорт полной истории Обход для сбоя "git svn clone" (требуется полная история) https://github.com/githubtraining/zzz_deprecated-feedback/issues/43
Честно говоря, я не понимал подходы к решению этих ссылок, если у них была та же проблема, что и у нас.
1 ответ
Хорошо, если я правильно понимаю, ваш полный макет выглядит так:
svnserver.company.de
product xy
majorversionnumber 1
master
<actual source starts here>
majorversionnumber 2
majorversionnumber 3
master
<actual source starts here>
minorversionnumber 3.0.0
master
<actual source starts here>
minorversionnumber 3.0.1
minorversionnumber ...
majorversionnumber 4
....
product zw
Это просто непроверенное обоснованное предположение, но я бы попробовал что-то подобное. Первый, git svn init svn://svnserver.company.de
, Затем отредактируйте .git/config
"s [svn-remote]
раздел выглядит примерно так:
fetch = product xy/majorversionnumber 1/master:refs/remotes/origin/trunk
branches = product xy/{majorversionnumber 2,majorversionnumber 3}/master:refs/remotes/origin/branches/*
branches = product xy/majorversionnumber 3/{minorversionnumber 3.0.0,minorverionnumber 3.0.1}/master:refs/remotes/origin/branches/*
затем git svn fetch
, Вы можете использовать аналогичные команды + config, чтобы создать клон для product zw
,
Увидеть CONFIGURATION
раздел git help svn
Больше подробностей.