江新宇

利用钩子方法动态构建网站SVN代码

SVN有很多钩子方法:

* start-commit
* pre-commit
* post-commit
* pre-revprop-change
* post-revprop-change

我们设置post-commit文件的内容:

/usr/bin/svn update SVN路径 --username SVN用户 --password SVN密码

设置可执行的权限:chmod +x post-commit

这里有一个前提:那就是SVN服务器和WEB服务器是同一台,不过在实际应用中,它们很可能是分离的,这时,我们可以用SSH的KEY认证达到从SVN服务器自动远程执行命令更新WEB服务器的目的:

先在SVN服务器上做好KEY,并把生成的KEY文件拷贝到WEB服务器上:

ssh-keygen -t rsa
scp /root/.ssh/id_rsa.pub WEB地址:/root/.ssh/authorized_keys

然后把post-commit文件的内容改为:

ssh WEB用户@WEB地址 /usr/bin/svn update SVN路径 --username SVN用户 --password SVN密码

如果/etc/ssh/sshd_config设定了PermitRootLogin no,则不允许Root登陆,那么你得换一个用户试试。

------------------------------------------------------------------------------

顺便说一句,别忘了设定Apache,以防止SVN目录被浏览:

<DirectoryMatch "/\.svn">
Order deny,allow
Deny from all
</DirectoryMatch>

另外,如果要在Putty下使用id_rsa的话,不能直接用,需要用Putty提供的puttygen工具转换一下:

Conversions -> Import key -> Save private key
posted @ 2011-08-26 11:25  新风宇宙-江新宇的博客  阅读(389)  评论(0编辑  收藏  举报