Subgit import - импортированная история svn, показывающая несвязанные ревизии

Я использую Subgit для импорта репозитория SVN в git, сохраняя историю изменений.

Вот моя структура репо svn:

Root
  trunk
  branches
    uat
    qua
      subfolder1
        project1
      subfolder2
        project2
        project3
        ...
        projectn

Я хотел бы импортировать project1 и project2 в один репозиторий git, но с измененными именами папок, project1newName и project2newName соответственно.

Желаемая структура репозитория git должна быть следующей:

Root
  project1newName
  project2newName

Я понятия не имею, как добиться этого с помощью конфигурации импорта subgit.

Я пробовал что-то вроде этого в файле конфигурации subgit:

[svn]

ствол = ветви / qua: ссылки / головы / мастер

includePath = / подпапка1 / проект1

includePath = / подпапка2 / проект2

Однако после запуска subgit import и нажатия переведенного git фиксируется на bitbucket:

  • subfolder1 и subfolder2 присутствуют в репозитории git (они мне не нужны)
  • имена проектов1 и проект2 не изменились.
  • История репозитория git включает коммиты, не связанные с project1 и project2, например, для проекта 3 (вероятно, результат установки ствола на их общий корень - ветвь qua)

Есть ли способ достичь моих целей с помощью самого импорта subgit? Какое-то умное отображение может я пропустил в документации?


person karek    schedule 18.02.2021    source источник


Ответы (1)


Похоже, вы ничего не пропустили в документации, настройка верна, и использование includePath также правильно, но я боюсь, что результат этой настройки также правильный и ожидаемый: настройка includePath (также его ассоциированный excludePath) предназначен для ограничения количества импортируемых каталогов и файлов. Эта функция, однако, не может изменять пути и имена на лету, поэтому она сохраняет структуру каталогов нетронутой, поэтому каталоги subfolder появляются в Git. То же самое относится к именам, SubGit не переименовывает каталоги на лету - можно переименовывать ветки во время импорта, но не каталоги внутри ветвей. Что касается пустых коммитов - это поведение можно изменить настройкой translate. createEmptyGitCommits:

https://subgit.com/documentation/config-options.html#translate.createEmptyGitCommit

[translate]
    createEmptyGitCommits = false
person ildar.hm    schedule 19.02.2021
comment
Спасибо за ответ. Я решил импортировать оба пути отдельно в два репозитория git, чтобы пропустить эти промежуточные каталоги. В любом случае весь проект потребует рефакторинга, но он выходит за рамки миграции. Я попробую этот трюк с флагом createEmptyGitCommit. Еще раз спасибо! - person karek; 03.03.2021