重新安装svn+apache以后,
发现一个问题,比如java源代码,现在是通过浏览器下载,而不是直接在浏览器中展示了。
以前是怎么做的呢?想不起来了。文档啊文档,很重要的。现在重新想办法吧。
最简单的办法:apache强制mime类型
其实最简单的办法,是借助apache 核心模块的指令ForceType,见:
http://httpd.apache.org/docs/2.2/mod/core.html#forcetype
可以强制配置mime类型,比如:
<Location /svn>
…
ForceType text/plain
</Location>
这样就可以在浏览器看源代码文本了,但是也有副作用,比如二进制文件怎么办,比如html页面,应该在浏览器中展示而不是显示代码。
subversion hook:在提交的时候触发服务器端程序写mime类型
subversion提供了hook,钩子,可以在比如提交前执行钩子
脚本。
利用这个特性,可以在提交前,比如发电子邮件,比如检查是否写log message了。
当然,也可以在提交前,改mime type,可以按照这个python脚本改写:
http://pear.reversefold.com/dokuwiki/svn:pre-commit
但是,subversion不建议这样做,因为,所有hook操作,最好不再修改提交的文本,只做只读的操作。如果做写文本或者属性的操作,svn用户的local work copy,将和服务器端不一致。比如我提交一个java文件,没有设置mime type,提交到svn,将触发svn hook,比如修改为text/plain,然后提交到svn库中,这时库中的记录和该用户的work copy不一致。可能会带来很多其他不可预知的问题。
svn自带的手动设置mime类型方式
svn可以为提交的文件定义mime类型,比如这样:
$ svn propset svn:mime-type image/jpeg foo.jpg
property 'svn:mime-type' set on 'foo.jpg'
如果是在tortoiseSVN客户端,可以通过交互界面实现类似的功能,而且还可以
递归操作:
缺点是,无法根据扩展名做区分。比如目录下有jpg,也有java文件,这个操作将所有文件都增加了text/plain mime类型。
eclipse的svn插件,subclipse也有类似功能。
svn提供的自动设置mime类型方式
在svn客户端,有个config文件,在win
dos xp,路径应该是:
C:\Documents and Settings\user_name\Application Data\Subversion\config
如果想让java代码的mime类型是text,可以这样写:
enable-auto-props = yes
[auto-props]
*.java=svn:mime-type=text/plain
这样,每次提交代码的时候,svn会自动将mime-type设置为text。不需要上面的手工设置了。
缺点是,需要维护一个config配置文件,比如很多开发人员,各种不同的环境,都需要事先做这样一个配置。
希望有这样的解决方案
比如,google code,用户提交上去的代码,自动就以text方式在浏览器端展示,不需要设置svn的配置文件。而且,用户可以手工设置mime type,比如有个html页面,如果设置成text/plain,则在浏览器中显示的是html源代码,如果设置为text/html,则显示的是页面的效果。
目前还没有找到这样的办法,估计要在apache设置方面做些工作。