脚本的代码放在 Google Code 上, CSS 和 JS 均直接调用 SVN 主干文件. 改写脚本的时候发现 IE6 以外的浏览器不能正常执行, 比如: 页面直接显示成代码, JavaScript 不执行, 且获得浏览器警告信息如下.
Resource interpreted as Script but transferred with MIME type text/plain
经过排查, 发现是 SVN 的 MIME 设置问题. Firefox, Chrome, IE9 等现代浏览器会通过判断获取文件的 MIME 类型, 调用不同的客户端程序或使用不同的方式来执行. 如果文件的 MIME 缺失或者有误, 那浏览器会按默认方式处理. 而老版本的 IE 浏览器会识别文件类型并更具识别到的类型来处理, 所以一般不存在执行问题.
为了 SVN 服务器上的文件也被正确执行, 需要修改 svn:mime-type
.
手动设置
TortoiseSVN 和 Eclipse 等一类客户端可以对文件的属性进行设定. 以下是 TortoiseSVN 中的修改方式.
- 右击展开文件菜单, 选择 TortoiseSVN > Propertise.
- 添加或者修改 Mime-Type.
- 保存并提交 SVN.
在 Eclipse 中修改方法差不多, 文件的 SVN 属性的目录位置在 Team > Set Property.
自动匹配
SVN 有配置文件, 可以在里面进行配置.
- 打开 SVN 配置文件.
- Linux: /etc/subversion/config
- Windows: %APPDATA%\Subversion\config
- 设置
enable-auto-props = yes
. - 找到
auto-props
区域, 并添加文件的 mime-type.*.js = svn:mime-type=text/javascript *.css = svn:mime-type=text/css *.html = svn:mime-type=text/html
修改保存后, 新建对应后缀的文件, 提交时自动会带上设置的 mime-type.
后话
长久以来, SVN 对我来说只是一个代码管理工具, 会通过 Apache 或者 Nginx 等 Web 服务器来获取文件, 所以头一次遇到觉得诡异. 刚发现问题的时候没有去抓包, 还以为是 Google Code 的问题, 真是错怪它了. 事实上, Web 服务器提供一个 MIME 模块, 用来识别文件的 MIME, SVN 也一样. 只是 Apache 等默认打开了 MIME 自动匹配, 而 Subversion 没有.
原文转载自:http://www.neoease.com/setting-mime-type-on-svn-client/
相关推荐
为了能在这些平台上直接浏览存储在SVN仓库中的HTML页面,就需要正确地配置文件类型,使得SVN识别这些文件为文本而非二进制文件。这样,当访问SVN仓库时,HTML文件就能被正确解析并展示出来。 #### 配置方法 下面...
今天试了下发现GoogleCode提供的SVN中的HTML在Firefox中显示为HTML源文件 Google了一下,找到了答案: 如果正常显示... Whodo SVN 的 Hooks 脚本会检查新增文件的属性,没有设置 svn:mime-type 和/或 svn:eol-style 属性
在使用 SVN 时,需要注意的一点是,需要告诉 SVN 哪些文件是文本文件,以便 SVN 能更好地管理这些文件。在 ~/.subversion/config 文件中添加以下内容: enable-auto-props = yes [auto-props] *.mode* = svn:mime-...
- `SVNAutoversioning on` 和 `ModMimeUsePathInfo on`:分别开启自动版本化和MIME类型处理。 注意:如果中文路径可能会导致问题,建议避免使用中文路径,且密码文件应保存为UTF8格式。配置完成后,重启Apache...
2. 创建邮件:利用`email.mime`模块创建邮件对象,设置发件人、收件人、主题和邮件正文。 3. 检查SVN变化:可能通过执行SVN命令行工具(如`svn log`或`svn diff`)来获取最近的提交信息,或者通过直接访问SVN仓库的...
- 默认mine-type是基于文件扩展名的,但可以通过`svn:mime-type`属性覆盖默认设置。 3. **`.svnignore`文件**: - `.svnignore`文件用于指定不应该被版本控制的文件或文件模式,避免误提交无用的文件。 - 文件...
如果希望所有同类型的文件(如所有.java文件)自动进行关键词替换,可以配置SVN的自动属性(auto-props)。步骤如下: 1. 打开TortoiseSVN的设置。 2. 编辑config文件。 3. 取消`#enable-auto-props = yes`行的注释...
- **其他配置**:例如,`browser.downloadable_paths`定义了可以从浏览器下载的路径,`mimeviewer.mime_map`定义了文件类型的MIME映射,这些设置影响用户在Trac中的浏览体验。 3. **权限管理**:注意,SVN和Trac对...
根据翻译文件中的提示信息,“未知的 `svn_node_kind`” 和 “发现意外节点种类”,我们可以推测这里涉及到的是 SVN 对节点类型的识别问题。 #### `svn_node_kind` 的常见值 - **`svn_node_none`**:表示不存在的...
svn:mime-type svn:ignore svn:keywords svn:eol-style svn:externals svn:special 自动属性设置 Peg和实施修订版本 外部定义 卖主分支 常规的卖主分支管理过程 svn_load_dirs.pl 本地化 理解地区 Subversion对地区...
svn:mime-type svn:ignore svn:keywords svn:eol-style svn:externals svn:special 自动属性设置 Peg和实施修订版本 外部定义 卖主分支 常规的卖主分支管理过程 svn_load_dirs.pl 本地化 理解地区 Subversion对地区...
最后,你需要在每个SVN项目库的`hooks`目录下的`post-commit`文件中调用`commit-email.pl`脚本。`post-commit`文件是一个shell脚本,它在每次提交时自动执行。你需要指定SVN仓库路径、提交版本号、邮件发送者、邮件...
本文将深入探讨`pysvn`库的使用,包括如何进行SVN统计、批量修改SVN文件等关键功能。 首先,我们需要了解`pysvn`库的基本结构和主要模块。`pysvn`提供了丰富的API,如`Client`类,用于执行各种SVN操作。例如,你...
- **文件属性支持**:允许为文件添加元数据,如读写权限、MIME类型等。 - **增量更新**:只传输变化的部分,提高效率。 - **跨平台兼容**:支持多种操作系统,包括Windows、Linux、macOS等。 - **图形化客户端**:...
- **项目设置**:如果项目已存在乱码问题,可以右键点击项目目录,选择“TortoiseSVN > 属性”,然后添加`svn:mime-type`属性,设定为`text/plain;charset=UTF-8`,以确保文件以UTF-8编码存储。 3. **文件更新问题...
MIME 类型 4.17.3.8. svn:needs-lock 4.17.3.9. svn:executable 4.18. 外部条目 4.18.1. 外部文件夹 4.18.2. 外部文件 4.19. 分支/标记 4.19.1. 创建一个分支或标记 4.19.2. 创建分支或标记的其他方法 4.19.3. 检出...