可能重复:
How to git-svn clone the last n revisions from a Subversion repository?
我正在尝试将我在WordPress插件仓库中托管的WordPress插件移动到Git。
我累了使用git-svn
并且花费的时间太长(单个插件超过4-5小时)而且我有近20个要迁移的插件。
我在我的机器上检查了SVN回购。有没有什么方法可以通过使用存储在.svn
文件夹中的历史信息而不连接到SVN服务器来将SVN repo导入Git?
答案 0 :(得分:7)
您的计算机上没有SVN repo 。您有工作副本。
与Git不同,SVN在签出工作副本时不会下载整个历史记录。它只下载了最新版本的文件。
所以不,从工作副本中获取SVN项目的历史是不可能的。
答案 1 :(得分:3)
没有。但是,你有一些选择。
Git和SVN处理历史的方式完全不同。当您签出SVN存储库时,.svn目录仅保存最新的提交,以便可以将其与工作目录进行比较或还原。
另一方面,Git克隆了整个历史。有一些例外,例如shallow clones,但是对于大多数用途,Git需要一个完整的存储库来执行显示历史记录或计算差异的事情。如果您不介意截断的历史记录,可以查看--depth
的{{1}}或--revision
标记。这些标志将允许您限制从SVN存储库检索的修订数量,交易历史记录和速度功能。
但是,虽然您可以将SVN工作副本导入为新的Git存储库,但.svn目录不包含任何实际历史记录。您必须连接到SVN存储库才能访问历史记录,因此无法从工作副本导入。
但是,您可以考虑镜像Subversion存储库,然后针对镜像在本地运行git-svn
。您仍然需要SVN存储库的完整副本,但镜像存储库所花费的时间比检索Subversion通过git-svn
的网络连接一次提交一样少。
请注意,您仍然无法按照自己的意愿行事,但这是提高SVN-> Git迁移速度的另一种可行方法。除了速度提升之外,这还将在Git方面产生更完整的历史记录。
答案 2 :(得分:1)
.svn
目录不包含repo的完整历史记录,仅包含WC中的数据“原始副本”(以及一些其他元数据) - 如果不与repo进行交互,您将无法获得完整的历史记录< / LI>
建议的工作流程可能是这样的:
svnadmin dump| svndumpfilter
svnrdump | svndumpfilter
来准备已清理的转储。可能一个完整的svnrdump并在以后cat DUMP| svndumpfilter include
过滤它会更加节省时间;