Я пытаюсь преобразовать репозиторий Subversion в Git, используя subgit. Структура SVN примерно следующая:
trunk
├── Projects
│ ├── Project1
│ │ └── src
│ ├── Project2
│ └── Project3
├── SomeOtherDir
└── YetAnotherDir
branches
├── Projects
│ ├── Project1
│ │ ├── Branch_1
│ │ │ └── src
│ │ └── Branch_2
│ ├── Project2
│ └── Project3
├── SomeOtherDir
└── YetAnotherDir
tags
... similar to branches structure
Поскольку все это старый код, и я не хочу разбивать его на несколько небольших репозиториев, моя идея состояла в том, чтобы установить сопоставление в файле конфигурации subgit следующим образом:
trunk = trunk:refs/heads/master
branches = branches/Projects/Project1/Branch_1:refs/heads/Project1_Branch_1
Это работало для других репозиториев, и, похоже, здесь работает на некоторых ветках, однако с другими ветками я получаю следующую ошибку:
SubGit version 3.3.12 ('Bobique') build #4419
IMPORT FAILED
error: Failed to load Subversion configuration at '/path/to/subgit/config'
error: Invalid layout option 'svn.branches': Pattern "/refs/heads/Project1_Branch_1" is not empty and doesn't have format segment1/segment2/.../segmentN.
Я не очень понимаю, что означает ошибка и как ее исправить. Любые идеи или предложения будут высоко оценены. Спасибо!
первое, что мне кажется неправильным, это то, что в сообщении об ошибке упоминается шаблон, начинающийся с «/»:
Pattern "/refs/heads/Project1_Branch_1"
такое сопоставление неверно и приведет к этой точной ошибке «Недопустимый вариант макета», поэтому я полагаю, что реальное сопоставление в репозитории действительно может быть установлено следующим образом:
branches = branches/Projects/Project1/Branch_1:/refs/heads/Project1_Branch_1
в этом случае косая черта в начале должна быть удалена, чтобы решить проблему.
Другая возможная причина — имя ветки, если оно содержит какие-то неожиданные символы, такие как «;», «:» или другие, что также может привести к ошибкам, подобным этой.