【问题标题】:Git pre-commit hook: Prevent commits that contain executable filesGit pre-commit hook:防止包含可执行文件的提交
【发布时间】:2017-08-16 21:02:25
【问题描述】:

我正在努力避免意外地将二进制文件提交到我的存储库中。我考虑过一个检测文件大小超过某个阈值的钩子,但我认为每当我的提交更改具有可执行权限位的文件时,使预提交钩子失败会更有用。

我知道如何使用 python/ruby/其他脚本语言来解决这个问题,但理想情况下我可以只使用 bash。有什么想法吗?

【问题讨论】:

    标签: bash file-permissions githooks


    【解决方案1】:

    我最终得到了这个。它列出了相对于REPO_ROOT 提交的文件名。它将这些传递给ls-1 标志用于每行一个,-F 标志将* 附加到可执行文件。它 greps 用于尾随 *。任何匹配的 grep 都会失败。

    cd $REPO_ROOT
    STAGED_EXECUTABLES=$(git diff --diff-filter=ACMRTUXB --cached HEAD --name-only | xargs ls -1F | egrep '\*$')
    EXECUTABLES_MISSING=$?
    if [ $EXECUTABLES_MISSING -eq 0 ]; then
        echo "You tried to commit an executable file. Override with \`git commit --no-verify\` if required." > /dev/stderr
        exit 1
    fi
    

    【讨论】:

      猜你喜欢
      • 2023-04-11
      • 2011-12-16
      • 2016-12-06
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2015-08-19
      • 2011-06-17
      • 1970-01-01
      相关资源
      最近更新 更多