2011-04-15 3 views
12

현재, 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

프리 커밋 (pre-commit) 훅 스크립트에서 소스 코드에 대한 svn : eol-style 속성을 직접 확인하는 방법의 예제를 찾을 수 없습니다. 가장 근접한 파일은 mime-type 속성을 사용하여 파일이 텍스트 파일인지 확인하는 check-mime-type.pl입니다.

사전 커밋 스크립트 파일에 삽입 된 다음 스크립트는 커밋에 추가 된 모든 .cpp/.h 파일에 svn : eol-style 속성 집합이 있는지 확인합니다. (파일 확장자를 추가로 확인하기 위해 쉽게 확장 할 수 있습니다). 또한 svn : eol-style 속성이 누락 된 파일을 나타내는 메시지를 제공합니다. 지금 파우스 토 의 대답은 모든 저장소 아니 전 세계적으로 (서브 버전 1.8의 경우 출시 서브 버전 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 configuration (topic in Collab's blog 참조), 즉 모든 저장소의 트렁크 루트에있는 svn : auto-props

+0

저장소를 설정하는 방법을 알려주십시오. 그 링크는 그것을 읽는 방법만을 보여주고, 나는 구글로부터 아무것도 얻지 못한다. – lapis

+0

글쎄, 나는 TortoiseSVN의 저장소 브라우저를 통해 길을 찾았지만 콘솔 방식 또한 재미있다. – lapis

+0

이 답변은 도움이 되겠지만 설명이 필요합니다. Th OP는 자동 소품에 해당하는 것을 찾고 있지만 서버에 적용됩니다. 이 대답은 새롭고 유용한 SVN 1.8 클라이언트 저장소 저장소'svn : auto-props' 상속 속성 특성을 가리 킵니다. 그러나 이것은 1) 클라이언트 측 기능인 오래된 SVN 클라이언트입니다. 1.7은 그것을 전혀 사용하지 않으며 소품은 강요되지 않을 것입니다. 그리고 2) SVN 1.8 클라이언트조차도'svn --no-auto-props '를 추가 할 수 있고 다시는 아무 것도 시행되지 않습니다. 요약하자면 후크가 필요합니다. – javabrett

관련 문제