git子模块工作流程是否可以与版本化软件包共存?

时间:2013-04-01 08:53:35

标签: git package version git-submodules

任何人都可以解释如何将以下系统放在git之外,即通过分支和子模块使用版本号而不是git的上下文:

假设我们在项目 git repo中有一些工具。资产位于资产仓库中,并且因为数据 - 组织,命名,数据字段数量等 - 随着时间的推移而变化,并且因为工具还必须更新以抵御这些变更,想要将资产 repo作为项目 repo的子模块。这使我们可以执行分支项目,签出旧版本以及让资产及时移回以匹配,因此工具和数据会随着时间的推移保持同步。这让我们可以检查一周前的所有内容。

这也意味着我们可以有一个疯狂的想法来重塑数据以在特定工具中获得新的能力,我们可以分支项目,然后分支资产和在项目的新分支中,我们可以查看资产中的新分支,并有效地分别处理所有内容。如果真正的工作进入,我们可以跳回项目的主人,资产更新也会跟进。如果疯狂的新数据结构成功,我们可以分支(或重用第一个分支)并使其他工具与新数据保持一致,当所有工作完成后,我们可以将所有内容合并,而不会中断任何人(提供的接口)没有改变)。它似乎是一个很好的工作流程,并且它将资产与工具分开,因此各个部门可以使用它们而无需大量的工具甚至不能在他们的系统上工作,我可以在没有大量工具的情况下下载工具资产,如果我只想在笔记本电脑上的资产上分离出一些逻辑。

使用软件包和版本号是否有任何接近这种复杂性和灵活性的程度?我从来没有使用它们,但我一直觉得如果我想要将git中的工具从其他地方分发出来,同时保留相互依赖性,我仍然需要这样做。人们如何解决git和包版本号?我已经研究了一段时间了,我仍然对所有这一切感到困惑。

1 个答案:

答案 0 :(得分:0)

包和版本号的概念与git完全正交:
Git版本文本文件 如果这些文本文件代表一个包,并且某个地方有一个声明版本的元素,那完全取决于git repo的用户。 Git不知道这些概念。

最接近git推断的版本号是[{1}}(如“Deriving application build version from git describe - how to get a relatively straightforward string?”所示)。
但是,这不会做更多的事情,您可能需要的任何版本依赖机制都必须由您管理 git submodules正在做的就是为每个子模块记录一个固定的SHA1。