Subgit импортирует корневой каталог без стандартной компоновки

У меня есть следующая структура хранилища SVN. Это не задумано, кто-то сделал что-то странное, прежде чем я стал участвовать.

https://server/svn/repo
https://server/svn/repo/rootfolder1
https://server/svn/repo/rootfolder2
https://server/svn/repo/trunk
https://server/svn/repo/trunk/trunkfolder1
https://server/svn/repo/trunk/trunkfolder2

Я пытаюсь импортировать две папки rootfolder1 а также rootfolder2 в репозиторий Git (затем я разделю их на отдельные репозитории, используя git-filter-branch).

Бег subgit import --svn-url https://server/svn/repo repo-rootУ меня остался Git-репозиторий с trunkfolder1 а также trunkfolder2, Переходя --trunk repo дает мне пустой репозиторий Git. Работает как subgit import --svn-url --trunk repo https://server/svn repo-root дает мне следующую ошибку:

IMPORT FAILED

error: svn: E175002: PROPFIND of '/': 405 Method Not Allowed (https://server)

Я тоже пробовал subgit --import --trunk . --svn-url https://server/svn/repo repo-root Однако Субгит жалуется на --trunk параметр.

Есть предложения по решению этой проблемы?

1 ответ

Решение

Если вы в конечном итоге намереваетесь поместить эти "корневые папки" в отдельные репозитории, то, на мой взгляд, разумно импортировать их в разные репозитории Git на стадии импорта. Это может быть сделано с помощью следующих двух команд:

subgit import --trunk rootfolder1 --username <svn user name> --password <svn user password> --non-interactive --trust-server-cert --svn-url https://server/svn/repo <GIT_REPO>

subgit import --trunk rootfolder2 --username <svn user name> --password <svn user password> --non-interactive --trust-server-cert --svn-url https://server/svn/repo <GIT_REPO_2>

В этом случае "rootfolder1" будет импортирован в GIT_REPO, а "rootfolder2" - в GIT_REPO_2, поэтому вам не нужно будет разбивать их.

Кроме того, я бы порекомендовал предоставить файл авторов во время импорта, чтобы пользователи SVN были переведены на подходящих пользователей Git, более подробную информацию можно найти здесь:

https://subgit.com/documentation/import-book.html

Импорт обеих "корневых папок" в один репозиторий Git также возможен, но для избавления от "ствола" требуются дополнительные шаги:

  • подготовить новый репозиторий Git для импорта:

    subgit configure https://server/svn/repo GIT_REPO

  • откройте файл конфигурации SubGit в текстовом редакторе:

    GIT_REPO / subgit / конфигурации

  • изменить конфигурацию сопоставления следующим образом:

    [svn]
    
        trunk:refs/heads/master
        excludePath = /trunk
    

    Сохраните и закройте файл.

  • запустите импорт:

    импорт субгитов GIT_REPO

В этом случае GIT_REPO будет содержать только "корневые папки", так как "транк" исключен директивой "excludePath".

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