Миграция SVN в git не переносит теги в DevOps

Я перенесу репозитории с собственного сервера subversion в git-репозиторий Azure DevOps. Для этого я использую следующие команды:

# Cloning
git svn clone --stdlayout --authors-file=autors.txt "http://www.subversion.com/svn/<repoName>" <repoName>
Set-Location <repoName>

# Creation of the repository using the REST APIs of DevOps by a .NET application

# Pushing
git remote add origin "https://organisation@dev.azure.com/organisation/repoName/_git/repoName";
git push -u origin --all;
git push origin --tags;

# Pushing each branch
[string[]]$svnBranches = svn ls "http://www.subversion.com/svn/<repoName>/branches/";

$svnBranches | ForEach-Object {
    [string]$name = $_.TrimEnd("/");
    Write-Host $name;
    git checkout $name;
    git push;
}

Проблема в том, что теги не отправляются в DevOps. Я искал везде и нашел git push origin --tags но это не работает

Я создал обходной путь для веток, чтобы они оставались в хранилище DevOps, иначе они тоже будут удалены.

Этот обходной путь я не могу использовать для тегов, потому что git tag -l не дает результатов и svn ls "http://www.subversion.com/svn/<repoName>/tags/" эта ошибка:

svn: E170013: Невозможно подключиться к хранилищу по URL http://www.subversion.com/svn/<repoName>/tags/

svn: E175003: Сервер на http://www.subversion.com/svn/<repoName>/tags/ не поддерживает протокол HTTP/DAV

Что еще можно сделать, чтобы перенести теги в git-репозиторий Azure DevOps?

1 ответ

Полученный из этого поста, вот что мы используем (не используя DevOps, но работали на GitLab и GitHub):

git svn clone https://.......
# Create repo on hosting service
cd <the-repo.git>
git for-each-ref --format='%(refname)' refs/remotes/origin/tags | cut -d/ -f5 | while read ref; do 
  git tag -a "$ref" -m "$(git log --pretty=oneline refs/remotes/origin/tags/$ref | head -n1 | cut -d' ' -f2-)" "refs/remotes/origin/tags/$ref"
  git update-ref -d "refs/remotes/origin/tags/$ref"
done
git remote add origin .............
git push origin 'refs/remotes/origin/*:refs/heads/*'
git push origin --tags

Я считаю, что для отправки данных в DevOps вам следует выполнить следующую команду:

git push -u --all --follow-tags origin

С помощью этой команды все должно быть отправлено в источник, включая теги.

Кстати, есть еще один инструмент, позволяющий переводить данные из SVN в Git, его имя - SubGit:

https://subgit.com/

Это позволяет импортировать более сложные репозитории, возможно, это может быть полезно в том, что вы делаете.

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