使用git控制超级/子项目的版本

使用git控制超级/子项目的版本,git,version-control,project,Git,Version Control,Project,我正在构建一个前端框架,在我当前的设置中,我有一个开发repo、一个gem版本和一个文档应用程序。目前,我在dev repo的子文件夹中有应用程序和gem,允许我的taskrunner一次自动构建所有内容,使所有内容保持一致。然后,我手动将每个的发行版本复制到各自的回购协议中。但这意味着,一个庞大的主回购协议做得太多了,而我必须非常小心确保的其他回购协议都是一致的。它变得极其笨拙;错误正在蔓延 理想情况下,我希望处理开发版本,并将更改传播到其他两个repo——例如,当我测试、提交和推送dev r

我正在构建一个前端框架,在我当前的设置中,我有一个开发repo、一个gem版本和一个文档应用程序。目前,我在dev repo的子文件夹中有应用程序和gem,允许我的taskrunner一次自动构建所有内容,使所有内容保持一致。然后,我手动将每个的发行版本复制到各自的回购协议中。但这意味着,一个庞大的主回购协议做得太多了,而我必须非常小心确保的其他回购协议都是一致的。它变得极其笨拙;错误正在蔓延

理想情况下,我希望处理开发版本,并将更改传播到其他两个repo——例如,当我测试、提交和推送dev repo时,这可能会触发其他两个版本的更新,以使版本内联。这将允许我在需要时进行扩展-如果我需要添加其他语言的包,我可以构建一个新的repo并将其添加到项目中,并且相信它将以同样的方式工作

我尝试过子模块化,但这是a。似乎与我想要的相反,b。根据过去的经验,git子模块是一个需要管理的噩梦

我还尝试将所有回购协议作为文件夹放在一个父项目中,该父项目有自己的taskrunner,负责跨子项目的问题,但这实际上与我目前的做法相同,结构更漂亮;我仍然需要将每个子项目推送到单独的回购协议中

Gitsave看起来似乎有帮助,但我不太确定如何利用它

任何关于这种情况(或其他人如何使用git管理链接子项目)的建议都会非常有用

  • 原则上,子模块不能“对立”工作-只是更好地摸索一下
  • 公共子树是子模块的替代方案,用于解决相同的任务,消除大多数子模块的头痛问题(并且与子模块相反,不要触碰标准Git工作流)

  • 而good

    子模块仍然是最可能的方法。“似乎与我想要的相反”:你能详细说明一下为什么它是相反的吗?我想有一个中央回购协议,从中变化向外传播。而对于子模块,我有一系列位于中央回购协议中的模块,当单独更新时,我可以使用
    submoduleupdate
    on。我可以将中央repo作为其他项目中的子模块,但这是非最优的,因为它使每个单独的项目都变得巨大,而不是让它们像应该的那样非常纤细。或者主父repo只发出一个命令:
    git submodule update--init
    @VonC:submodules是昨天的陈腐面包皮,子树-今天的面包raisins@LazyBadger有趣的是,子模块是一个个子树的开发者。但如果子树()更适合你,这里有一个例子:是的,我认为我的措辞很糟糕;这并不是说它是对立的,而是单向的沟通让它…屁股痛,我们可以说;它破坏工作流程的方式并不好。然而,这个案例研究看起来非常有趣;我要试一下。