2013-09-03 2 views
0

현재 저장소를 마이그레이션 중이고 Subversion 커밋에 사용할 주요 변수를 만들었습니다. 그 중 가장 중요한 것은 커밋 메시지이고, 날짜는 해당 변수의 일부로 커밋하려고합니다. svn ci 작업, 메시지에 대해 svn ci -m"$(LOGMSG)"을 사용할 수 있기 때문에 메시지가 상당히 쉽지만 명시 적으로 DATE 및 AUTHOR 필드를 커밋에 추가하는 방법을 모르는 사람이 있습니까?SVN 커밋에 대한 BASH 변수

for ((r=$CURREV; r<$ENDREV+1; r++)) 
do 

    git svn fetch -r $CURREV 

    # move whitelists subversion folder 
    find "$GIT_FOLDER" \ 
    -mindepth 1 \ 
    -maxdepth 1 \ 
    -regextype posix-egrep \ 
    -not -regex ".*/(${EXCLUDE_PATTERN})$" \ 
    -exec mv -t "$SVN_FOLDER" '{}' '+' 

    # set opts for SVN logging 
    CID=$(git log --format=oneline |awk '{print $1}') 
    AUTHOR='Jd Daniel <[email protected]>' 
    DATE=$(git log --date=iso |grep 'Date' |awk -v N=2 '{sep=""; for (i=N; i<=NF; i++) {printf("%s%s",sep,$i); sep=OFS}; printf("\n")}') 
    LOGMSG=$(git log --oneline |awk -v N=2 '{sep=""; for (i=N; i<=NF; i++) {printf("%s%s",sep,$i); sep=OFS}; printf("\n")}') 


    # move to svn 
    cd $SVN_FOLDER 

    ADD=$(svn st |grep '?\|M' |awk '{printf "%s ", $2}'); [ -z "$ADD" ] || svn add $ADD 
    REM=$(svn st |grep 'D\|!' |awk '{printf "%s ", $2}'); [ -z "$REM" ] || svn rm $REM 

    # do commit 
    svn ci -m 'GIT ID: '$CID$'\n'$LOGMSG 


    break # just on rev for now 

done 
+0

python svn bindings를 사용해보세요. http://stackoverflow.com/questions/1448894/subversion-python-bindings-documentation. 여기서 한 사람은 어떻게 든 그것을 해결할 수있는 방법을 찾았습니다. http://www.wandisco.com/svnforum/threads/38846-Change-svn-author-on-commit. 그리고이 스크립트는 개념을 제공 할 수 있습니다 : http://svn.apache.org/repos/asf/subversion/trunk/tools/examples/revplist.py – konsolebox

답변

1

는 명령 svn propset --revprop와 이미 최선을 다하고 개정의 저자날짜을 변경할 수 있습니다. 다음 두 명령은 가장 최근 버전의 속성을 변경합니다

svn propset --revprop -r HEAD svn:author "$AUTHOR" 
svn propset --revprop -r HEAD svn:date "$DATE" 

날짜의 형식은 YYYY-mm-ddTHH:MM:SS.MSZ에 있어야합니다. 참조 용으로 다음 명령의 출력을 참조하십시오.

svn propget --revprop -r HEAD svn:date 

불행히도 각 속성을 개별적으로 변경해야합니다. svn commit 명령에는 개정 등록 정보 (--with-revprop) 옵션도 있습니다. 그러나이 옵션은 커밋 중에 표준 속성을 재정의하는 데 사용할 수 없습니다.

개정 속성을 변경할 수 있도록 SVN 저장소를 구성해야합니다. 적절하게 구성되지 않으면 오류 메시지가 나타납니다. 이 경우 SVN 저장소에 후크 스크립트 hooks/pre-revprop-change을 생성하거나 변경해야합니다. 자세한 내용은 템플릿 파일 hooks/pre-revprop-change.tmpl을 참조하십시오.

+0

Redmine은 영원히 업데이트하는 데 성공하지만, svn log'는 이것이 작동하고 있음을 보여줍니다. 받아 들여지고 +1 멋진 답변, 감사합니다 형제 – ehime