2011-03-20 8 views
9

죄송합니다 중복 된 경우, 나는 아직 정확한 대답을 찾지 못했습니다 ..SVN 디렉토리를 잠급니다

어떻게 svn 디렉토리를 명령 행에서 잠급니다?
내가 SVN 서버에 액세스 할 수있는 사람을 필요로 발견 한이 답변의 모든 : 나는 체크 인

편집

에서 지점을 잠글 필요가있다. 그게 나를위한 옵션이 아닙니다. 나는 소스 제어 기계가 문자 그대로 볼트에 고정되어있는 회사에서 일하고 있습니다. 인증 규칙 변경 액세스 권한을 얻는 것은 ATM을 해결할 수없는 과정입니다.

+1

http://stackoverflow.com/questions/4064229/svn-lock-branch – easel

답변

7

디렉터리를 잠글 수 없습니다. 디렉토리에 대한 쓰기 액세스를 금지하는 권한 부여 규칙을 작성할 수 있습니다. 일반적으로 이러한 유형의 작업이 수행됩니다. 당신은 또한 pre-commit hook을 사용할 수 있지만 Subversion의 authz가 가장 좋다고 생각합니다. 여기 링크입니다 :

http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html

+0

스크립트를 통해 설정하고 authz 파일을 편집하지 않고도이 방법을 설정할 수 있습니까? 실수로 삭제되지 않도록 디렉토리를 일시적으로 차단해야합니다 (예 : svn rm 작업을 수행 할 때). – runlevel0

1

나는 최근 http://www.noah.org/engineering/olden/svn_directory_lock.html

해당 게시물에서 특정 파이썬 스크립트가 과잉이다 영감 솔루션이이 문제를 해결,하지만 난에 대한 사전 커밋 후크에 다음을 넣어 내 repsoitory : 그래서 지금

#!/bin/sh 

err() { echo ${1+"[email protected]"} 1>&2; } # stderr is sent to user 

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

SVNLOOK=/usr/bin/svnlook 

# Make sure there is a log message. 
# 
$SVNLOOK log -t "$TXN" "$REPOS" | grep -q "[a-zA-Z0-9]" 
if [ $? -eq 1 ] 
then 
    err "ERROR: Must enter a log message for this commit!" 
    exit 1 
fi 

# Usage: locked_dir dir [transaction_id] 
locked_dir() 
{ 
    if [ -z "$2" ]; then _tid=""; else _tid="-t $2"; fi 
    $SVNLOOK propget $_tid "$REPOS" lock "$1" >/dev/null 2>&1 
    if [ $? -eq 0 ]; then echo true; else echo false; fi 
} 

for d in $($SVNLOOK dirs-changed -t "$TXN" "$REPOS") 
do 
    locked_before=$(locked_dir $d) 
    locked_tx=$(locked_dir $d "$TXN") 

    if [ $locked_before = $locked_tx -a $locked_tx = true ] 
    then 
    err "ERROR: Directory $d is locked. Delete lock before you commit." 
    exit 1 
    fi 
done 

# All checks passed, so allow the commit. 
exit 0 

, 당신은 단순히 "svn의 propset"를 사용하여 잠 그려는 디렉토리의 "잠금"속성을 만들 것을 약속 할 수 있습니다.

관련 문제