我正在尝试通过下载
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 的步骤?
我创建了一个 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
现在您的存储库及其所有标签、分支和历史记录都已迁移。
我不得不从 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/
我希望这对你有帮助
迁移指南:将 SVN 项目迁移到具有历史记录(不包括作者)的 GitLab。把事情简单化。稍后可以在Git仓库中调整权限。
克隆 SVN 存储库:
git svn 克隆
导航到项目目录:
光盘
重命名分支:
git 分支 -m main
创建.gitignore文件:
触摸.gitignore
将文件/文件夹添加到 .gitignore: 修改 .gitignore 文件以包含您要忽略的文件/文件夹。
暂存不需要的文件/文件夹以进行删除:
git rm --缓存
git rm -r --缓存
阶段变化:
git 添加。
提交更改:
git commit -m“从 SVN 到 GitLab 的初始迁移”
添加 GitLab 远程:
git远程添加原点
验证远程:
git远程-v
推送到GitLab:
git push -u origin main
确保将 、 、 、 和 等占位符替换为适合您项目的值。另外,请随意调整提交消息以更好地反映迁移的目的。