在Azure DevOps中,有几个GIT repos与.NET核心web应用程序相关,这些应用程序与子模块的使用相互关联(我们在私有NuGet存储中使用了自动创建NuGet包,但这很难调试和维护)。
我们也有一个主支路的CI/CD管道到一个测试环境和一个稳定的分支与CI/CD到一个生产环境。
没有子模块,工作流程对我来说是清楚的:
但是有了子模块,这就变得更加棘手了。
下面是我们设置的草图:
为了防止未完成的特性从其中一个子模块的主分支进入Web应用程序的稳定分支,我认为稳定分支的设置应该如下所示:
但是,为了使这一工作,我们需要改变的子模块,每次我们合并母版稳定。
是否有更好的工作流来处理不同git分支中的子模块?或者有一种很好的方法来将子模块转换为这些存储库的稳定分支?
如果你投反对票,请在评论中告诉我原因,这样我就可以纠正我的错误了。匿名投票在我看来是“没有完成”,我总是(在堆叠溢出)评论为什么我否决。
发布于 2020-01-16 13:26:55
最后,我们使用了子模块,我发现您可以选择通过.gitmodules文件通过这是如此的帖子添加分支名。
因此,我将这段代码的最后一行添加到我的所有主分支中。
[submodule "SubmoduleTestRepo"]
path = SubmoduleTestRepo
url = https://github.com/jzaccone/SubmoduleTestRepo.git
branch = master当将一个主服务器合并到稳定时,我只需将其更新为
[submodule "SubmoduleTestRepo"]
path = SubmoduleTestRepo
url = https://github.com/jzaccone/SubmoduleTestRepo.git
branch = stable当然,这确实意味着,如果对嵌套子模块所做的更改,我首先需要将主分支合并到great的稳定分支,但是尽管如此,我还是保留了我习惯的伟大的调试和编辑流程,并且我可以在多个其他项目中使用相同的基础项目。这两件事对我们的工作流程都是至关重要的。
谢谢你在正确的方向上帮助我。
发布于 2020-01-10 22:23:50
老实说,在处理子模块时,我总是很难找到可以使用的好工作流,特别是因为您指出了以下原因:
但是,为了使这一工作,我们需要改变的子模块,每次我们合并母版稳定。
我不喜欢为了实现日常变化而在一堆回购中协调大量的合并。主回购模块和子模块是否经常串联变化?子模块是否也用于其他项目,还是仅由项目在主回购中使用?你愿意考虑摆脱子模块,只做一个回购吗?我认为,如果您放弃子模块,您的工作流程将像您所描述的那样清晰。
在某些情况下,子模块是必需的,但是如果您决定它们增加的工作量和复杂性要比价值多,那么就可以在保留历史的同时将子模块滚动到您的主回购中。在主回购中,完全删除子模块,并提交该子模块。然后,在子模块repos中,将repo的内容移动到一个名为子模块的文件夹中,并提交该文件夹。最后,返回主回购,将子模块repos添加为remotes,然后将任何您命名的远程/主程序合并到您的主回购分支中,并使用--allow-unrelated-histories选项。
发布于 2020-01-10 22:48:51
https://softwareengineering.stackexchange.com/questions/403651
复制相似问题