我们为不同的项目提供了多个git存储库。还有一个用于基础设施目的的git存储库。我们在这个基础架构存储库中编写了自定义gradle插件,我们可以在其他存储库中使用这些插件
示例:
buildscript {
apply from: 'foo/bar/devinfra-buildscript.gradle', to: buildscript
}
apply plugin: 'devinfra'在这里,我们在每个Git存储库中都有buildscript{}文件foo/bar/buildscript.gradle。我想知道是否有一种方法可以直接从基础设施存储库中应用文件。这样,任何更改都可以直接在其他存储库中看到。
发布于 2014-07-12 12:53:38
在这种情况下,您可以向每个存储库添加一个git subtree Merging (与git子树不同),引用下面的存储库。
git read-tree --prefix=<subdirectory_name>/ –u <shared_library_branch>你可以在"Managing Nested Libraries Using the GIT Subtree Merge Workflow“上看到一项研究。

在您的案例中:
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"要使用子树更改来更新项目存储库:
git checkout infra
git pull
git checkout master
git merge --squash –s subtree –-no-commit infra
git commit -m "update infra"要使用项目存储库的子树文件夹中的更改更新子树存储库,请执行以下操作:
git checkout infra
git merge --squash –s subtree --no-commit master
git commit -m "(infra subtree) nature of changes"
git push infrarepo infra发布于 2014-07-12 12:58:06
答案取决于你到底要实现什么。
git submodule update和后续的git commit来接收项目代码库中更新的内容。这种方法的变体是@VonCgit subtree merge。如果你的构建机制足够复杂,你可能想要考虑创建一个“格拉德尔工件”,并隐藏那里的复杂性。然后,您可以将该工件插入到项目中,并且不依赖于工件的特定版本,而是依赖于的一系列版本
发布于 2014-07-12 16:25:36
假设可以通过HTTP(S)访问Git存储库,一种选择是使用apply from: "http://..."。请注意,通过HTTP访问的脚本插件当前未缓存,因此如果无法获取脚本,构建将失败。
https://stackoverflow.com/questions/24709704
复制相似问题