Git hooks - 如何只处理属于 repo 中特定文件夹的文件?

Git hooks - how to handle only files that belong to specific folder inside repo?

我是 git 的新手,不太擅长 bash。

我有一个存储库(如果重要的话在 Bitbucket 中),它只包含两个文件夹。

我已经有一个钩子(用 bash 编写),它会触发 Jenkins 作业。

现在我想更改它,这样它只会为提交到其中一个文件夹的文件触发作业,而不会为另一个文件夹触发作业。

我想使用已提交文件的名称,因为它将包含文件夹名称,但我不知道该怎么做。

任何帮助将不胜感激。

post-receive 挂钩将在标准输入上提供旧引用、新引用和分支引用。由于可以推送多个分支,我们将寻找我们感兴趣的分支。然后我们可以使用 git diff-tree 列出正在推送到该分支的文件。 glob 表达式 $deploy_dir/* 将只列出进入部署目录的文件。

#!/bin/bash
# post-receive script

deploy_branch='master'
deploy_dir='folder2'
trigger_jenkins=0

while read -r oldref newref ref; do
    if [ "${ref##*/}" == "$deploy_branch" ]; then
        if [ ! -z $( git diff-tree --no-commit-id --name-only -r "$newref" $deploy_dir/* ) ]; then
            trigger_jenkins=1
        fi
    fi
done

if [ $trigger_jenkins -eq 1 ]; then
    echo trigger jenkins job
fi