代码之家  ›  专栏  ›  技术社区  ›  Troy Daniels

subversion中shell脚本的正确mime类型

  •  13
  • Troy Daniels  · 技术社区  · 12 年前

    当我向subversion添加shell脚本(foo.sh)时,默认情况下它会设置 svn:mime-type application/x-shellscript 。因为这不是从 text/ 、diff和指责基本上忽略了该文件。我看了看 official list of text mime-types 但没有看到任何看起来像shell脚本的东西。

    有一个好的值可以设置吗?

    使现代化

    根据下面的建议,我将mime类型设置为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 回复  |  直到 12 年前
        1
  •  15
  •   nosid    12 年前

    这个 file 该实用程序将“text/x-shellscript”用于shell脚本:

    $ file --mime-type /tmp/test.sh
    /tmp/test.sh: text/x-shellscript
    
        2
  •  1
  •   Lazy Badger    12 年前

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

    在里面 config 您的subversion文件(依赖于平台的位置)

    • 在里面 [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客户端都将继续以text/x-shellscript的形式添加*.sh文件,除非您的更改不再重复

        3
  •  1
  •   Zastai    11 年前

    Subversion很少单独设置mime类型;要么是您的客户端自己完成的(在这种情况下,您可能需要调整其配置),或者某种形式的标准svn自动道具处理处于活动状态(同样,您需要对其进行调整-对于shell脚本,您还需要将svn:eol样式设置为LF;一些shell将在DOS/Windows行结尾处弹出,并且通过确保Unix行结尾在任何地方都使用,可以避免通过网络共享或某些Windows构建的shell(例如Cygwin)使用文件的问题)。

    svn指责的问题在于属性的版本被控制了。在属性更改之前对文件的任何修订都仍然是二进制的(因为mime类型不是以text/开头),所以diffs(和指责)不会(容易)对这些修订起作用。

    我认为唯一 修理 这是为了让管理员修改存储库以删除“坏”的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 ,最近的subversion客户端会告诉你使用--force。