Как сделать полную историю клонов 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 Больше подробностей.

Другие вопросы по тегам