SVN 到 Git 迁移

问题描述 投票:0回答:3

我正在尝试通过下载

svn2git.sh
脚本文件并使用以下命令在 Windows 上从 SVN 迁移到 git。

sh svn2git.sh [ProjectName] [SVN Repo link] [SVN Rev (Probably 0)] [Stash Repo Link]

我对此很陌生,并且对 git-svn 和 svn2git 的用法感到非常困惑。谁能建议我使用

svn2git
工具从 svn 迁移到 git 的步骤?

java git svn migration
3个回答
1
投票

我创建了一个 svn 到 git 迁移的脚本。该脚本将 svn 存储库迁移到 git 及其所有标签和维护的历史记录。

先决条件: 在继续迁移之前,请确保您的计算机上已安装 GIT 和 SVN。

所用变量的描述

SVN_REPO_LINK :指向 svn 存储库托管位置的 http 链接

GIT_REPO_NAME :您要为新 git 存储库指定的名称

GIT_REPO_LINK :链接到您要托管存储库的 git 服务器。 [它基本上是您想要添加的 GIT 遥控器]

作者档案: 在 svn 中,提交仅与用户名相关联,但在 git 存储库中,除了用户名之外,还需要电子邮件地址。为了维护 git 中的 svn 提交,需要用户电子邮件。该文件就是为了这个目的。 文件格式如下:

svn user name = Name <email>

Helen_david = Helen David <[email protected]>

RobinR = Robin Rose <[email protected]>

脚本

git svn clone --stdlayout --prefix 'svn/' -A authors.txt $SVN_REPO_LINK $GIT_REPO_NAME
cd $GIT_REPO_NAME

git for-each-ref refs/remotes/svn --format="%(refname:short)" | sed 's#svn/##' | grep -v '^tags'| while read aBranch; do git branch $aBranch svn/$aBranch; done
git branch -d trunk 
git for-each-ref refs/remotes/svn/tags --format="%(refname:short)" | sed 's#svn/tags/##' | while read aTag; do git tag $aTag svn/tags/$aTag; done
git remote add origin $GIT_REPO_LINK
git push -u --all origin
git push --tags origin

现在您的存储库及其所有标签、分支和历史记录都已迁移。


0
投票

我不得不从 SVN 迁移到 git,我在 atlassian 中找到了一个非常有用的教程。它一步步向您展示如何迁移到 git,事实上有一个 svn-migration-scripts.jar 可以帮助您完成该过程,并保留您的标签和分支,这是链接:https://www.svn-migration-scripts.jar。 atlassian.com/git/tutorials/migration-overview.
而且最后你不需要创建bibucket帐户,你可以使用github。在我的例子中,一些命令行发生了变化,例如,当我在转换步骤 - 标准 SVN 布局中创建authors.txt 时,我必须向用户进行身份验证并通过,因此我在末尾添加了用户名,更多信息请参见 https ://bitbucket.org/atlassian/svn-migration-scripts/src

 java -jar  <your path>/svn-migration-scripts.jar authors https://<svn_repo>/<project>/ <username> 

我跳过了一些步骤,例如同步过程 - 更新作者文件、自动生成 Git 作者、获取新的 SVN 提交、与获取的提交同步、清理 Git 存储库(再次),因为在我的例子中我做了在转换期间不需要在 svn 中提交。这取决于您是否与更多开发人员合作,以及您习惯 git 的速度。

我还必须在存储库中配置 ssh-key,以防万一您需要它。 https://help.github.com/articles/generate-ssh-keys/

我希望这对你有帮助


0
投票

迁移指南:将 SVN 项目迁移到具有历史记录(不包括作者)的 GitLab。把事情简单化。稍后可以在Git仓库中调整权限。

  1. 克隆 SVN 存储库:

    git svn 克隆

  2. 导航到项目目录:

    光盘

  3. 重命名分支:

    git 分支 -m main

  4. 创建.gitignore文件:

    触摸.gitignore

  5. 将文件/文件夹添加到 .gitignore: 修改 .gitignore 文件以包含您要忽略的文件/文件夹。

  6. 暂存不需要的文件/文件夹以进行删除:

    git rm --缓存

    git rm -r --缓存

  7. 阶段变化:

    git 添加。

  8. 提交更改:

    git commit -m“从 SVN 到 GitLab 的初始迁移”

  9. 添加 GitLab 远程:

    git远程添加原点

  10. 验证远程:

    git远程-v

  11. 推送到GitLab:

    git push -u origin main

确保将 、 、 、 和 等占位符替换为适合您项目的值。另外,请随意调整提交消息以更好地反映迁移的目的。

© www.soinside.com 2019 - 2024. All rights reserved.