문제

안녕하세요, SVN 서버가 텍스트가 아닌 이진이 아닌 파일에 SVN : Need-Lock 속성을 자동으로 할당하는 방법이 있는지 궁금합니다.

우리는 다소 소규모 개발자 팀을 보유하고 있지만 새로 생성 된 이진 파일 에이 속성을 설정하는 것을 기억하기를 기억하는 것은 모든 사람들에게 휴식을 취하고 있습니다.

도움이 되었습니까?

해결책

SVN 구성 파일 편집 및 자동 소품 또는 사용에 대한 항목 추가 svn:auto-props SVN 1.8 및 새로운 클라이언트를 갖춘 버전의 부동산. svnbook을 읽으십시오!

편집하다:

SVN 1.8에서 신청할 수 있습니다 svn:auto-props 저장소의 루트 경로에 대한 속성. 이것 좀 봐 릴리스 노트 그리고 업데이트되었습니다 SVNBOOK 1.8 장.

다른 팁

아파치 파괴 1.8이 소개되었습니다 저장소 규정 구성 필요한 기능 SVN 1.8 클라이언트, 그러나 1.8 서버는 클라이언트 측 기능이기 때문에 필요하지 않습니다.

Subversion 1.8을 사용하면 새로운 Subversion을 사용하여 저장소 내에서 자동 프로프 패턴을 구성 할 수 있습니다. svn:auto-props 상속 된 속성.

예를 들어, 설정 svn:auto-props 가치 *.exe = svn:needs-lock=* 저장소의 루트에있는 속성 (또는 프로젝트의 루트를 나타내는 저장소 경로). 결과가 발생합니다 새로 추가 된 각 *.exe 파일이 있습니다 svn:needs-lock=* 속성 적용.

멀티 라인 값을 전복 속성에 저장할 수 있으므로 다음 표준 SVN을 추가 할 수 있습니다 : Needs-Lock 및 Mime Pattern svn:auto-props:

*.bmp = svn:mime-type=image/bmp;svn:needs-lock=*
*.gif = svn:mime-type=image/gif;svn:needs-lock=*
*.ico = svn:mime-type=image/x-icon;svn:needs-lock=*
*.jpeg = svn:mime-type=image/jpeg;svn:needs-lock=*
*.jpg = svn:mime-type=image/jpeg;svn:needs-lock=*
*.png = svn:mime-type=image/png;svn:needs-lock=*
*.tif = svn:mime-type=image/tiff;svn:needs-lock=*
*.tiff = svn:mime-type=image/tiff;svn:needs-lock=*    
*.doc = svn:mime-type=application/x-msword;svn:needs-lock=*
*.docx = svn:mime-type=application/x-msword;svn:needs-lock=*
*.jar = svn:mime-type=application/octet-stream;svn:needs-lock=*
*.odc = svn:mime-type=application/vnd.oasis.opendocument.chart;svn:needs-lock=*
*.odf = svn:mime-type=application/vnd.oasis.opendocument.formula;svn:needs-lock=*
*.odg = svn:mime-type=application/vnd.oasis.opendocument.graphics;svn:needs-lock=*
*.odi = svn:mime-type=application/vnd.oasis.opendocument.image;svn:needs-lock=*
*.odp = svn:mime-type=application/vnd.oasis.opendocument.presentation;svn:needs-lock=*
*.ods = svn:mime-type=application/vnd.oasis.opendocument.spreadsheet;svn:needs-lock=*
*.odt = svn:mime-type=application/vnd.oasis.opendocument.text;svn:needs-lock=*
*.pdf = svn:mime-type=application/pdf;svn:needs-lock=*
*.ppt = svn:mime-type=application/vnd.ms-powerpoint;svn:needs-lock=*
*.ser = svn:mime-type=application/octet-stream;svn:needs-lock=*
*.swf = svn:mime-type=application/x-shockwave-flash;svn:needs-lock=*
*.vsd = svn:mime-type=application/x-visio;svn:needs-lock=*
*.xls = svn:mime-type=application/vnd.ms-excel;svn:needs-lock=*
*.zip = svn:mime-type=application/zip;svn:needs-lock=*

Auto Props 방법은 사용중인 각 SVN 클라이언트에서 구성되어야합니다. 따라서 새로운 개발자 또는 새 시스템에서 기존 개발자를 설정할 때는이 구성을 수행해야합니다.

모두 사용중인 경우 거북이, 당신은 그것을 설정할 수 있습니다 TSVN : 오토 프롭 각 체크 아웃의 기본 폴더에있는 속성은 모든 TortoisesVN 클라이언트가 영예 롭게됩니다.

정말로 그것을 못 박고 싶다면 사전 커밋 각 저장소에 훅. 그만큼 집행자 스크립트는이를 위해 쉽게 도구 될 수 있습니다.

Python-fu가 있다면 리포드 (후계자 svnchecker)도 유용 할 수있는 것 같습니다.

선택하더라도 리포지토리의 기존 파일에 속성을 소급 적으로 적용 할 수있는 방법이 없습니다. 그러나 파일의 다음 커밋에서 시행 할 수 있습니다.

이 Subversion Wiki에는 Needs-Lock을 자동으로 추가하는 방법과 설정을 보장하는 방법에 대한 다양한 옵션을 설명하는 페이지가 있습니다. 이 페이지는 또한 예제 스크립트 및 구성 세부 정보를 제공합니다.

http://www.orcaware.com/svn/wiki/automatic_lock-modify-unlock

사전 커밋 후크를 사용하십시오

#!/bin/bash

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

SVNLOOK=/usr/bin/svnlook
ICONV=/usr/bin/iconv

SVNLOOKOK=1

# Check files for svn:needs-lock property
# Exit on all errors.
set -e

echo "`$SVNLOOK changed -t "$TXN" "$REPOS"`" | while read REPOS_PATH
do
 if [[ $REPOS_PATH =~ (A|M|U)[[:blank:]]{3}(.*)\.(.*) ]]
 then
  if [ ${#BASH_REMATCH[*]} -ge 2 ]
    then
  FILENAME=${BASH_REMATCH[2]}.${BASH_REMATCH[3]};

  # Make sure every file has the svn:needs-lock property set
   if [ "" == "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:needs-lock \"$FILENAME\" 2> /dev/null`" ]
    then
    ERROR=1;
    echo "" >&2
    echo "svn:needs-lock property has to be set on \"$FILENAME\"" >&2
    echo "" >&2
   fi
  fi
 fi
 test -z $ERROR || (exit 1)
done

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

그리고 사전 잠깐 후크

#!/bin/bash

REPOS="$1"
PATH="$2"
USER="$3"

# If a lock exists and is owned by a different person, don't allow it
# to be stolen (e.g., with 'svn lock --force ...').

# (Maybe this script could send email to the lock owner?)
SVNLOOK=/usr/bin/svnlook
GREP=/bin/grep
SED=/bin/sed

LOCK_OWNER=`$SVNLOOK lock "$REPOS" "$PATH" | \
            $GREP '^Owner: ' | $SED 's/Owner: //'`

# If we get no result from svnlook, there's no lock, allow the lock to
# happen:
if [ "$LOCK_OWNER" = "" ]; then
  exit 0
fi

# If the person locking matches the lock's owner, allow the lock to
# happen:
if [ "$LOCK_OWNER" = "$USER" ]; then
  exit 0
fi
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top