gpt4 book ai didi

git - 使用提交的 Git 子模块时有哪些选项?

转载 作者:太空狗 更新时间:2023-10-29 13:09:44 27 4
gpt4 key购买 nike

在工作中,我们正在处理十几个 Java OSGi 包,每个包都有自己的 git 存储库。从长远来看,所有 bundle 都将彼此完全独立,这证明了各个存储库的合理性——尽管现在我们仍然经常同时修改其中的几个。

当我们发布一个产品(包含所有的 bundle)时,每个 bundle 都会创建一个新的分支,这有点麻烦。因此,我们正在考虑使用 git-submodule 来减轻痛苦(类似于 git submodule foreach <cmd> )。

因此,我们所需的设置将是一个主项目 Product ,以及每个包的子模块:

Project/
BundleA/
BundleB/
BundleC/

现在,我花了几个小时阅读我能找到的关于子模块的所有内容,并且我明白如果我修改 BundleA 中的内容,我必须提交 BundleA ,推送,然后提交 Project 中的子模块更改并再次 push 。

这听起来显然不是 git-submodule 最初设计的用途。像这样使用它是否违反最佳实践?或者这听起来像是首选替代方案的情况?

  • 基本的 git-submodule 用法
  • 使用现有的“git wrapper”:
  • 编写我自己的简单 bash 脚本来批处理 OSGi 包

欢迎任何其他建议。

最佳答案

如果您不需要跟踪子项目在 super 项目中所做的事情(紧密绑定(bind)),那么我建议您远离 git-submodules。

gitslave ( http://gitslave.sf.net ) 本质上是围绕每个子项目的大型 foreach, super 项目中的配置文件列出了子项目。有很多花哨的功能使它更方便,但如果你的目标是在 super 项目(可选)和所有子项目上运行相同的命令,gitslave 就像你将要找到的一样方便。

例如,在gitslave中创建一个新的分支是:

gits checkout -b newbr

然后您的 super 项目和所有子项目将创建新分支并对其进行更改。一般来说,如果你想在 super 项目的所有成员上运行一个 gits 命令,只需将“git”命令更改为“gits”即可。

关于git - 使用提交的 Git 子模块时有哪些选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6108828/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com