문제

SVN에 대한 일반 및/또는 유용한 사전 커밋 후크는 무엇입니까?

도움이 되었습니까?

해결책

메시지를 트위터 계정에 게시하는 Post Commit Hook이 있습니다. 용도 twitsvn (면책 조항 : 저는 그 프로젝트의 커밋 자입니다).

바보 같은? 어쩌면 ... 그러나 그것은 우리가 저장소의 진행을 우리의 버전 관리 팀 구성원에게 전달하는 좋은 방법으로 판명되었습니다. SVN이 트위터 클라이언트를 통해 그들과 대화하기 시작하면 블랙 박스처럼 느껴지지 않았습니다.

다른 팁

사용자가 실제로 커밋 메시지에 댓글을 입력했으며 추적 할 특정 문제 번호가 포함되어 있습니다.

다양한 텍스트 파일 (예 : VRML, XML 등)의 절대 경로를 확인합니다. 체크인 코드의 대부분은 절대 경로를 가지고 있지 않아야하지만 일부 사람과 도구는 하드 코딩 된 물건을 생산해야합니다.

제출 메시지에 대한 단어 계산을합니다. 그들은 5 단어 이상이어야합니다. 이것은 나에 대한 코미디 모욕을 초래했다 ...

  • 탭을 확인하고 체크인을 거부하십시오.
  • 일관되지 않은 라인 엔딩을 확인하고 체크인을 거부하십시오.
  • "CR : [username]의 발생을 확인하고 코드 검토가없는 경우 체크인을 거부하십시오.

당신은 다음을 살펴볼 수 있습니다.http://svn.apache.org/repos/asf/subversion/branches/1.6.x/www/tools_contrib.html#hook_scripts (이 페이지는 분명히 구식이 될 수 있습니다.

또는 직접 :https://svn.apache.org/repos/asf/subversion/trunk/contrib/

나는 사용하는 것을 좋아한다 svn 후크 :

  • 코드 스타일의 더 엄격한 지점을 시행하십시오
  • 명백한 구문 오류를 확인하십시오
  • "수정"또는 "주소"와 같은 특수 TRAC 키워드가 실제로 적절한 문제 번호보다 우선하는지 확인하십시오.

