0

我目前正在迁移存储库并创建了一些要在我的 Subversion 提交中使用的关键变量,其中最重要的是 Commit 消息,以及我尝试将这些变量作为svn ci操作的一部分提交的日期,该消息相当简单我可以使用svn ci -m"$(LOGMSG)"该消息,但我不知道如何将 DATE 和 AUTHOR 字段显式添加到提交中,有人可以帮忙吗?

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 <jdaniel@erado.com>'
    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
4

1 回答 1

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 存储库必须配置为允许修订属性更改。如果未进行相应配置,您将收到一条错误消息。hooks/pre-revprop-change在这种情况下,您必须在 SVN 存储库中创建或更改挂钩脚本。查看模板文件hooks/pre-revprop-change.tmpl以获取更多信息。

于 2013-09-03T18:54:37.793 回答