以前做支持的时候,不怎么写应用到生产环境的代码,最多是写写demo,发给客户的时候有免责声明,demo也是写到可以工作就行了,不需要反复修改,对版本控制没要求。内部的项目就使用IT的TFS,能访问内部网络就可以用,也很方便。因此一直没操心过代码管理和版本控制的事情。
现在情况不同了,给客户做项目,写的代码都是要用到生产环境的,对质量有要求,测试和反复修改就免不了,没有版本控制根本不行。公司内部的TFS不适用,因为项目期间我基本上都是在客户那里,访问公司的内部网络不方便。自建TFS太麻烦了,还要维护一台VM。我需要的是一个通过internet可以访问的版本控制工具。但是现在提供版本控制服务的网站,类似codeplex, Github等等,都是免费给开源项目的,私有的版本控制需要交服务费。不适合用在给客户的代码上。最终我还是选择用Git加上Dropbox或者SkyDrive,来实现自己的版本控制方案。
大部分版本控制软件,只在本地存储最后一个版本的拷贝,要查看历史或取得以前的版本,需要连接的服务器。Git的设计有别于其他的版本控制软件,使用Git在本地有整个repository的clone,查看历史或版本回朔并不需要访问远程的repository。如果不是做distribution,其实只要将repository存储在网络上某处,让团队其他人能够访问就可以了,不一定需要专门的服务器来host。因此,它其实可以完美地和Dropbox, SkyDrive等云存储服务结合起来使用。
用Git结合Dropbox (SkyDrive也类似)的工作流程如下:
- Clone本地repository到Dropbox中,$ git clone . ~/Dropbox/git/project.git。
- 增加一个remote: $ git remote add dropboxproj ~/Dropbox/git/project.git。
- 当本地有commit时,push到remote里:$ git push dropboxproj master。
团队成员从其他计算机上访问的流程如下:
- 建立一个remote: $ git remote add dropboxproj ~/Dropbox/git/project.git。
- Clone到本地:$ git clone dropboxproj。
- 当本有commit时,push到remote:$ git push dropboxproj master。
背后的同步由Dropbox完成了,十分方便。