【问题标题】:Can a git submodules workflow coexist with versioned packages?git 子模块工作流程可以与版本化包共存吗?
【发布时间】:2013-03-22 08:20:12
【问题描述】:

谁能解释一下如何将以下系统引入 git 之外,即通过分支和子模块使用版本号而不是 git 的上下文:

假设我们在 项目 git repo 中有一些工具。资产位于 assets 存储库中,并且由于数据(组织、命名、数据字段数量等)会随着时间而变化,而且工具也必须更新以应对这些变化,因此我们想让 asset 存储库成为 project 存储库的子模块。这让我们可以执行诸如分支 project 之类的事情,签出旧版本,并让资产及时返回以匹配,因此工具和数据随着时间的推移保持同步。例如,这让我们可以检查一周前的所有内容。

这也意味着我们可以有一个疯狂的想法来重塑数据以在特定工具中实现新功能,我们可以分支 project,然后分支 assets 和在 project 的新分支中,我们可以检查 assets 中的新分支,并有效地分别处理所有内容。如果有真正的工作,我们可以直接跳回 project 的 master,然后资产更新以跟上。如果疯狂的新数据结构成功了,我们可以分支(或重用第一个分支)并使其他工具与新数据保持一致,当一切正常时,我们可以将所有内容合并回来,而不会中断任何人(提供的接口没变)。这似乎是一个不错的工作流程,它将资产与工具分开,因此各个部门都可以使用它们,而无需大量甚至无法在他们的系统上运行的工具库,而且我可以在没有大量工具的情况下删除这些工具如果我只想处理一些与笔记本电脑上的资产分开的逻辑。

使用包和版本号是否有任何接近这种复杂性和灵活性的东西?我从未使用过它们,但我一直觉得如果我想将工具从 git 中分离出来以便在其他地方分发,同时保持相互依赖关系,我就需要这样做。人们如何解析 git 和包版本号?我已经研究了一段时间了,但我仍然对它感到很困惑。

【问题讨论】:

    标签: git package version git-submodules


    【解决方案1】:

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

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

    【讨论】:

    • 对。我知道 git 在后台是如何工作的。我只是不完全清楚依赖项和版本号如何在其他系统中保持一致。我的问题可能更多是关于 Python 而不是 git。 Git 的哈希值让我可以四处走动,让一切都效仿。 Python会这样做吗?如果我安装了一个具有依赖项的工具,它会安装它们吗?如果我以某种方式回滚该工具,依赖项会回滚吗?如何避免碰撞?这是我还没有搞定的烂摊子。
    • @GaryFixler 好问题。我的观点是:这与 git 无关。
    • 点了。我想我真正的意思是“看看我在 git 中的这个不错的设置;这是否存在于使用版本号方案的 git 之外?”
    • @GaryFixler 我猜它不会,至少不会达到对 git 有任何了解的水平。它可能存在,但独立于 git。
    • @GaryFixler 请注意,您可以将这两个 git 存储库分组到它们自己的父存储库中,从而允许贡献者仅在正确的版本中克隆这两个。但这又是一个纯粹的 git 机制。
    猜你喜欢
    • 2010-12-08
    • 2015-06-02
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2011-08-19
    • 2023-04-10
    • 1970-01-01
    • 2012-03-06
    相关资源
    最近更新 更多