MERGEINFO 속성으로 SVN에 커밋을 방지하기 위해 트리거를 설정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2004981

  •  18-09-2019
  •  | 
  •  

문제

나는하고 싶어요 SVN MERGEINFO 속성을 작성하지 마십시오 가지의 뿌리를 제외하고는 무엇이든. 우리는 트렁크 가지와 다른 가지가 있습니다.

내가 SVN 트리거에 대해 전혀 알지 못한다고 가정하면, 분기의 루트 이외의 것에 대한 mergeinfo 속성의 추가를 방지하는 사전 커밋 후크를 설정하려면 어떤 단계를 수행해야합니까?

트렁크는 저장소의 "/트렁크"에 있으며 모든 분기는 "/branches/foo"에 있습니다.

도움이 되었습니까?

해결책

기본적으로 SVN을 정의해야합니다 사전 커밋 훅. 먼저 읽으십시오 일반적으로 고리.

pre-commit.tmpl 파일을 pre-commit, 거기에 논리를 구현하십시오.

다음과 같은 라인에 대한 현재 실행중인 트랜잭션의 차이를 조사하고 싶을 것입니다 : 추가 : SVN : MERGEINFO

추가 된 파일에 대한 정보는 다른 줄에 있기 때문에 GREP보다 더 복잡한 처리 도구가 필요할 수 있습니다.

거래에 원하지 않는 추가 자산이 있다고 판단하면 커밋을 차단할 수 있습니다. 또는 특히 대담한 경우 거래를 수정하고 계속할 수 있습니다.

다른 팁

다음은 작동해야합니다. 저장소에는 이미 트렁크에 SVN : MERGEINFO가 있으므로 아무도 다시 추가하기를 원하지 않습니다.

그건 그렇고, 우리의 실제 후크는 또한 모든 커밋이 로그 메시지를 동반하고 Repo 브라우저를 통해 중요한 최고 레벨 디렉토리의 삭제를 방지하도록합니다.

@echo off

set logfile=%TEMP%\%2.txt

"c:\program files\subversion\svnlook" log -t %2 %1 > %logfile%

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==UU goto checkmergetracking
)

for /f "tokens=1,2*" %%i in (%logfile%) do (
    if %%i==_U goto checkmergetracking
)

del %logfile%
exit 0

:checkmergetracking
"c:\program files\subversion\svnlook" diff -t %2 %1 > %logfile%
find "Added: svn:mergeinfo" %logfile%
if ERRORLEVEL 1 goto nomergeinfo

del %logfile%
echo "Addition of Merge Info Not Allowed" >&2
exit 1

:nomergeinfo
del %logfile%
exit 0
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top