Git钩子-如何只处理属于repo中特定文件夹的文件? [英] Git hooks - how to handle only files that belong to specific folder inside repo?
本文介绍了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屋!
查看全文