필더 타입을 확인하고 우연히 특정 금지 유형이 커밋되지 않는지 확인합니다 (예 : .Obj, .pdb). 글쎄, 처음으로 누군가가 컴파일러 생성 된 임시 파일 2 공연을 확인한 이래로 :(

Windows :


@echo off

svnlook log -t "%2" "%1" | c:\tools\grep -c "[a-zA-z0-9]" > nul
if %ERRORLEVEL% NEQ 1 goto DISALLOWED

echo Please enter a check-in comment 1>&2
exit 1


:DISALLOWED
svnlook changed -t %2 %1 > c:\temp\pre-commit.txt

findstr /G:"%1\hooks\ignore-matches.txt"  c:\temp\pre-commit.txt > c:\temp\precommit-bad.txt
if %ERRORLEVEL% NEQ 0 exit /b 0

echo disallowed file extension >> c:\temp\precommit-bad.txt
type c:\temp\precommit-bad.txt 1>&2
exit 1

나는 커밋 후 후크를 사용하여 저자 속성을 LDAP 트리에서 친근한 이름으로 다시 작성합니다. (인증은 직원 ID와 함께)

아카이브에서 우리가 가진 훌륭한 커밋 훅은 모든 .vcproj (또는 .csproj) Visual Studio 프로젝트를 확인하여 출력 디렉토리가 로컬로 변경되지 않았는지 확인하는 것입니다 (일반적으로 디버깅에 사용).

이러한 문제는 제대로 컴파일되지만 실행 파일이 누락되어 빌드를 중단합니다.

내가 현재 일하고있는 회사에서는 다음과 같습니다.

  • 바이너리 파일에 필요한 잠금 속성이있는 경우;
  • Java 파일에 표준 저작권 통지가 있고 현재 연도가 포함 된 경우;
  • 코드가 올바르게 형식화 된 경우 (코드 형식에 jalopy를 사용) - 이는 어리석게 들릴 수 있지만 실제로 다른 버전 간의 텍스트 비교를 더 쉽게 만들 수 있습니다.
  • 코드에 커밋 메시지가있는 경우;
  • 디렉토리 구조가 정의 된 내용을 준수하는 경우 (모든 프로젝트는 정의 된 SVN 폴더 아래에 있어야하며 각 프로젝트는 태그, 브랜치 및 트렁크 폴더가 있어야합니다);

그게 다인 것 같아요.

커밋이 티켓과 관련이 있는지 확인하는 아이디어가 마음에 듭니다. 실제로 그것은 나에게 많은 의미가 있습니다.

일부는 코드 및/또는 시행 코딩 스타일에서 일반적인 문제를 찾기 위해 주어진 언어에 대해 보풀과 같은 도구를 실행하는 것을 선호합니다. 그러나 작고 숙련 된 팀에서는 지속적인 통합 및/또는 코드 검토 중에 모든 커밋이 가능한 문제를 해결하고 처리하는 것을 선호합니다. 이 커밋 덕분에 더 빠르게 커밋을 장려하여 통합이 쉬워집니다.

나는 그것을 사용한다 check-mime-type.pl pre-commit 후크 해당 MIME 유형 및 라인 옵션의 끝을 확인하려면 커밋 된 파일에 설정되어 있습니다. Dav를 사용하여 웹 사이트에서 파일을 게시하기 위해 파일을 게시하고 MIME 유형 세트가없는 모든 파일이 텍스트 파일로 제공됩니다 (예 : HTML 소스는 렌더링 된 마크 업 대신 브라우저에 표시됩니다).

'문제 #'등을 통해 Regex를 통해 Commit 메시지를 기반으로 Changelist 세부 사항을 사용하여 Mantis Bugtracker에 메모를 삽입하십시오.

커밋 메시지가 있고 "버그 수정"보다! =입니다. 젠장, 나는 그 쓸모없는 메시지를 싫어 했습니까!

우리는 사전 커밋 및 커밋 후 후크 콤보를 사용하여 SVN 커밋의 관련 항목으로 Bugzilla를 자동으로 업데이트합니다.

우리는 두 번째 (사전 커밋) 후크를 사용하여 적절한 SVN : EOL 스타일 및 SVN : 키워드 속성이 repostitory에 추가되기 전에 파일에 설정되어 있는지 확인합니다.

우리는 빌드를 시작하고 빌드가 고장 나면 결과를 우편으로 발송하고 빌드가 다시 수정되었을 때 모든 사람에게 알리는 세 번째 (사후 커밋) 후크가 있습니다.

오프 사이트 복제가 가능한 한 최신 상태인지 확인하기 위해 SVN 복제를 시작하는 네 번째 (사후 커밋) 후크가 있습니다.

불행히도, 나는 이것들에 소스를 게시 할 수 없지만, Bugzilla 통합을 제외하고는 구현하기에 쉽고 허드슨 강 지속적인 통합을위한 더 나은 선택 일 것입니다.

Bugzilla 통합의 경우 보는 것이 좋습니다 scmbug.

다음 후크 스크립트를 사용하여 소스 코드의 라인 엔드와 쉘 스크립트의 권한이 정확한지 확인합니다 (모든 것이 정상으로 보일 때 Windows에서 체크인 할 때 실망 스럽습니다).

#!/bin/bash

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

# Exit on all errors.
set -e
SVNLOOK=svnlook
echo "`$SVNLOOK changed -t "$TXN" "$REPOS"`" | while read REPOS_PATH
do
  if [[ $REPOS_PATH =~ A[[:blank:]]{3}(.*)\.(sh|c|h|cpp) ]]
  then
    if [ ${#BASH_REMATCH[*]} -ge 2 ]
        then
    FILENAME=${BASH_REMATCH[1]}.${BASH_REMATCH[2]};

    # Make sure shell scripts are executable
    if [[ sh == ${BASH_REMATCH[2]} ]]
    then
        EX_VALUE="true"
            if [ -z "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:executable \"$FILENAME\" 2> /dev/null`" ]
            then
            ERROR=1;
                echo "svn ps svn:executable $EX_VALUE \"$FILENAME\"" >&2
        fi
        EOL_STYLE="LF"
    else
        EOL_STYLE="native"
    fi

    # Make sure every file has the right svn:eol-style property set
        if [ $EOL_STYLE != "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:eol-style \"$FILENAME\" 2> /dev/null`" ]
        then
        ERROR=1;
            echo "svn ps svn:eol-style $EOL_STYLE \"$FILENAME\"" >&2
    fi
    fi
  fi
  test -z $ERROR || (echo "Please execute above commands to correct svn property settings." >& 2; exit 1)
done

프로젝트를 컴파일하는 후크는 어떻습니까? 예를 들어, 달리기는 모든 것을 만듭니다. 이렇게하면 컴파일하지 않는 코드를 확인하지 않아도됩니다! :)

Postupdate 및 Precommit을 사용하여 SVN 1.5에서 파일 외부 부족 해결

커밋 메시지에서 [Reviewer : XYZ] 메모를 확인하고 커밋을 거부하는 후크를 즐기고 있습니다.

ASPX / HTML 파일에서 DocType를 확인하기 위해 하나를 작성하려고 생각합니다.

또한, 사전 (또는 게시물) 커밋 후크를 CI 서버로 푸시 할 수 있습니다. 허드슨 블로그에 설명 된대로

CASE COLLISION (멍청한 창)을 확인하고 클라이언트가 최소 1.5인지 확인하기 위해 -mergeInfo.pl을 요구합니다.

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