2011-04-15 24 views
12

現在、subversionのプロパティeol-styleを確保するために、私たちのプロジェクトに追加された各新しいファイルのnativeに設定されている、我々は、開発者のマシンのそれぞれの~/.subversion/configのファイルにこれを追加する必要があります。強制的にサーバー上でsvn:eol-style = native?

[miscellany] 
enable-auto-props = yes 

[auto-props] 
*.java = svn:eol-style=native 

があります方法は、svnサーバー上で等価を行うには?

答えて

9

いいえありません。

フックスクリプトを使用して、プロパティを設定するかどうかを調べることができますが、それ以外は設定できません。 Subversionは、CVSとは異なり、コミットから来るコードの内容を変更することはできません。

SVNブックはノートが含ま程度this question

警告

フックスクリプトを使用してトランザクションを改造しないでください。これの一般的な例は、コミット中にsvn:eol-styleまたはsvn:mime-typeのようなプロパティを自動的に設定することです。これは良いアイデアのように思えるかもしれませんが、問題を引き起こします。主な問題は、クライアントがフックスクリプトによって行われた変更を知らないため、クライアントに最新でないことを通知する方法がないことです。この不一致は、驚くべき予期しない動作につながる可能性があります。

代わりにトランザクションを変更しようとすると、それは事前にコミットフックで取引チェックにはるかに優れていると、それは必要な要件を満たしていない場合はコミットを拒否。

+0

興味深い。リンクありがとう。トランザクションを変更しようとするのではなく、プリコミットフックでトランザクションをチェックし、必要な要件を満たしていない場合はコミットを拒否するほうがはるかに優れています。 – Bart

+0

古くなった答え。 – bahrep

+1

これは時代遅れなのはなぜですか? –

0

プリコミットフックスクリプトのソースコードのsvn:eol-styleプロパティを直接チェックする方法の例が見つかりませんでした。最も近いのはcheck-mime-type.plで、MIMEタイプのプロパティを使用してファイルがテキストファイルかどうかを判断します。

プリコミットスクリプトファイルに挿入された次のスクリプトは、コミットに追加されたすべての.cpp/.hファイルにsvn:eol-styleプロパティセットが設定されていることを確認します。 (ファイル拡張子を確認するために簡単に拡張することができます)。また、どのファイルにsvn:eol-styleプロパティがないかを示すメッセージも表示されます。ファウストの答えは今リリースSubversionのすべてのリポジトリのためではありませんグローバル(リポジトリレベルで使用することができます1.8


のSubversion 1.8の場合は以降の後古くなっているという理由だけで

REPOS="$1" 
TXN="$2" 

# Get new cpp/h files 
ADDFILES=$(${SVNLOOK} changed "$REPOS" -t "$TXN" | sed -n -e '/^A.*\(\.cpp\|\.h\)$/s/^A *//p') 
#echo "ADDFILES=$ADDFILES" >&2 

# Check files for svn:eol-style property 
ESMISSING='' 
for f in ${ADDFILES} 
do 
    if [[ "$(${SVNLOOK} pl ${REPOS} -t ${TXN} ${f})" != *svn:eol-style* ]] 
    then 
    # output to stderr to include message in svn commit ouput 
    echo "No svn:eol-style property set on file $f" >&2 
    ESMISSING=1 
    fi 
done 

if [[ -n "$ESMISSING" ]] 
then 
    exit 1 
fi 
7

サーバ上で)repository dictated configurationtopic in Collab's blogも参照)、つまり各リポジトリのトランクのルートにある - svn:auto-props

+0

リポジトリの指示に従って設定する方法を教えてください。それらのリンクはそれを読む方法しか示していないし、Googleからも何も手に入れられないようだ。 – lapis

+0

さて、私はTortoiseSVNのリポジトリブラウザを通して方法を見つけましたが、コンソールの方法も面白いです。 – lapis

+0

この回答は参考になりますが、説明が必要です。 Th OPは自動小道具に相当するものを探していますが、サーバーに適用されています。この回答は、新規で便利なSVN 1.8クライアントstore-in-repositoryの 'svn:auto-props'継承プロパティー機能を指摘していますが、重要なのは1)これはクライアントサイドの機能です。 1.7はそれをまったく使用せず、その小道具は強制されません、そして2)SVN 1.8のクライアントでさえ 'svn --no-auto-props'を追加することができ、何も強制されません。要約すると、フックが必要です。 – javabrett

関連する問題