颠覆中适当的mime类shell脚本

时间:2013-03-08 18:13:18

标签: svn shell mime-types

当我将shell脚本(foo.sh)添加到subversion时,默认情况下会将svn:mime-type设置为application/x-shellscript。由于这不是以text/开头,因此diff和blame基本上忽略了该文件。我查看了official list of text mime-types,但没有看到任何看起来像shell脚本的内容。

设置它有什么好处吗?

更新

按照以下建议,我将mime-type设置为text / x-shellscript。但是,责备仍然认为它是一个二进制文件。

$ svn blame file.sh 
Skipping binary file: 'file.sh' 
$ svn proplist file.sh 
Properties on 'file.sh':
  svn:executable
  svn:mime-type 
$ svn propget svn:mime-type file.sh
 text/x-shellscript

我还需要做些什么来说服subversion它是一个文本文件吗?

3 个答案:

答案 0 :(得分:10)

file实用程序对shell脚本使用`text / x-shellscript':

$ file --mime-type /tmp/test.sh
/tmp/test.sh: text/x-shellscript

答案 1 :(得分:1)

自动属性是完全客户端功能。使用auto =属性,您还可以定义|重新定义一些属性以添加到Subversion存储库对象(即,对于旧的添加,您必须重新定义错误的mime类型)

在您的subversion的config文件中(与平台相关的位置)

  • [miscellany]部分取消注释# enable-auto-props = yes字符串
  • [auto-props]部分取消注释# *.sh = svn:eol-style=native;svn:executable并按顺序编辑(删除不需要的内容,添加所需内容,如svn:mime-type=text/plain

在此之后,repo中的所有 * .sh文件将显示为text / plain。

但是,因为config是客户端的,并且它的更改没有在repo中填充,所以任何其他Subversion客户端将继续添加* .sh文件作为text / x-shellscript,除非您的更改不重复

答案 2 :(得分:1)

Subversion很少自己设置mime类型;要么你的客户自己做了(在这种情况下你可能想调整它的配置),或某种形式的标准svn自动道具处理是活跃的(再次,你会想要调整它 - 对于shell脚本你也将想要将svn:eol-style设置为LF;有些shell将在DOS / Windows行结尾处进行barf,并且通过确保在任何地方使用Unix行结尾,可以避免通过网络共享或某些Windows shell构建使用文件时出现问题(例如Cygwin))。

svn blame的问题是该属性是版本化的。在属性更改之前对文件的任何修订仍然是二进制的(因为mime类型不以text /开头),因此diff(和blames)将不能(轻松)对这些修订工作。

我认为唯一的修复是让管理员修改存储库以删除“坏”的mime类型。

但是,作为一种解决方法,您应该能够将--force归咎于责备,告诉它将所有文件视为文本。

事实上,看http://subversion.1072662.n5.nabble.com/svn-blame-not-working-for-files-which-had-binary-mime-type-in-a-previous-revision-td177847.html,最近的颠覆客户会告诉你使用--force。

相关问题