Миграция SVN в git не переносит теги в DevOps Azure - PullRequest
0 голосов
/ 27 февраля 2019

Я перенесу репозитории с собственного сервера 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

Что еще можно сделать для переноса тегов в DevOps AzureGit репозиторий?

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

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

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

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

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

https://subgit.com

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

0 голосов
/ 28 февраля 2019

Получено из этого поста , вот что мы используем (не используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...