는 무엇입 pre-revprop-변경 후크에서 SVN,그리고 어떻게 그것을 만들 수?
문제
내가 원하는 편집하려면 로그에 댓글을 저장소 브라우저하고 오류가 없다는 메시지가 표시 pre-revprop-변경 후크가 존재합니다.을 뿐만 아니라,무서운 이름이 무엇입 pre-revprop-변경 후크,그리고 어떻게 그것을 만들 수?
해결책
기본적으로 하는 스크립트 출시하기 전에 버전 없는 숙박 시설은 수정에 저장소,이렇게 관리할 수 있는 더 정확하게 무슨 일이 일어나고 있는지합니다.
있는 템플릿에서 SVN distrib 다른 후크에 위치한/하위 디렉토리 후크(*.tmpl 있는 편집하고 이름을 변경에 따라 OS,을 활성화하).
다른 팁
Windows의 경우 다음은 로그 메시지 (다른 속성이 아닌) 만 변경할 수있는 예제 배치 파일에 대한 링크입니다.
http://ayria.livejournal.com/33438.html
기본적으로 아래 코드를 텍스트 파일로 복사하여 이름을 지정합니다. pre-revprop-change.bat
그리고 그것을 저장하십시오 \hooks
저장소의 하위 디렉토리.
@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5
:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME
:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION
:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY
goto :eof
:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
exit /b 1
Linux가 로그 코멘트 에디션을 허용하기 위해
- 파일을 찾으십시오
pre-revprop-change.tmpl
에서hooks
저장소 디렉토리 - 파일을 동일한 디렉토리로 복사하여 이름 바꾸기
pre-revprop-change
- 파일에 대한 권한을 제공합니다 (서버 사용자의 경우, 예 :
www-data
)
편집 : (Lindes에게 감사합니다)
- 그 후 종료 값을 반환하려면 스크립트를 편집해야 할 수도 있습니다.
0
편집 한 종류의 경우 허용하고자합니다.
다음은 많은 공통 고리가있는 스택 오버플로 질문에 대한 링크입니다. 일반적인 유형의 전복 후크, 원래 소스를 포함하여 pre-revprop-change
여기에 크로스 포스트 된 Windows의 고리.
시간이 지남에 따라 향상 될 수 있으므로 참조해야합니다.
감사합니다 #patmortech
그리고 "동일한 사용자만이 자신의 코드를 변경할 수있는"코드를 추가했습니다.
:: Only allow editing of the same user.
for /f "tokens=*" %%a in (
'"%VISUALSVN_SERVER%\bin\svnlook.exe" author -r %revision% %repository%') do (
set orgAuthor=%%a
)
if /I not "%userName%" == "%orgAuthor%" goto ERROR_SAME_USER
의 이름을 걸이 스크립트는 그렇게 무서운을 관리하는 경우 해독 it:그 pre 개정 속성 변경 후크.짧은 목적 pre-revprop-change
훅크립트가 변경을 제어의 버전 없(개정)속성 및 알림을 보내(예:이메일을 보낼 때 개정 속성을 변경).
2 종류가 있의 속성에 Subversion:
- 버전이 있는 속성(e.g
svn:needs-lock
고svn:mime-type
)에 설정할 수 있는 파일 및 디렉토리 - 버전 없(개정)속성(예:
svn:log
고svn:date
)에 설정된 저장소 개정.
버전이 있는 속성을 역사를 가지고 있고 조작할 수 있는 일반 사용자가 읽기/쓰기 권장합니다.다른 한편으로,버전 없는 속성이 없는 역사와 봉사로 유지보수 목적이 있다.는 경우,예를 들어,당신은 커밋 개정을 즉시 얻 svn:date
와 UTC 시간에 당신의 저지 svn:author
사용자 이름과 svn:log
와 함께 당신의 커밋 로그 메시지(만약 당신이 모두 지정).
나는 이미 지정한 목적의 pre-revprop-change
훅크립트가 변경을 제어는 개정전의 속성입니다.당신이 원하지 않는 모든 사람에 액세스하는 저장소를 수정할 수 있어야 합니다 모든 개정 특성,이렇게 변화하는 수정 속성을 금지합니다.사용자가 허용하는 속성을 변경을 만들어야 합니다 pre-revprop-change
이다.
가장 간단한 걸이를 포함할 수 있는 단 하나의 라인: exit 0
.그것은 인증된 모든 사용자를 변경하는 모든 개정을 제공하지 않아야에 사용되는 실제 환경이다.윈도우에서 사용할 수 있습니다,배치는 스크립트나 PowerShell 기반 스크립트를 구현하는 몇 가지 논리에 pre-revprop-change
이다.
이 PowerShell 스크립트를 변경할 수 있 svn:log
객실 및 부 빈 로그 메시지입니다.
# Store hook arguments into variables with mnemonic names
$repos = $args[0]
$rev = $args[1]
$user = $args[2]
$propname = $args[3]
$action = $args[4]
# Only allow changes to svn:log. The author, date and other revision
# properties cannot be changed
if ($propname -ne "svn:log")
{
[Console]::Error.WriteLine("Only changes to 'svn:log' revision properties are allowed.")
exit 1
}
# Only allow modifications to svn:log (no addition/overwrite or deletion)
if ($action -ne "M")
{
[Console]::Error.WriteLine("Only modifications to 'svn:log' revision properties are allowed.")
exit 2
}
# Read from the standard input while the first non-white-space characters
$datalines = ($input | where {$_.trim() -ne ""})
if ($datalines.length -lt 25)
{
# Log message is empty. Show the error.
[Console]::Error.WriteLine("Empty 'svn:log' properties are not allowed.")
exit 3
}
exit 0
이 배치는 스크립트만 허용"svnmgr"사용자를 변경 개정 속성:
IF "%3" == "svnmgr" (goto :label1) else (echo "Only the svnmgr user may change revision properties" >&2 )
exit 1
goto :eof
:label1
exit 0
PC 사용자의 경우 : Windows Server Maching에서 사용될 때 .BAT 확장 기능이 작동하지 않았습니다. Django Reinhardt가 제안한대로 VisualSVN을 사용했으며 .CMD 확장 기능을 갖춘 후크를 만들었습니다.