我感兴趣的一些开源项目使用 Subversion 而不是 Git 进行跟踪。我对 Subversion 一无所知。最近,我学习了 Git 和 SourceTree,对这两个东西非常熟悉。
现在的问题是,既然 SourceTree 不能用于查看 Subversion 项目历史记录,我有什么选择可以查看它?我希望能够克隆存储库以查看历史记录并进行更改。我认为没有办法将 Subversion 信息转换为 Git 信息。
答案1
是的,如果你使用的话你可以svn2git
。
“我认为没有办法将 subversion 信息转换为 Git 信息。”
不……是的,你可以!只需使用snv2git
红宝石:
“svn2git是一款小型实用程序,用于将项目从 Subversion 迁移到 Git,同时将主干、分支和标签保留在它们应在的位置。它使用 git-svn 克隆 svn 存储库并进行一些清理,以确保以有意义的方式导入分支和标签,并且签入 master 的代码最终是当前位于 svn trunk 中的内容,而不是上次提交所在的 svn 分支。”
以下是我的使用方法:有两个初始主要步骤和一个转换后步骤:
- 将作者从 Subversion 映射到 Git 格式。
- 将 Subversion 存储库转换为 Git 存储库。
trunk
在转换后的 Git 存储库中检出分支。
步骤 1:准备 Subversion 作者列表映射文件以供 Git 使用。
虽然 Subversion 存储库到 Git 存储库的过程非常简洁,但在开始之前您需要做的一件事是将 Subversion 存储库中的用户名映射到与 Git 存储库中的用户相匹配的用户名。下面是具体操作方法。
首先,在 Subversion 克隆目录中,运行此命令以获取连接到 Subversion 存储库的作者列表:
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /'
获取该输出并将其放置在svn-authors.txt
如下文件中:
userone
usertwo
并手动编辑该文件以将这些用户映射到他们的 Git 等效项,如下所示:
userone = User One <[email protected]>
usertwo = User Two <[email protected]>
保存svn-authors.txt
并继续下一步。
第二步:创建新的 Git 存储库并运行转换。
创建新的 Git 存储库的目录:
mkdir Some-Project
进入该Some-Project
目录:
cd Some-Project
现在,在该目录中创建一个 Git 存储库:
git init
记下源 Subversion 存储库 URL:
https://svn.example.com/repo/Some-Project/trunk/
并在 Git 存储库目录中运行svn2git
,让魔法开始:
svn2git https://svn.example.com/repo/Some-Project/trunk/ --authors svn-authors.txt --verbose --rootistrunk
svn-authors.txt
请留意 Subversion 存储库 URL 和其中的文本文件的位置svn2git
。
第三步:转换后清理。
现在检查trunk
如下内容:
git checkout trunk
该目录现在应该已填充 Subversion 内容。根据需要调整内容。