2009-10-06 20 views
6

CentOS 4.2でsvnバージョン1.3.1を使用しています(設定されたCMサーバーのためにアップグレードできません)。SVN: "Inconsistent line ending style" - 意図的に^ Mでファイルをチェックしています

私のコード(bashスクリプト)は、特に重要な理由から^ Mを持っています。残念ながら、Subversionは、私は、このファイルをチェックインすることはできませんそれは、と文句を言い:。
のsvn:一貫性のない行末スタイル
のsvn:あなたのメッセージをコミットが一時ファイルに残っていました

はSVN:失敗したコミット(詳細は続きます) :

私のコードから1つの^ Mを削除すると、チェックインできることが証明されています。^ Mが意図的で、ファイルをチェックインできるようにするにはどうすればよいですか?

答えて

10

ファイルからsvn:eol-styleプロパティを削除する必要があります。 Subversionは、このプロパティが追加されるまでファイル内の行末については気にしませんでした。 subversion bookを引用すると:

をこれは、デフォルトでは、Subversionの は あなたのファイルで使用される行末(EOL)マーカーの種類 に注意を払っていないことを意味します。

本は、その後、あなたがはしたくないまさにである、svn:eol-styleを設定することで、改行コードについてsubversionの世話をすることができる方法を説明していきます。

0

私はそれが文字列または何かとして使用されていると仮定しています。 bashは文字をエンコードする方法がありませんか?

svn propset svn:eol-style LF myscript.sh 

は、Subversionは常にLF-スタイルの行末を持つものとして、ファイルを扱うことになります:

0

は、私はあなたがsvn:eol-styleプロパティを使用する必要があると思います。

0

私はsvn:mime-typeプロパティをnone-textベース(application/octet-stream?など)に設定できると思います。これにより、Subversionが行末を無視することがあります。

svnbookのFile Content Typeセクションをご覧ください。

1

もう1つの方法は、最初にプログラム内の制御文字を取り除くことです。これには他の互換性のメリットがあり、今後の編集での問題を避けることができます。

次の例のように、そう

`printf '%b' '\015'` 

で簡単にはbashで\rを生成することができます。

$ echo abc`printf %b '\015'`def 
def 
$ 

または:

$ c=`printf %b '\015'` 
$ set | grep ^c= 
c=$'\r' 
$ 

を注:私がそこにいることを知っていますprintfを呼び出すより簡単な方法です。残念なことに、それらのeas私のやり方はbashとposixシェルでは違っています。bashのみのソリューションはかなりいいです:$'\r'。灰色だけでなく灰色:c='\r。灰かposixなのでashかどうか分かりません)

関連する問題