【问题标题】:svn pre-commit hook - how to block a keyword in certain file types?svn pre-commit hook - 如何阻止某些文件类型中的关键字?
【发布时间】:2015-06-24 19:16:58
【问题描述】:

我正在尝试编写一个 svn 预提交钩子,如果某些文件类型中存在某些关键字,它将给出错误。

对我来说,如果文件是 .java、.jsp 或 .jspf 文件,我想确保其中不存在“http://”和“https://”。到目前为止,如果关键字存在于 any 文件中,我可以抛出错误,但不仅仅是我想要检查的文件类型。

这是我目前所拥有的:

$SVNLOOK diff -t "$TXN" "$REPOS" | grep -i "https://" > /dev/null && { echo "Your commit has been blocked because it contains the keyword https://." 1>&2; exit 1; }

【问题讨论】:

    标签: svn grep pre-commit-hook svn-hooks pre-commit


    【解决方案1】:

    是的,你可以很容易地做到这一点。

    这是此类脚本的链接 http://www.scmtechblog.net/2014/07/few-pre-commit-svn-scripts-and-tricks.html

    查看“检测合并冲突” 您可以将冲突标记更改为您想要的文本。

    上面将检查正在更改的文件的增量。

    如果你想检查整个文件,你可以看看下面的脚本 看Puppet“文件解析” 您可以将脚本修改为 grep 以获取您的文本。

    【讨论】:

    • 嗨 Vishal,这很接近,但除了写得比我发布的要好得多之外,它没有做我需要的,即仅检查某些文件类型中的关键字。
    • 嗨 Ben,是的文件类型也可以获取,在同一博客“二进制文件检查”中有脚本来检查二进制文件,您可以更改它并检查您想要的文件类型。我知道我没有提供您正在寻找的确切脚本,而是将这两个脚本结合起来,只需稍加改动即可实现。
    • 感谢 Vishal,问题是,每个脚本使用不同的方法来查找差异。一个只查看文件名,另一个只查看文件的内容。当我找到解决方案时,我会发布我的解决方案(假设我找到了!:)。
    【解决方案2】:

    我使用svnlook changedsvnlook cat 的组合解决了这个问题:

    #Put all the restricted formats in variable FILTER
    HTTP_FILTER=".(j|jsp)$"
    
    
    # Figure out what directories have changed using svnlook.
    FILES=`${SVNLOOK} changed ${REPOS} -t ${TXN} | ${AWK} '{ print $2 }'` > /dev/null
    
    for FILE in $FILES; do
    
        #Get the base Filename to extract its extension
        NAME=`basename "$FILE"`
    
        #Get the extension of the current file
        EXTENSION=`echo "$NAME" | cut -d'.' -f2-`
    
        #Checks if it contains the restricted format
        if [[ "$HTTP_FILTER" == *"$EXTENSION"* ]]; then
    
            # needed to only use http:/ or https:/ - for some reason doing double slash (i.e. http://)
            # would not return results.
            $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | egrep -wi "https:/|http:/" > /dev/null && { echo "Your commit has been blocked because it contains the keyword https:// or http://." 1>&2; exit 1; }
    
        fi
    
    done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      相关资源
      最近更新 更多