如何将项目进行svn管理
如何将项目进行svn管理
这里并不说如何配置svn服务器,只是说一下儿如何将一般的项目导入到svn并进行管理的一些东西。
先来说说思路:
每次svn提交后,提交到主干(trunk),然后,创建一个最新的主干副本到tag,tag明类似:rel_YYYYMMDDHH(rel_年月日小时)
当然,也可以更细化成rel_YYYYMMDDHHiiss(rel_年月日小时分秒)
又或者您想细化到毫秒?那我也管不着。。。
这样就有了类似如下的目录结构:
svn project
–trunk(主干)
–tags
–rel_2009010102
–rel_2009010103
–rel_2009010201
也就是说,每次改动提交都新增了一个tags。
然后,就是如果发布到web了,例如你的web目录是wwwroot,
第一次发布首先将svn项目的trunk给check out出来,
之后每次做了更改,需要更新,有两种方法,第一个直接svn up,或者使用svn switch切换到最新的tags的rel_xxx版本。
同样的,如果想将web发布恢复到以前的版本,只要svn switch rel_xxxxx到对应的时间戳儿就ok了。
这样的好处就是可以自由的在web发布目录切换不同的版本了。
说明一点需要注意的是:在你初次将svn发布到trunk上,然后使用将主干的svn copy到分支时,会报错误,具体什么错误现在也忘记了,这个时候你需要给分支建立tags目录,就是使用mkdir tags就可以,然后再进行如上操作,就可以了。
下面是一些常用的命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #1.初始化: #创建svn目录 svnadmin create /path/to/project_name/svn #文件准备: #把所有需要导入的文件汇集到 /path/to/project_name/init 目录下 #把不需要的文件先暂时放在其他目录,例如一些静态图片等。 #导入: cd /path/to/project_name/init svn import ./ file:///path/to/project_name/svn/project_name/trunk -m "project init import" #建立分支目录: svn mkdir -m "first tag" file:///path/to/project_name/svn/project_name/tags #首次发布: #进入到web目录下,例如: cd /wwwroot/sites/project/ #从svn主干导出: svn checkout file:///path/to/project_name/svn/project_name/trunk #再在web目录中补充不需要svn版本控制的文件。 #以后每次提交更新都提交到trunk(主干)上,并并复制出一份新的到分支中,例如 svn copy -m "COMMENT ME" file:///path/to/project_name/svn/project_name/trunk file:///path/to/project_name/svn/project_name/tags/rel_YYYYMMDDHH #其中最后的YYYYMMDDHH更新时为年月日小时的替换。 #下面提供一个比较简单的脚本。 #文件名: svn_tag.sh #!/bin/bash prj=$1 msg=$2 timestamp=`date +%Y%m%d%H%M` if [ -s $prj ] then echo "usage: $0 project_name message" else echo "tag trunk to: file:///path/to/project_name/svn/$prj/tags/rel_$timestamp" svn copy -m "$msg" file:///path/to/project_name/svn/$prj/trunk file:///path/to/project_name/svn/$prj/tags/rel_$timestamp fi #每次提交到主干后,可以运行 svn_tag.sh your_project_name "your commit" #来进行添加分支。 #然后如果你想把某个分支切换到web目录供用户访问,只要执行 svn switch file:///path/to/project_name/svn/project_name/tags/rel_YYYYMMDDHH #即可。 |
Leave a Message
No Messages
RSS feed for comments on this post. TrackBack URI
我的简介: 谁说tmd巨蟹座傻来的?我就是tmd巨蟹里边儿最聪明的!!!