怎么让Google SVN托管服务正确处理HTML文档Content-Type?

问题

  前天写了一个关于SeaJS原理的demo,想把它放到线上做展示用。于是,想到了Google code的SVN托管服务,因为它支持HTTP访问。但是,文件上传到Google SVN之后,通过浏览器访问demo的HTML页面,却发现显示的是页面的源码。

分析

  搜索一番,发现问题的根源在于,SVN服务器端发送的HTML文件HTTP响应headers的Content-Type属性值为text/plain,而浏览器会把所有Content-Type为text/plain的文件按照纯文本文件来解析并显示。所以,我们需要告诉SVN 服务器:这是一个HTML文档,发送给浏览器的时候需要告诉浏览器应该按照解析HTML的方法来解析这个文件。问题的根源找到了,怎么解决呢?

解决方案

  感谢google。用之再次搜索一番,发现,我们需要告诉SVN服务器端,对于存放在服务器上的文件应该使用什么样的mime-type。windows操作系统下,我们可以这样操作。首先,使用TortoiseSVN checkout项目源码到本地,然后,再给本地文件的SVN属性添加mime-type信息,最后再把改动提交到SVN服务器。

具体操作的截图如下,操作系统为Win7:

step1:

step2:

step3:

step4:

 

我们还可以通过修改SVN客户端配置来自动设置每个文件的mime-type属性,相对前一种方法,可以节省太多精力了。

首先,我们要打开SVN客户端配置文件。在 TortoiseSVN 配置对话框的“General”设置页中有一个编辑按钮可以直接打开这个文件(其实,win7下的文件路径是 C:\Users\Administrator\AppData\Roaming\Subversion\config)。如图:

你需要修改两处: 首先在 miscellany 打头的这一节中取消注释这一行: 

1 [miscellany]
2 enable-auto-props = yes

 

其次,你需要编辑后面的一节,定义你想为哪些文件添加哪些属性。

 1 ##################################################
 2 ### Binary files
 3 ##################################################
 4 *.bmp   = svn:mime-type=image/bmp
 5 *.gif   = svn:mime-type=image/gif
 6 *.ico   = svn:mime-type=image/x-icon
 7 *.jpg   = svn:mime-type=image/jpeg
 8 *.pdf   = svn:mime-type=application/pdf
 9 *.png   = svn:mime-type=image/png
10                         
11 ##################################################
12 ### Text files, eol-style is native
13 ##################################################
14 *.css   = svn:mime-type=text/css
15 *.js    = svn:mime-type=application/x-javascript
16 *.htm   = svn:mime-type=text/html
17 *.html  = svn:mime-type=text/html
18 *.txt   = svn:mime-type=text/plain

这样,文件在提交的时候会自动添加相应的mime-type属性。

参考资源

  1. Subversion FAQ - User support for Google Project Hosting
  2. TortoiseSVN官方文档 - 项目设置

posted on 2012-07-25 09:00  王鸿源honingwon  阅读(633)  评论(1)    收藏  举报