公司的项目代码使用SVN进行管理,在本地开发的时候很多实验性质,或是尚未完全完成的代码是不能够Commit上去进行保存的,因为SVN连接到了持续部署的机器。但是对于程序员来说,“没有进入版本控制的代码就不算是代码”。针对一个比较大的Feature的来说,项目要求一次性Commit实在是有点不太合适啊。
唉,不过我在项目中没有啥话语权,没有更改整个流程的能力,只能找找别的方法解决了。平时喜欢用Git来管理源代码,主要是因为Git属于分布式版本管理系统,没有中心版本库的概念,每个repo都是一个完整的版本库。所以在离线状态下我也可以很方便地往本机的版本库中Commit代码。
同时Git的分支功能也十分强大,对于实验性质的代码来说,只需要一个git checkout -b xxx就能在半秒钟之内创建分支,既不占硬盘又省事。实验完毕后,想留下来就git merge,不想要了就git branch -d。
这里是最终的效果图。。
方法如下:
1.首先建立Repo,.gitignore文件和master分支,注意,gitignore中不要将svn添加进去(就是说必须要把.svn纳入git的管理中),不然以后你会看到海量的modified文件的。
2.在这个文件夹下面使用SVN将代码Check-out
3.在svn中设置忽略.git文件夹和.gitignore文件
4.进入git的master分支,将所有文件commit
5.以后git的master分支就负责与SVN的最新版本进行同步,其他分支负责维护新代码。正好这里有个Git开发模型,可以适当参考。
当需要开发新功能时,使用git checkout -b建立新的分支(如NewFeature),然后进行改动。
代码编写完毕,准备提交SVN服务器时(切记,不打算提交时不要做),切换回master分支,git merge一下,然后使用SVN进行提交。提交成功后可以把以前的NewFeature分支删掉。
之后再在master分支commit一次(因为生成了一些新的svn文件),大功告成
鼓捣了将近半个小时,主要是因为项目文件太多了,算上ignore掉的还有6000多个,操作前备份和复制一次相当耗时间啊。

