Git钩子-如何只处理属于repo中特定文件夹的文件? [英] Git hooks - how to handle only files that belong to specific folder inside repo?

查看:30
本文介绍了Git钩子-如何只处理属于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

这篇关于Git钩子-如何只处理属于repo中特定文件夹的文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