当前位置: 首页 > 知识库问答 >
问题:

Git钩子-如何只处理属于repo内特定文件夹的文件?

方德宇
2023-03-14

我对git有点陌生,对bash不是很在行。

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

我已经有了一个钩子(用bash编写),可以触发詹金斯的工作。

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

我想使用提交文件的名称,因为它将包含文件夹名称,但我不知道如何做到这一点。

任何帮助都将不胜感激。

共有1个答案

强安和
2023-03-14

接收后的挂钩将在stdin上提供旧引用、新引用和分支引用。由于可以推送多个分支,我们将寻找我们感兴趣的分支。然后我们可以使用git diff-tree列出正在该分支上推送的文件。全局表达式$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
 类似资料:
  • 本文向大家介绍Linux中查看指定文件夹内各个子文件夹内的文件数量,包括了Linux中查看指定文件夹内各个子文件夹内的文件数量的使用技巧和注意事项,需要的朋友参考一下 count脚本 执行 $ bash count.sh benchmark benchmark: 2317 benchmark/0: 20 benchmark/1: 891 benchmark/2: 65 benchmark/3: 1

  • 我的Mercurial文件夹结构如下,“temp”位于文件夹的根目录中。 我想忽略临时文件夹及其子文件夹中的所有内容,除了名为“世界”的文件(只有“世界”而不是“1world”或“world.txt”等) 使用. hgignore中的语法:regexp,我可以匹配temp 任何指导都将不胜感激! 更新 通过手动列出每个文件夹,我成功地获得了想要的结果: 然而,我更希望我能用一个模式匹配所有子文件夹

  • 如何恢复我的项目?我只保存了/.git文件夹,现在需要从这个文件夹中还原project。

  • 我的回购在子文件夹中有多个项目,在多个分支中复制了相同的结构。 我试图设置一个作业,该作业监视所有分支,并仅在子目录“Project1”中发生更改时触发作业。通过这种方式,我可以检查对“Project1”的更改是否适用于发布分支和人们可能设置的任何开发分支。 从理论上讲,Git插件似乎确实允许我设置它,在“要构建的分支”中指定“**”,在“包含的区域”中指定“Project1.*”。我还使用“轮询

  • 我有一个包含多个其他项目的项目: null 都包含文件夹。我想让git忽略该文件夹,不管它从根文件夹开始的位置。加点这样的东西。Gitignore:

  • 当我试图打开一个特定的文件夹时,我有一个问题,我有这个代码来打开我的文件夹。 该代码只打开最近的文件夹,在那里我可以在我的图库中看到我的所有照片,而不打开特定的文件夹 我正在用API 26进行测试