首页 > 软件工程 > 一个大型客户端项目的svn目录划分方法

一个大型客户端项目的svn目录划分方法

这几年,参与了大大小小多个项目,关于源代码管理,主要经历过三款源代码管理器:VSS,SVN跟GIT。SVN是我经历过的项目中用得最多的,那时GIT还没流行起来。GIT是我目前我提交代码到github使用的源代码管理器。
现在手头开发的是一款mac软件,参加的这个项目算是一项比较大的项目。去年下半年跟今年,我的所有时间跟热情,几乎都投入到该项目的开发中去。该项目使用的源代码管理器是SVN,目录的划分方法主要如下文所述。在此分享的是svn层面上的划分方向,并不涉及项目里面代码目录的细节划分。
假设项目名称为demo
假设src是一些源代码文件、或者项目的配置xml文件、界面图片等,
假设bin是一些二进制文件,比如编译后产生的最终程序,需求文档,设计稿,库文件(比如mac osx 10.6的sdk,有几百M)等。
1、建立src服务器跟bin服务器
src 放在在 http://svn_code/demo 服务器
bin 在 http://svn_bin/demo 服务器
原因:
  • 将功能不同的文件放到不同的服务器,源代码放到src服务器。二进制等大的资源放bin服务器。因为源代码容量小,单独放到src服务器,checkout、打tag、或者branches操作的时候,不会因为非常大的bin资源导致卡,操作起来流畅。
  • svn不能很好地管理bin文件,没必要把bin文件跟src混到一块。
  • 我见过一个项目里面有几G的二进制资源,如果把bin跟src放到一块,那将是一场灾难。
2、分别在根目录下建立trunk branches tags目录
 src跟bin里面的目录一定要分别建trunk branches tags 目录
原因:这个是必须的!
  • trunk是主干,你当前版本所用的目录
  • branches是分支,分支版本所用的目录。比如历史版本1.0发出去后,现在你们是在搞2.0版本,trunk是2.0。同时又想在1.0版本上添加一些新功能,你可以对1.0版本搞一个分支来处理。
  • tags放的是trunk每一个重要时刻的标签备份,比如1.0版本发出去后,就要打一个tag(备份的作用,见证历史的作用)。
3、怎么样checkout:
mkdir demo;
cd demo;
svn co http://svn_code/demo src
svn co http://svn_bin/demo  bin
4、怎么样让src跟bin合作:
src/trunk目录里面放的是代码,编译的时候,将生成的二进制文件生成到bin/trunk目录,然后提交,这时候提交的二进制文件就是提交到bin服务器上的。
另外一种方法是:通过在src/trunk目录里面添加svn externals属性,把编译src需要依赖用到的bin
/trunk目录里面的目录链接过来。然后配置src的依赖或者输出二进制文件的时候,就可以直接指定src/trunk目录下的目录,不用指定到bin/trunk目录。
5、发版后,记得打tag

svn copy http://svn_code/demo/trunk  demo/src/tags/日期_版本号
svn ci demo/src/tags/日期_版本号  -m “ci tag 日期_版本号 ”

6、have fun

(转载本站文章请注明出处 www.helloitworks.com ,请勿用于任何商业用途)

分类: 软件工程 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.