跟踪已从svn切换到git的大型项目

时间:2010-09-25 10:46:18

标签: svn git

我正在跟踪最近从svn转移到git的项目。我有最新的svn代码,并希望开始使用git中的代码。有没有办法做到这一点,不涉及通过慢速连接重新下载相当大的代码库?从本质上讲,我希望能够说“从这里开始(旧的svn代码)并从git中获取更改”。

4 个答案:

答案 0 :(得分:1)

我认为你无论如何都需要克隆项目

答案 1 :(得分:1)

在这种情况下的问题是,git不仅保存最新的结账,而且保存程序的整个历史记录(所有提交,标签,分支,等等),因此您可以轻松地在不同的转速之间切换。因此,最新的结账不会保存在任何地方 - 它只是从数据生成的临时结果。

但是如果你想节省带宽,AFAIK有一个选项,只需从给定日期开始下载所有对象,只需谷歌或搜索SO找出名称(我忘记了)。这样做的明显缺点是,在此之前的任何历史都不可用。但是对于简单的跟踪,这可能就足够了。

答案 2 :(得分:1)

SVN& Git可能看起来很相似,因为它们都是SCM工具,但是它们的实现方式却截然不同,即Git is way better

刚开始从新鲜和git克隆它。即使对于像Linux内核这样的大型项目,Git也非常快速克隆。

您还可以使用--depth选项来加快速度:

- 深度< depth>
        创建一个克隆,其历史记录被截断为         指定的修订数量。浅存储库有一个         限制数量(您无法克隆或获取         它,也不是推进或推入它),但如果你是充足的话         只对大型项目的近期历史感兴趣         历史悠久,并希望发送修复程序         作为补丁。

来源:http://git-scm.com/docs/git-clone

这是一个检查存储库最新版本的示例:

git clone git://source.winehq.org/git/wine.git ~/wine-git --depth 1

来源:http://mortalpowers.com/news/speed-up-git-clone-with-shallow-clones

稍后您可以将--depth选项与git pull

一起使用
- 深度=<深度>
        深化由其创建的存储库的历史记录         使用--depth =< depth>的git clone选项的指定数量。

来源:http://kernel.org/pub/software/scm/git/docs/git-pull.html

也许,如果您为深度填充足够大的数字(或者可能是-1?)以便获取存储库的整个历史记录,那么您将拥有正常存储库的所有功能,例如,能力克隆或从中获取,或从中推入或推入。

如果没有,你可以在一个单独的地方正常克隆它(也许当你有更快的连接时)并使用git format-patchgit apply将提交从浅存储库移动到新存储库中

马特

答案 3 :(得分:0)

你可以通过预先使用已经存在的git存储库来节省一些时间 - 你可能仍然需要下载很多(而且我不确定它有多聪明)正在努力达到它所需的最低限度)但它可能有所帮助。

如果你创建一个新的git存储库并将subversion checkout添加到它,那么该存储库应该包含许多以其他方式下载的对象。然后,您可以使用新存储库作为参考克隆上游git存储库:

git clone --reference /local/reference/repo git://remote/upstream/repo

请注意,新克隆的仓库将取决于您的被攻击对象是否存在;你可以通过重新克隆本地存储库来解决这个问题。