我使用保存在 svn 中的软件进行版本控制。我想使用 git (git-svn) 但是该软件需要大量设置和配置才能使用。有一些工具可以处理所有设置,包括通过 svn 检查所有代码。
git-svn 的所有文档(我已经能够找到)都需要使用 git-svn 重新结帐。
有没有办法转换现有的 svn checkout 以便它可以使用 git-svn?
我使用保存在 svn 中的软件进行版本控制。我想使用 git (git-svn) 但是该软件需要大量设置和配置才能使用。有一些工具可以处理所有设置,包括通过 svn 检查所有代码。
git-svn 的所有文档(我已经能够找到)都需要使用 git-svn 重新结帐。
有没有办法转换现有的 svn checkout 以便它可以使用 git-svn?
不,一个 git-svn 克隆将整个存储库转换为 git。SVN 签出没有整个存储库,因此无法从中克隆。这是从 SVN 或 CVS 切换到分布式系统(如 git)的主要优势。
你可以这样做:
我假设您可能想保留历史记录。但是,如果您(或任何其他偶然发现此页面的人)不需要历史记录,您可以使用此处解释的“导出”功能:https ://stackoverflow.com/a/419475/2437521 。
另一种不修改原始 Subversion 工作副本且不需要您复制它的方法是使用补丁:
git reset --hard :/r<revision>
在克隆后使用它来强制它是相同<revision>
的修订版,Subversion 工作副本更新到的修订版在哪里(参见这里使用svn info
)。cd
到您的 Subversion 工作副本。svn status
确保所有新文件都标有A
(或用于svn add
添加),并且所有已删除的文件都标有D
(或用于svn rm
删除它们)。svn diff >patch.diff
以创建补丁文件。patch.diff
到之前创建的 Git 存储库的顶部。cd
到之前创建的 Git 存储库的顶部。git apply -p0 patch.diff
以将补丁应用到 Git 存储库的工作树上。现在您可以使用git status
, 和git add
/git commit
它们浏览更改以将它们保存在本地存储库中。