SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3061|回复: 1

[原创] 集成禅道和svn

[复制链接]
发表于 2015-10-14 14:19:25 | 显示全部楼层 |阅读模式
说明:svn集成功能配置会比较复杂,我们会尽量通过文档来帮助大家配置成功!如果实在配置不成功的,可以考虑找我们做收费技术支持。# r8 E3 u7 {! T0 p, F/ K
禅道于2.2版本内置了svn集成功能,把禅道和用户代码进行有效关联,方便用户查看。这篇文章将给大家讲述如何配置禅道集成svn。
7 U5 q. i* o6 J4 }
( s* v; w! N( \" e9 p一、subversion集成机制说明
, \& [9 a4 u4 a0 p! H( Y; Dsubversion集成的基本机制是:分析提交代码时的注释 => 得出相应的story, task, bugID => 写入到禅道的数据库。& D# R. @7 E6 ~9 J* w) C
实现上述功能有两个方案,一个方案是采用svn自带的钩子机制,当有代码提交的时候,触发一个钩子脚本,然后分析注释,得出相应的bug, story或者task的id号,然后调用禅道的api,将相关的记录写入数据库。还有一个方案是通过svn客户端软件的log命令,来获得所有的提交记录,然后分析,得出相应的id,写入数据库。2 y& @% i) N! x- N' `
上述两个方案各有各自的优缺点,我们最终是选择了第二个方案。因为第二个方案调试比较好调试,部署也相对方便,同时可以解析之前的所有记录,有比较好的灵活性。
/ ]: o& _5 _0 p5 T* i6 j! H7 U1 J  h& ]
二、在禅道所在机器上面部署svn命令行客户端
( O1 S' }( F, x! ^. isvn命令行客户端是指subversion自带的svn命令。windows下面是svn.exe,linux下面是没有后缀的svn。
4 p3 D3 y" X  t3 a# R. Y6 Y禅道所在的机器可以和subversion机器分开,不在一台机器上面。
9 x/ K0 I7 m$ b# r+ {$ w% s如果是linux机器,需要安装svn的客户端。rhel,centos可以用yum安装subversion, debian下面可以用apt-get install。: y& {6 Y4 X, {7 Y5 d3 Q
如果最新下载的windows一键安装包,里面已经内置了svn.exe的客户端。在\xampp\silksvn目录下面。
2 o& e- v5 s( B- q9 U如果在windows下面自己安装,可以考虑下载slilksvn的客户端软件,安装。0 `6 `) l2 B6 Z; p

, h! o8 q+ u, \& I8 r7 m三、配置禅道关于subversion的参数
! S4 T0 ?7 V/ M, B+ P3.1 代码位置) ]& q$ b/ G  T9 E
svn模块的配置文件位于zentao/module/svn/config.php。您可以直接修改这个文件,但建议您将改动保存到svn/ext/config/svn.php中。这样将来我们升级,就不会覆盖您的配置文件。
/ d; M# F8 d# X/ T0 O3.2 配置内容" X) K9 E/ j! c+ P1 U" ]1 H
关于subversion参数的设置,一共有下面几个概念:
2 z% I0 L% m  d+ w% \2 J0 q6 ]5 L4 X. y1.  svn客户端命令的位置。
* b. ]- c5 ^8 _8 R$ t2 Y2.  库(repo): 可以配置多个库。; A# b" D5 z+ k$ }7 P# b
3.  库的用户名和参数。
5 f$ m/ I- g  S% o
4 _# a, O, f% W0 _- t( W$ q下面让我们用实际的例子来说明。
) h$ F& F" U3 T! @! V' x3.2.1 如下图,找到图中红框标志的位置+ x4 _9 X) K$ ?9 A% K

0 J+ Z  I, i7 E( P5 ?/ K& k$ t' z1 i6 A* W9 K; G
3.2.2 修改代码$ T- p' B9 d# u: t& f) d. N
写法如下面例子所示- S- `0 A( N1 m" m) s

2 p4 c9 r$ ]) s$ J3 n* O  F$ B/ Z1 |- y7 `$ p2 E! h6 a* P
$config->svn->client 这个是用来存储svn客户端执行文件svn.exe路径。. |- R! N, i5 M$ K1 W! F' y
$config->svn->repos[$i]['path'] 这个是用来存储svn代码路径的;
' G, {' g- r# V3 O$config->svn->repos[$i]['username'] 这个是用来存储svn登录用户名的; 如果不需要登录,可以保持为空。" S: b9 c* Z* k; [6 t, U
$config->svn->repos[$i]['password'] 这个是用来存储svn登录密码的。
/ p! B4 x6 p# e7 `
, S; E' r8 r' N# V3.3 配置多个库
3 l  [+ Q9 ]& V+ G3.3.1 同上,在同一个文件里找到如下代码' O6 [6 h3 F: r+ ~8 L$ k2 _! L/ v
; b, F/ D; X( r
: L; O9 M( _0 D% Y4 L
3.3.2 修改代码1 Z! q2 C' k/ h- A* _1 s1 K
①将代码中的“/*””*/“删除,其余修改同上,注意:$i ++ 不可修改。
3 j3 i1 L6 w; H. z. W+ A6 i②如果还有svn库,复制此段代码,进行同样的配置即可。
2 U- n0 E2 s5 ^3 y, V5 |
' }' g; l2 |% y8 j. q四、代码提交注释格式
; h& e& I" K0 p8 r1 i% d开发者在提交svn的时候,需要在备注里面注明此次修改相关的需求,或者任务,或者bug的id。比如下面的格式:; ^4 l9 U$ C  d9 m
bug#123,234, 1234,也可以是bug:123,234 1234,id列表之间,用逗号和空格都可以。
- \8 u9 n0 E. Cstory#123 task#1230 u1 {) p! E* K+ X5 j$ ?# a
bug, story, task是必须标注的。:)
* s, c$ g) u! g! {/ F" F* Q3 e3 Q& f; u8 {" [7 N
五、执行svn同步命令
* N$ B, \+ }5 e, T0 `; X5.1 参考《初始化管理脚本》这篇文章初始化命令行的脚本。
$ U0 N! R. B! h. o+ k& f5.2 进入到zentao/bin/目录下面,执行syncsvn.bat或者syncsvn.sh脚本。
/ I2 M( C7 y7 F( s5 e5.3  程序运行的效果图:# {$ Z& ]- K% t( s9 H4 m! z: x0 P
- g8 B. g$ ^4 e9 j0 N6 q
8 D; }+ F* i4 I( O3 u3 y; u' n
5.4 查看相应的bug:% Z! X8 H, Y4 q: x' E; j

9 H" u4 u# o" X: R6 x/ _* Z2 `# a4 E( d. f+ J0 p
六、部署定时任务
3 r2 v2 c0 L, Z! H  y. q上述命令部署好之后,将该命令加入定时任务就好了。比如可以5分钟执行一次。
* J* v% j& U( L1 K# V2 t2 Zwindows下面使用计划任务,linux下面使用crontab。& P! j( ?, f: {, Y
& Z' P0 [; \' d' k
七、注意事项& Y& l, m. r' B. E4 k
建议不要使用https或者ssh协议来访问,因为牵扯到https和ssh证书的验证交互问题,操作起来会比较麻烦。
' J/ m- n. D3 c; C$ N  P% H/ Z, s  @, j7 r

* o) i  L6 z+ B* E; t

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金钱 +5 收起 理由
mihua_nini + 5 很棒!

查看全部评分

发表于 2018-3-19 10:01:19 | 显示全部楼层
详细很给力,赞一个。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2018-12-17 14:11 , Processed in 0.097723 second(s), 9 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表