2013-09-03 2 views
0

В настоящее время я переношу репозитории и создал некоторые ключевые переменные для использования в моей транзакции Subversion, наиболее важными из которых являются сообщение Commit, и Date, которую я пытаюсь зафиксировать с этими переменными как часть svn ci, сообщение довольно просто, поскольку я могу использовать сообщение svn ci -m"$(LOGMSG)", но я понятия не имею, как явно добавлять поля DATE и AUTHOR в коммит, может ли кто-нибудь помочь?BASH-переменные для фиксации SVN

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: 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 должен быть настроен так, чтобы разрешить изменения свойств редакции. Если он не настроен соответствующим образом, вы получите сообщение об ошибке. В этом случае вам нужно создать или изменить скрипт hook hooks/pre-revprop-change в репозитории SVN. Посмотрите файл шаблона hooks/pre-revprop-change.tmpl для получения дополнительной информации.

+0

Похоже, что это работает, к сожалению, Redmine берет навсегда обновление, но ' svn log' показывает, что это работает. Принято и +1 за потрясающий ответ, спасибо брату – ehime