web目录:/hoem/www/project svn版本库目录:/svn/project
1.cd /svn/project/hooks 2.新建post-commit,执行vim post-commit 内容如下
#!/bin/sh REPOS="$1" REV="$2" DIR="/home/www/project" export LANG=en_US.UTF-8 CURDATE='date' echo "Code Deployed By at $CURDATE,$REPOS,$REV" >> /svn/code_deploy.log svn update $DIR --username admin --password 123456接着
chmod +x post-commit3.到/home/www下checkout项目
svn checkout svn://127.0.0.1/project/到此步骤接受,在客服端提交代码更新就会自动同步到web目录了。 附上svn钩子类型 服务器钩子: svn服务端有9种钩子,分别是: A.关于锁定的2种 a1.pre-lock 对文件进行加锁操作之前执行该脚本 a2.post-lock 对文件进行加锁操作之后执行该脚本
B.关于解锁的2种 b1.pre-unlock 对文件进行解锁操作之前执行该脚本 b2.post-unlock 对文件进行解锁操作之后执行该脚本
C.关于提交的3种
c1.start-commit 在客户端还没有向服务器提交数据之前,即还没有建立 Subversion transaction(缩写为 txn) 之前,执行执行该脚本 c2.pre-commit 在 Subversion transaction 完毕之后,在提交之前,执行该脚本
c3.post-commit 在提交完成,成功创建版本之后执行该钩子,提交已经完成,不可更改,因此本脚本的返回值被忽略。
D.关于属性的2种
d1.pre-revprop-change 在修改 revision 属性之前,执行该脚本
d2.post-revprop-change 在修改 revision 属性之后,执行该脚本。因为修改稿已经完成,不可更改,因此本脚本的返回值被忽略(不过实际上的实现似乎是该脚本的正确执行与否影响属性修改)
客户端钩子: tortoise svn客户端有6中钩子,分别是: A.关于提交的
a1.start commit hook
a2.pre-commit hook
a3.post-commit hook
B.关于更新的
b1.start update hook
b2.pre-update hook
b3.post-update hook