首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用来自不同存储库的gradle文件

应用来自不同存储库的gradle文件
EN

Stack Overflow用户
提问于 2014-07-12 12:35:42
回答 3查看 24.9K关注 0票数 13

我们为不同的项目提供了多个git存储库。还有一个用于基础设施目的的git存储库。我们在这个基础架构存储库中编写了自定义gradle插件,我们可以在其他存储库中使用这些插件

示例:

代码语言:javascript
复制
buildscript {
    apply from: 'foo/bar/devinfra-buildscript.gradle', to: buildscript
}
apply plugin: 'devinfra'

在这里,我们在每个Git存储库中都有buildscript{}文件foo/bar/buildscript.gradle。我想知道是否有一种方法可以直接从基础设施存储库中应用文件。这样,任何更改都可以直接在其他存储库中看到。

EN

回答 3

Stack Overflow用户

发布于 2014-07-12 12:53:38

在这种情况下,您可以向每个存储库添加一个git subtree Merging (与git子树不同),引用下面的存储库。

代码语言:javascript
复制
git read-tree --prefix=<subdirectory_name>/ –u <shared_library_branch>

你可以在"Managing Nested Libraries Using the GIT Subtree Merge Workflow“上看到一项研究。

在您的案例中:

代码语言:javascript
复制
cd /path/to/project
git remote add infrarepo /url/to/infra/repo
git fetch infrarepo
git checkout -b infra infrarepo/master

git checkout master
git read-tree --prefix=infra/ –u infra
git commit -m "Add Infra subtree"

要使用子树更改来更新项目存储库:

代码语言:javascript
复制
git checkout infra
git pull
git checkout master
git merge --squash –s subtree –-no-commit infra
git commit -m "update infra"

要使用项目存储库的子树文件夹中的更改更新子树存储库,请执行以下操作:

代码语言:javascript
复制
git checkout infra
git merge --squash –s subtree --no-commit master
git commit -m "(infra subtree) nature of changes"

git push infrarepo infra
票数 17
EN

Stack Overflow用户

发布于 2014-07-12 12:58:06

答案取决于你到底要实现什么。

  1. 如果你只是想在一个地方更新你的构建文件,并“自动”接收所有项目代码库中的更改,那么你可能应该将文件从GIT控制中移除,例如,简单地使用一个链接或类似的外部位置。
  2. 第二种选择是将所有构建内容移动到一个公共目录中,使该目录成为独立的可共享GIT存储库,然后将该代码库插入到所有项目代码库中。例如,作为submodule,但在这种情况下,你不会收到“自动”更新,因为git严格地将子模块内容绑定到子模块中的特定提交,une需要运行git submodule update和后续的git commit来接收项目代码库中更新的内容。这种方法的变体是@VonC
  3. 提出的git subtree merge。如果你的构建机制足够复杂,你可能想要考虑创建一个“格拉德尔工件”,并隐藏那里的复杂性。然后,您可以将该工件插入到项目中,并且不依赖于工件的特定版本,而是依赖于

的一系列版本

票数 5
EN

Stack Overflow用户

发布于 2014-07-12 16:25:36

假设可以通过HTTP(S)访问Git存储库,一种选择是使用apply from: "http://..."。请注意,通过HTTP访问的脚本插件当前未缓存,因此如果无法获取脚本,构建将失败。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24709704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档