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
我是 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