10

我们刚刚迁移到 Git,所以如果我问愚蠢的问题,请原谅我 :-)

我们的 Git 存储库包含几个 Maven 项目,像这样

ssh://git@git.whatever.com:7999/foo/foo.git
   bar1
   bar2

我有单独的 Jenkins 工作来构建 bar1 和 bar2。为了防止对 bar1 的推送也触发 bar2,我将 bar2 中的 Git 插件配置为Advanced... Included Regions仅包含bar2/.*- 在 bar1 作业中反之亦然:bar1/.*

这很好用,但有一件事情困扰着我:两个工作中的更改显示了 repo(bar1 和 bar2)的所有更改,而不仅仅是特定项目的更改。

我该如何配置?

截屏: 在此处输入图像描述

4

2 回答 2

0

很晚,但 Jenkins 总是检查整个 repo(即使在进行稀疏检查时,Jenkins 仍然会将整个 repo 克隆到本地磁盘)并在构建页面上显示整个 repo 的修订。

这是 Jenkins 开发人员的意图。CI 的一个核心方面是能够轻松地跟踪回购历史中的变化。如果只为每个构建显示子目录的修订,跨存储库的更改跟踪将变得非常困难(并且对于大型存储库几乎不可能)。

于 2019-08-08T00:31:30.977 回答
-2

我假设您在引用更改时指的是提交日志,在这种情况下,如果没有自定义 git 客户端或至少自定义 git 提交查看器脚本,您将无法执行所需的操作。

理论上,单个存储库应该只包含一个项目。否则,您正在使用 git “错误”(在非常松散的意义上使用“错误”一词,因为 git 只是一个工具,不可能错误地使用它,只是为了您自己的需求而使用它)。

做你想做的唯一方法是将 bar1 和 bar2 文件夹拆分为单独的 git repo。如果它们有点像模块,它们都需要在同一个站点上,您可以为每个项目分别 git init/clone 到 bar1 和 bar2 文件夹,以便您可以单独控制它们。

另一种选择是将它们分成单独的 git 存储库,然后创建第三个“主”存储库,其中仅将另外两个存储库作为子模块包含在它们各自的文件夹中。然后像您可能已经使用的那样使用自定义 git 挂钩,以使主拉动并构建正确的文件夹/项目/栏(x)。然而,这纯粹是为了不必先设置几个文件夹,这是一种有点笨拙的做事方式。

基本上,如果不编写自己的自定义提交查看器,就无法根据文件夹拆分提交日志。您需要将项目分成多个 repo。然后如何将它们重新组合在一起并自动执行任何构建任务,这取决于您。毫无疑问,我上面提到的方法更多。只是为您的需求找到最佳解决方案的一个案例。

于 2013-09-04T13:20:57.010 回答