转换SVN结帐以使用git(git-svn)
-
05-07-2019 - |
题
我使用svn中保存的软件进行版本控制。我想使用git(git-svn),但软件需要大量的设置和配置才能使用。有些工具可以处理所有设置,包括通过svn检查所有代码。
git-svn的所有文档(我已经能够找到)需要使用git-svn进行全新的结账。
有没有办法转换现有的svn checkout以便它可以使用git-svn?
解决方案
你可以这样做:
- 使用git-svn将SVN树完全克隆到临时目录。确保使用与现有结帐完全相同的修订版。
- 移动<!>“; .git <!>”;从git-svn checkout顶层到SVN checkout顶层的文件夹。
- 然后你要么告诉Git忽略<!> quot; .svn <!> quot;目录,或者你可以删除它们。
- 删除git-svn checkout。
- 现在,您可以使用Git和git-svn操作现有文件。
- 执行<!>“git status <!>”;并希望它说没有变化。 醇>
其他提示
没有。 git-svn克隆将整个存储库转换为git。 SVN签出没有整个存储库,因此无法克隆。这是从SVN或CVS切换到分布式系统(如git)的主要优势。
我想你可能想保留历史。但是,如果您(或在此页面上偶然发现的任何其他人)不需要历史记录,您可以使用<!> quot; export <!> quot;功能如下所述: https://stackoverflow.com/a/419475/2437521 。
另一种方法是使用补丁:
,它不会修改原始的Subversion工作副本,也不需要你复制它。- 使用git-svn将Subversion树完全克隆到一个新目录,该目录将是Git存储库。确保使用与现有结帐完全相同的修订版。您可以使用
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存储库的顶部。 -
git apply -p0 patch.diff
到之前创建的Git存储库的顶部。 - 运行
git status
以在Git存储库的工作树上应用补丁。
醇>
现在,您可以使用git add
和git commit
/ <=>进行更改,将它们保存在本地存储库中。
不隶属于 StackOverflow