How to work on the offline subversion repository

Subversion作为开源社区的使用广泛的版本管理工具获得越来越多人的认可。由于其设计理念的关系,简化branch的很多功能,同时对于Merge的功能支持有限,为了能够支持分布式的开发就需要大家采用频繁少改动量的方式向代码库中提交代码,这样尽量减少代码中的冲突。一旦你的网络环境改变了,例如出差或者是休假,那你就很难在你的代码中进行复杂的操作。

 

这里可以和举一个简单的例子,就是你现在想对你的代码进行refactoring的操作,需要修改一些类名(svn mv classA.java classB.java),但是这时你对classA.java 已经进行了一些修改,这样如果你不能及时将你的修改操作进行提交的话,那你就无法很方便的执行上面的重命名操作。

 

那有没有有一个好的方法能帮我完成一个离线的Subversion代码修改呢?<p>我上个礼拜在出差的过程中就遇到这样的问题,由于当时的环境不允许我连入公司内部网络提交代码,我需要构建一个离线的本地开发环境来记录我对代码的修改,同时在回到公司之后将这些代码修改提交到公司内部的Subversion repository。

 

通过Google 我找到了一个叫做Git的版本管理工具,这个软件提供了一个git-svn 子命令,这样你就可以轻松实现一个基于你的Subversion代码库基础上新独立的Git代码库,当然这样你自己在本地的修改可以被Git管理起来,通过 git-svn 完成Subversion代码库 到 本地代码库的同步,以及本地代码库到Subversion代码库的同步工作。

具体步骤如下

1. 使用 git-svn clone <your svn url> projectname

2. 这时你可以放心出差或者是度假了,如果有必要你可以在 projectname 目录下进行你的工作

3. 使用git commit -a -m "I am commiting the code offline " 提交你的代码

4. 当你的出差或者是度假回来

5. 你可以使用 git-svn rebase 来获取自从你离线之后SVN的所有改变信息,当然如果发生冲突了,那还是需要你手工解决这些冲突。

6. 然后你可以使用 git-svn dcommit将你的工作内容提交Subversion的代码库中,当然没有人知道你在用Git来管理你本地的代码;)

 

是不是有点动心了,我们现在开始准备安装Git。

如果你是Linux用户,大家可以用apt 或者 yum 来获取Git 的安装包。

对于Windows用户,目前我知道的方法就是通过CygWin安装git包。

如果你是Vista用户,你会遇到一些额外的问题,好在这些问题都有相关的解决方法,你可以参考Capi's Coroner 的 Blog

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章