在 SVN 中查找带有特定注释的签入文件

Find files checked in with a particular comment in SVN

我在将源签入我的 SVN 时使用了特定的注释。 我想检索为该评论签入的文件列表。 请注意我不知道修订号。我只知道我签到的评论。

我正在用

尝试各种事情
svn log --verbose

请推荐。

您可以尝试以下脚本。输入参数为搜索词:

#!/bin/sh

searchWord=

if [ ! $searchWord ]; then
    echo "Usage ..."
    exit
fi

IFS=$'\n'

commitRecord=''
dumpCommit=false
lineCounter=0



for line in `svn log --verbose`; do
    lineCounter=$((lineCounter + 1))
    commitRecord[$lineCounter]=$line

    if  [ ${line:1:5} == '-----' ]; then
        if $dumpCommit ; then
            echo $line
        fi
        dumpCommit=false

        unset commitRecord
    fi

    if echo $line | grep -qi $searchWord ; then
        for line in ${commitRecord[*]}; do
            echo $line
        done

        dumpCommit=true

        continue
    fi

    if $dumpCommit ; then
        echo $line
    fi

done

如果您至少使用 Subversion 1.8.0(您应该是,它于 2013 年 6 月发布),那么您可以使用 svn log --search。从文档中,这个命令:

Filters log messages to show only those that match the search pattern ARG. Log messages are displayed only if the provided search pattern matches any of the author, date, log message text (unless --quiet is used), or, if the --verbose option is also provided, a changed path.

该命令支持*?(glob语法)和字符类([abc])。

请注意,这不会在存储库中执行真正的搜索,而是对返回的日志条目进行筛选。因此,如果您提供修订范围或使用 --limit,则与您的搜索匹配的修订将被忽略。