登录  /  注册
如何在svn中直接执行SegmentFault
php中文网
发布: 2016-06-06 20:52:26
原创
521人浏览过

我希望直接访问版本库中的 内容并且像访问目录一样,可以自动执行php,可以直接访问图片等。

在apache中已经加载了svn模块并且通过

 
DAV svn 
SVNPath "/Users/mike/opt/svn" 
登录后复制
登录后复制

打开了svn的http访问。但是在http://localhost/svn中php会被直接打开(可以看到内容)而图片却打不开(一片空白)

回复内容:

我希望直接访问版本库中的 内容并且像访问目录一样,可以自动执行php,可以直接访问图片等。

在apache中已经加载了svn模块并且通过

 
DAV svn 
SVNPath "/Users/mike/opt/svn" 
登录后复制
登录后复制

打开了svn的http访问。但是在http://localhost/svn中php会被直接打开(可以看到内容)而图片却打不开(一片空白)

apache的svn模块只能提供svn预览功能,是无法用来直接执行文件的。因为svn在服务器上不是按一个个文件存放的,而是以一定的格式存放在数据文件中。svn模块就是用来解析这种格式的。

如果你想svn提交后立即预览效果,可以使用svn hook的功能,所谓svn hook,就是允许你在提交版本之前或之后插入自己需要执行的命令。

首先在服务器上创建一个以后用来访问的web目录,比如这样(权限问题自己搞定)

mkdir /wwwroot/svn-preview/
登录后复制

在apache里面配置好这个目录的php运行环境,保证它可以被访问。
然后check out一份代码到这个目录(自己替换svn的url)

svn co http://my-svn-host/my-svn-path /wwwroot/svn-preview/ --username=my-svn-username
登录后复制

现在我们搞定了一份最新版的代码,并可以访问它了。然后要解决的是自动同步的问题。找到svn的repos目录,从你的例子上看,似乎是/Users/mike/opt/svn这个目录。

cd /Users/mike/opt/svn/hooks
ls
登录后复制

可以看到这里存放了很多hook的模版文件(以tmpl结尾的,你只需要把后缀名去掉,自己改动一下就可以生效了)。我们需要的是提交后同步,因此找到post-commit.tmpl,把他拷贝一份

cp post-commit.tmpl post-commit
chmod +x post-commit
vim post-commit
登录后复制

这时候打开了hook文件,里面有个例子是关于每次提交后发送个邮件提醒的,用#加在行首,把它们注释掉,我们用不着它。在最后面增加我们的命令,其实就是一行

svn up /wwwroot/svn-preview/ --username=my-svn-username --password=my-svn-password
登录后复制

提交个文件到svn,然后访问看看是不是正常同步了。

之前配置svn的时候还要加上字源编码才能同步
export LANG=zh_CN.UTF8
svn up /wwwroot/svn-preview/ --username=my-svn-username --password=my-svn-password

相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 技术文章
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2023 //m.sbmmt.com/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

 | 本站CDN由 数掘科技 提供

登录PHP中文网,和优秀的人一起学习!
全站2000+教程免费学