我有一个裸仓库,开发人员将他们的修补程序分支从他们在 Windows 上的本地仓库推送到。当分支被推送时,我会触发一个钩子来在 Linux 上构建他们的更改。如果我为分支创建工作树,这很容易做到。然而,repo 包含数十个数千个文件,并且让每个开发人员的修补程序分支为所有对象创建一个工作树,而他们只对少数几个对象进行更改,这会耗费大量时间并消耗文件系统。
有没有办法让开发人员推送到裸仓库,然后在挂钩中仅将更改的源提取到目录结构,以便我可以进行有效的构建过程?
想法?
示例 developer_a 将他从 Dev 分支分支出来的 HF1 分支推送回 Linux 构建服务器上的远程裸仓库。
如果我执行 HF1 和 dev 分支的“git diff”,我可以看到已更改的文件列表。
diff-tree -r --no-commit-id --name-only HF1..dev
/APP/SOURCE/Program1.cbl
在上述命令中使用该文件的任何尝试都会失败,因为工作树不存在。
我想生成这个 diff,然后直接从 repo 中提取 diff 中列出的文件到目标目录。