개발자가 루트가 아닌 디렉토리에 svn : mergeinfo를 설정할 수 없도록하는 사전 커밋 훅을 사용하고자합니다. 즉, svn : mergeinfo는 만 "trunk"또는 "branches/branchName"과 같은 디렉토리에 설정할 수 있습니다. 개발자는 때때로 루트의 하위 디렉터리를 병합 대상으로 사용하는 것이 좋지 않다는 것을 "상기시켜야"합니다 (나열된 모범 사례에 따라 here). 누구든지 그런 훅 스크립트가 있거나 어디서 찾을 수 있는지 알고 있습니까? 나는 Windows 환경에 있기 때문에 일괄 처리 나 PowerShell을 사용하는 것이 좋지만 아무것도 도움이 될 것입니다.루트가 아닌 디렉토리에서 svn : mergeinfo를 허용하지 않는 Svn 사전 커밋 훅
답변
우선, 필자는 작업을 수행하기 위해 perl이나 python을 사용하는 것이 좋습니다. Windows 배치는 많이 필요합니다.
http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/의 예제 스크립트를 사용할 수 있습니다. 예를 들어, verify-po.py 스크립트는 파일 인코딩을 검사하고 commit-access-control.pl.in은 커밋 권한이 있는지 확인합니다. 스크립트에서 후자의 경우와 마찬가지로 svnlook diff을 사용하여 디렉토리의 속성을 변경하고 정규 표현식을 사용하는 분기 또는 태그인지 여부를 확인하십시오.
업데이트
당신이 찾고있는 것 같다 enforcer pre-commit hook script 발견.
은 무엇이 스크립트가 수행하는 것은 이 진행되는 거래를 슬쩍 svnlook을 사용합니다. 트랜잭션을 통해 이동하면서 후크 집합을 호출하여 저장소 관리자가 이 무엇이되는지 조사하고 이 수용 가능한지 여부를 결정할 수 있습니다. 이 파일에 속성에 추가되는 각 행에 대해 호출 이후
포함 된 여러 가지 방법과 는, 그 (것)들의 사이에서()를 verify_property_line_added.
당신이 서버에 CPAN 경우 :
https://github.com/gnustavo/SVN-Hooks/blob/master/examples/check-mergeinfo.pl
그렇지 않은 경우는 (http://comments.gmane.org/gmane.comp.version-control.subversion.user/118969 기준) :
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
if !($SVNLOOK log -t "$TXN" "$REPOS" | grep -q '\[override] ';) then
# Get list of paths which have changed
TXN_PATHS=$($SVNLOOK changed -t "$TXN" "$REPOS")
# Filter those which are allowed: /trunk, /branches/*,...
TXN_PATHS=$(echo "$TXN_PATHS" | grep -Ev "^....(trunk/|branches/[^/]+/)$")
# Iterate over all paths, which are not allowed to have mergeinfo
while IFS= read -r TXN_PATH; do
ELEM_PATH=$(echo "$TXN_PATH" | cut -c 5-)
MERGEINFO=$($SVNLOOK propget "$REPOS" svn:mergeinfo -t "$TXN" "$ELEM_PATH" 2>/dev/null)
if [ ! "$MERGEINFO" = "" ]; then
echo " Cannot merge into directory that is not trunk or a branch:" >&2;
echo " $ELEM_PATH" >&2;
echo " Override by using [override]." >&2;
exit 1;
fi
done <<< "$TXN_PATHS"
# echo "Merge info check: OK"
fi
- 1. SVN - 코드 형식을 검사하기위한 사전 커밋 훅
- 2. 일관성없는 탭 사용으로 파이썬 파일을 거부하는 SVN 사전 커밋 훅
- 3. SVN 훅 스크립트 충돌
- 4. Tortoise 사전 커밋 사용자에게 메시지 표시 SVN
- 5. SVN 클라이언트 측 훅
- 6. SVN 사전 커밋 후크 Windows에서 업로드 FTP
- 7. 사전 커밋 SVN 후크 + 이미지 최적화 스크립트
- 8. 지침에 따른 사전 채우기 SVN 커밋 메시지
- 9. SVN 커밋 규정
- 10. SVN propset svn : 로컬 디렉토리에서 needs-lock
- 11. SVN 커밋 오류 (윈도우 서버의 SVN)
- 12. -m없이 svn 커밋
- 13. SVN 커밋 쿼리
- 14. SVN 강제 원격 커밋
- 15. SVN Windows XP에서 커밋
- 16. svn : local 커밋
- 17. SVN 커밋 인증 실패
- 18. svn 커밋 메시지
- 19. Subclipse - 루트가 아닌 폴더에 SVN 저장소 체크 아웃
- 20. 사전 커밋에서 SVN 변경 속성
- 21. SharpSvn을 사용하여 사전 커밋 훅 작성하기. svnlook propget이 부족합니까?
- 22. SVN 클라이언트 게시물 커밋 후크
- 23. SVN 커밋 중에 작업을 실행
- 24. 포스트 커밋 훅 with Trac
- 25. SharpSVN을 사용하여 SVN 사전 커밋 메시지에 액세스하려면 어떻게해야합니까?
- 26. Svn : 관련 mergeinfo를 되 돌리지 않고 파일 내용을 되 돌리십시오.
- 27. SVN 분기 수준의 커밋 권한
- 28. SVN 커밋 실패 : 디렉토리가 오래되었습니다.
- 29. 크루즈 컨트롤을 사용하여 SVN 커밋
- 30. Hudson, Svn & 커밋 후 알림이
엄밀히 호기심 - 당신은 서브 버전 1.5 또는 1.6을 사용하고 있습니까? (나도 svn : mergeinfos의 모든 종류의 디렉토리/파일을 비 루트 디렉토리와의 병합으로 인해 고통 받았다. 그러나 1.5에서) –
우리는 1.6이다. 내가 겪고있는 문제는 svn 클라이언트가 mergeinfo를 설정 한 오래된 1.5 버그 때문이 아닙니다. 대신 사용자가 "trunk/mySubProject"와 같은 루트가 아닌 디렉토리를 병합 대상으로 사용하여 병합을 수행하여 해당 디렉토리에 병합 정보를 설정하는 "사용자 오류"때문입니다. 나는 당신이 알고 있다고 확신하기 때문에, 이후의 합병을 망쳐 놓는다. –
참으로 - 정보 주셔서 감사합니다. 우리는 최근에 1.6에 불과하므로 상황이 어떻게 변했는지 관찰 할 시간이 없었습니다. 그래도 같은 문제를 해결해야합니다. + Favorite –