Кде SVN2Git. Ошибка: «branch_1» в хранилище «my_repo» ветвится из ветви «branch_2», но последняя не существует. Не могу продолжить - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь перенести репозиторий SVN с более чем 26 000 ревизий в несколько репозиториев Git, используя (Kde) SVN2GIT . Один конкретный репозиторий генерирует ошибку при миграции. Вот почему я сократил правила для миграции в этот конкретный репозиторий.

Вот правила генерации репозитория:

create repository my_repo
end repository

#
# Declare the rules
# Note: rules must end in a slash
#
#
# my_repo
#

match /Project/trunk/dir_1/
repository my_repo
branch master
end match
match /Project/branches/([^/]+)/dir_1/
repository my_repo
branch \1
end match
match /Project/tags/([^/]+)/dir_1/
repository my_repo
branch refs/tags/tag/\1
annotated true
end match

match /
end match

SVN2Git был выполнен с использованием опции образа докера, предоставленной в документация на сервере Linux. Некоторые из предложенных мною альтернатив включали в правила пользователя параметр «recerc action», который описан в здесь . Правила будут выглядеть так:

create repository my_repo
end repository

#
# Declare the rules
# Note: rules must end in a slash
#
#
# my_repo
#

match /Project/trunk/dir_1/
repository my_repo
branch master
min revision 18800
end match
match /Project/branches/([^/]+)/dir_1/
repository my_repo
branch \1
min revision 18800
action recurse
end match
match /Project/tags/([^/]+)/dir_1/
repository my_repo
branch refs/tags/tag/\1
min revision 18800
action recurse
annotated true
end match

match /
end match

Я также немного поиграл с правилами, но ни один из моих подходов не сработал.

Вот фрагмент журнала:

Exporting revision 18840  done
Exporting revision 18841     /Project/branches/branch_2/dir_1 was copied from /Project/branches/branch_1/dir_1 rev 18840
    /Project/branches/branch_2/dir_2 was copied from /Project/branches/branch_1/dir_2 rev 18840
rev 18841 /Project/branches/branch_2/dir_2/ matched rule: "/tmp/conf/Project.rules:22 /Project/branches/([^/]+)/dir_2/"    exporting.
.my_repo : branch branch_2 is branching from branch_1
"branch_2" in repository "my_repo" is branching from branch "branch_1" but the latter doesn't exist. Can't continue.
rev 18841 /Project/branches/branch_2/dir_2/ matched rule: "/tmp/conf/Project.rules:22 /Project/branches/([^/]+)/dir_2/"

У меня вопрос: была ли у кого-то эта ошибка раньше, и если да, как вы справились с ней?

Любая помощь будет очень признательна. Я имею дело с этой проблемой более недели.

Спасибо и надеюсь, что кто-то может помочь.

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Я собираюсь нанести удар здесь. Я могу увидеть вашу проблему. Предполагая, что вы dir1 и dir2 находятся в одном транке / ответвлении / теге, а не в разных. Дайте мне знать иначе.

create repository my_repo
end repository

#
# Declare the rules
# Note: rules must end in a slash
#
#
# my_repo
#

match /Project/$
action recurse
end match

match /Project/trunk/$
action recurse
end match

match /Project/branches/$
action recurse
end match

match /Project/tags/$
action recurse
end match

# Recurse into branches
match /Project/branches/([^/]+)/$
action recurse
end match

# Recurse into tags
match /Project/tags/([^/]+)/$
action recurse
end match


# Start matching

match /Project/trunk/
repository my_repo
branch master
end match

match /Project/branches/([^/]+)/
repository my_repo
branch \1
end match

match /Project/tags/([^/]+)/
repository my_repo
branch refs/tags/\1
annotated true
end match

match /
end match
0 голосов
/ 08 ноября 2019

Здравствуйте, @ EncryptedWatermelon, Большое спасибо за ваш ответ, это было очень полезно.

Я проверил ваши рекомендации по моим правилам и после некоторой настройки это сработало. Только следующее правило решило ошибку:

# Recurse into branches
match /Project/branches/([^/]+)/$
 action recurse
end match

Моя текущая проблема заключается в том, что теги не выбираются. В моем SVN-хранилище имена тегов совпадают с именами веток. Для решения этой проблемы был добавлен дополнительный каталог тегов (refs / tags / tag /), и оригинальные правила тегов выглядят так:

match /Project/tags/([^/]+)/dir_1/
 repository my_repo
 branch refs/tags/tag/\1
 annotated true
end match

Следуя вашим советам, я включил следующие правила:

match /Project/tags/$
 action recurse
end match

# Recurse into tags
match /Project/tags/([^/]+)/dir_1/$
 action recurse
end match

Но тегов до сих пор нет.

Вы видели что-то подобное? Может ли быть проблемой, что имена тегов совпадают с именами веток?

Заранее спасибо и надеюсь, что вы можете помочь.

Приветствия!

...