作者:Tony Qu

之前一直用googlecode的SVN做控制版本,没想到最近google被墙的越来越频繁,连googlecode也难逃一劫,虽然在这里我不想发表反动言论,但是一个开源网站ZF都封,我就不知道目的何在,这就是所谓的鼓励开源软件产业的发展?!

既然改变不了被封的事实,我只能考虑搬家,最近发觉github很火,决定尝试把代码搬过去,一开始我已经在考虑放弃之前SVN的提交记录,没想到github尽然支持直接从SVN导入所有代码及提交记录,这真的要感谢的作者,但有一个条件,要导入的SVN必须用于开源项目,毕竟github免费版也只支持开源项目(闭源项目的托管是收费的)。

下面来传授下导入步骤:

a. 进入

b. 输入你要导入的svn网址,比如

c. 输入一个github名字,比如npoi, 注意,这里导入的路径不是你个人的github路径,而是svn2git/<name>,这也是为何这个工具要求项目开源的原因,因为它就是要利用github的Fork功能。

d. 按Make a mirror按钮(别多按,它是ajax实现的),接下来稍等片刻,大概几十秒吧,你会看到last update提示,这表示导入成功了。

这时你就可以去svn2github/npoi看导入的代码了,为了让大家有更直观的感受,我直接截了的图给大家,看到吗?所有的以前googlecode的提交都在,这样就不怕丢失代码修改记录了。

e. 然后我们只要点Fork,就能把这个项目直接搬到你自己的github路径下面了,如tonyqus/npoi。

到这里,我们完成最基本操作——将你的项目从googlecode搬到github来。那么万一googlecode还有新的更新,能同步过来吗?当然能,版本合并可是github的强项啊。

首先,还是进入, 和之前的操作全部一样,当你按Make a mirror按钮之后,如果成功了,你会发现Last update会有变化。为确保同步是成功的,你可以去Network选项卡看看是否有新的commit进来。

接下来,我们要借助Git-shell,命令如下

a. 定义upstream

git remote add upstream git://github.com/svn2github/npoi.git

b. 获取upstream的最新版

git fetch upstream

c. 进入本地master路径

git checkout master

如果是通过windows版github客户端进入shell,此部可忽略,因为默认进入shell就会在master上,如图所示

d. 将upstream的更改在当前branch上重放

git rebase upstream/master

d. 将改动同步到github

git push –f origin master

好了,到此你完成了从googlecode到github的更新。

 

参考: