11

シェルスクリプト(foo.sh)をsubversionに追加すると、デフォルトで。に設定されsvn:mime-typeますapplication/x-shellscript。これはで始まらないのでtext/、diffとblameは基本的にファイルを無視します。テキストmimeタイプの公式リストを調べましたが、シェルスクリプトのように見えるものは見つかりませんでした。

設定するのに良い値はありますか?

アップデート

以下のアドバイスに従って、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に納得させるために私がしなければならないことが他にありますか?

4

3 に答える 3

15

このfileユーティリティは、シェル スクリプトに「text/x-shellscript」を使用します。

$ file --mime-type /tmp/test.sh
/tmp/test.sh: text/x-shellscript
于 2013-03-08T20:37:50.213 に答える
1

Subversion がそれ自体で MIME タイプを設定することはめったにありません。クライアントが自分でそれを行ったか (その場合、おそらくその構成を調整したいでしょう)、または何らかの形式の標準の svn auto-props 処理がアクティブになっています (ここでも、調整する必要があります - シェル スクリプトの場合は、 svn:eol-style を LF に設定したい; 一部のシェルは DOS/Windows の行末で barf し、どこでも Unix の行末が確実に使用されるようにすることで、ネットワーク共有やシェルの Windows ビルドを介してファイルを使用する際の問題を回避します。 (例: Cygwin))。

svn Blame の問題は、プロパティがバージョン管理されていることです。プロパティの変更前のファイルのリビジョンはバイナリのままなので (MIME タイプが text/ で始まらないため)、それらのリビジョンに対して diff (および Blame) は (簡単に) 機能しません。

これに対する唯一の修正は、管理者にリポジトリを変更して「悪い」MIME タイプを削除してもらうことだと思います。

ただし、回避策として --force を Blame に渡して、すべてのファイルをテキストとして扱うように指示できるはずです。

実際、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 を使用するように指示します。

于 2014-01-06T16:08:22.480 に答える
1

自動プロパティは完全にクライアント側の機能です。auto=properties を使用すると、Subversion リポジトリ オブジェクトに追加するプロパティを定義または再定義することもできます (つまり、古い追加の場合、間違った MIME タイプを再定義する必要があります)。

configサブバージョンのファイル内 (プラットフォームに依存する場所)

  • [miscellany]セクション内のコメント解除# enable-auto-props = yes文字列
  • [auto-props]セクションでコメントを外し、適切# *.sh = svn:eol-style=native;svn:executableに編集します(不要なものを削除し、必要に応じて追加しますsvn:mime-type=text/plain

この後、リポジトリ内のすべての新しい*.sh ファイルが text/plain として表示されます。

ただし、構成はクライアント側であり、その変更はレポに取り込まれないため、変更が繰り返されない限り、他の Subversion クライアントは *.sh ファイルを text/x-shellscript として追加し続けます。

于 2013-03-09T14:58:26.377 に答える