尝试Git中

今儿终于成功把一个svn的项目迁移到了git上。之所以用git不用svn是因为这个项目文件太琐碎,托管项目的服务器走svn实在太慢了。昨天恰好发现它已经提供了git支持,于是乎就决定尝试一下。话说加了新feature为什么没有给我邮件通知啊,这家做SCM的太低调了。当然,我最终没用hg的原因也很简单,因为没有hg嘛……= =b

由于我用svn用的比较随意,大部分时间是当一个文件管理工具来用的,所以转移到git的时候被branch这个东西搞了半天,怎么也想不通要如何映射到git上。仔细琢磨了一下,发现git和svn在概念上是有本质上的区别的,很多文章用类比的方法来讲svn迁移到git是不合适的。譬如svn是可以单独checkout某个目录,而git如果想clone就必须全部搞下来。例如我总觉得svn的repo建起来比较麻烦,所以经常在trunk下同时搞着几个独立的project,这时候就很难直接把svn整个映射到git中。

而且git的强项不单单是分布式管理,还有强大的branch,所以按照svn的思路来用git也纯属蛋疼,没什么实质意义。因此我考虑比较合适的映射方式不是用git-svn把branch, trunk神马的直接搞成git的branch和master,而是需要先分析一下svn中的项目构成,逐个目录的建立git repo。例如原先我可能在trunk中放了好几个project,foo1和foo2,那么我觉得比较合适的方法是各搞一个git repo来管理。

全部搞定之后,托管服务器的SSH Public Key一直不生效,搞了大半天。最后终于成功push,平均速度达到80k/s,相当给力。

One thought on “尝试Git中”

  1. 我常干的事是用git-svn checkout整个repository
    比如直接
    git-svn clone https://tkkn.googlecode.com/svn/
    然后branches神马的就都变成Master的一个目录了。。

    svn的branches是一个很邪恶的东西。他本质只是copy过去了……
    svn命令行开branches用的是邪恶的svn copy,这些细节被Tortoisesvn隐藏了,都看不到。。

Leave a Reply

Your email address will not be published. Required fields are marked *