У меня есть SVN
-репозиторий, который я бы хотел преобразовать в git
-репозиторий. Для этого я использую svn2git
. К сожалению, похоже, что у инструмента возникают проблемы с правильной загрузкой тегов. Мой SVN
-repository выглядит следующим образом:svn2git не удалось правильно импортировать теги
.../branches
.../tags
project-version-5.2.5/
project-version-5.3.0/
project-version-5.3.1/
project-version-5.4.0/
project-version-5.5.0/
project-version-5.5.1/
project-version-5.5.2/
project-version-5.5.3/
project-version-5.5.4/
project-version-5.6.0/
project-version-5.6.1/
project-version-5.6.2/
project-version-5.6.3/
project-version-5.6.4/
project-version-5.6.5/
project-version-5.6.6/
project-version-6.0.0/
project-version-6.0.1/
project-version-6.0.2/
project-version-6.1.0/
project-version-6.1.1/
project-version-6.1.2/
project-version-6.2.0/
project-version-6.2.1/
.../trunk
Но репозиторий не представляя это. Теги выглядят так:
bash:~$ git tag
project-version-5.2.5
project-version-5.3.0
project-version-5.3.1
[email protected] <-- I have no idea, where that is coming from...
project-version-5.4.0
project-version-5.5.0
project-version-5.5.1
project-version-5.5.2
project-version-5.5.3
project-version-5.5.4
project-version-5.6.0
project-version-5.6.1
project-version-5.6.2
project-version-5.6.3
project-version-5.6.4
project-version-5.6.5
Обратите внимание на отсутствующие теги. Они по какой-то причине хранятся как удаленные ветви:
bash:~$ git branch -r
svn/tags/[email protected] <-- Yay, random numbers!
svn/tags/project-version-5.6.6
svn/tags/[email protected] <-- And another one.
svn/tags/project-version-6.0.0
svn/tags/project-version-6.0.1
svn/tags/project-version-6.0.2
svn/tags/project-version-6.1.0
svn/tags/project-version-6.1.1
svn/tags/project-version-6.1.2
svn/tags/project-version-6.2.0
svn/tags/project-version-6.2.1
svn/trunk
Что здесь происходит?
Edit: Я забыл добавить свою команду: svn2git http://path/to/repository --no-minimize-url --verbose --username='username' --trunk trunk --nobranches --tags tags
edit2: Я только что проверил и обнаружил, что, казалось бы, случайные числа на самом деле изменения в SVN
-repository, которые теги были сделаны из. Это странно, что только 3 из ~ 20 тегов получают добавленную к ним ревизию ...
Редактирование 3: Очевидно, проблема связана с комментарием одного тега, который содержит "
. Все теги после этого один сохраняются как ветви, потому что svn2git
не избежать "
и пытается сделать что-то вроде
git tag -a -m "blablabla "blablabla"." "[email protected]" "svn/tags/[email protected]"
которая выйдет из строя по очевидным причинам. Я до сих пор не знаю, почему для некоторых тегов он добавляет номер версии. Если у кого-нибудь есть предложения, как решить эту проблему, я был бы очень благодарен.
Edit4: Я нашел решение проблемы с экранированием. Функция escape-функции в источнике svn2git
просто немного странна ... Она заменяет только одинарные кавычки ('
) с '\''
. Я закончил ...
Где находится нить github? У меня такая же проблема, но мы так много лет спустя. Теперь код немного по-разному, и он содержит 'str.gsub (/ '|" /) {| c | "\\ # {c}"} 'в теле, но я не знаю рубина, достаточно хорошо знаю, что я должны измениться. можете ли вы мне помочь? – lvthillo