如何将项目进行svn管理

By SuperTaoer | 四月 1, 2009
Under: 程序 技术 周边, 运动 游戏 音乐
Views:

如何将项目进行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
 
#即可。

差..好文!! (还没评价)
Loading ... Loading ...

Leave a Message

No Messages

No Messages

RSS feed for comments on this post. TrackBack URI

Leave a Message