는 무엇입 pre-revprop-변경 후크에서 SVN,그리고 어떻게 그것을 만들 수?

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

  •  10-07-2019
  •  | 
  •  

문제

내가 원하는 편집하려면 로그에 댓글을 저장소 브라우저하고 오류가 없다는 메시지가 표시 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-locksvn:mime-type)에 설정할 수 있는 파일 및 디렉토리
  • 버전 없(개정)속성(예: svn:logsvn: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 확장 기능을 갖춘 후크를 만들었습니다.

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