【问题标题】:Submodules or .gitignore for plugin repos?插件仓库的子模块或 .gitignore?
【发布时间】:2013-04-26 09:25:54
【问题描述】:

我已经检查了几个答案,但似乎没有一个符合我正在查看的内容(或者对我来说不太有意义)。

我正在从事一个项目,该项目遵循以下 Wordpress 模型:

root/
root/core/
root/core/stuff
root/plugins
root/plugins/1
root/plugins/2

整个核心是一个 repo,插件 1、2 等......都是由许多不同贡献者提供的独立 repo。

子模块似乎使问题复杂化 - 当我想要的只是能够

A) 进行更改/推/拉核心

B) 进行更改/推/拉插件

以没有链接的方式(例如,当我向核心提交时,我没有给出插件处于什么状态。我宁愿假设插件在核心上工作时不存在。)

简单地使用 .gitignore 来忽略整个 /plugins/ 目录不是最直接的吗?

类似问题:

Use gitignore to nest repositories.

Do you ignore a git submodule in your .gitignore or commit it to your repo?

What is the advantage of using git submodules over having a repo inside another repo with a gitignore?

【问题讨论】:

    标签: git github


    【解决方案1】:

    子模块的想法是允许父存储库(在您的情况下为 root 文件夹)记录您在所述父存储库中提交某些内容时使用的子存储库的确切版本。

    这将允许您克隆存储库,因为您知道您将获得子存储库的兼容版本,并使用您当前的文件集。

    当我对核心进行提交时,我不知道插件处于什么状态。我宁愿假设在核心工作时插件不存在

    您可以使用子模块毫无问题地做到这一点。
    在提交和推送core 时,唯一的附加步骤是返回父仓库,在那里提交并推送(以记录新的core SHA1)。
    有关该过程的更多信息,请访问“True nature of submodules”。

    【讨论】:

    • 我想直到我弄清楚子模块(和错综复杂)之前,使用 .gitignore 和处理有什么特别错误危险每个插件回购分开?因为它确实看起来更简单
    • @Alltheprettyhorses 是的:稍后克隆您的主存储库时,您不知道最新版本的子存储库是否仍可用于所述主存储库。子模块可让您记录配置(即项目运行所需的 SHA1 的确切列表)。
    • 啊——所以“买者自负”。但实际上,因为我是从“没有 git,每次更新后下载代码并安装,当事情破裂时,扑灭大火”类型的系统——这是我习惯的......
    • @Alltheprettyhorses 没关系,因为 git1.8.2 您的子模块可以设置为跟踪给定子存储库的最新版本(而不是固定的 SHA1)。我仍然会避免使用.gitignore 解决方案,因为它不会让另一个用户克隆您的存储库,您应该拥有那些特定的子模块(甚至是您自己,在几个月后克隆存储库时)。
    【解决方案2】:

    我发现了一个使用 .gitignore 而不是学习子模块的非常好的用例。

    我有一个由 rails 引擎组成的 rails 应用程序。唯一的问题是我设置生成器的方式,引擎需要存在于 rails 应用程序的文件结构中。如果您的 rails 引擎和您的 rails 应用程序位于不同的存储库下,它会变得非常混乱,因为当引擎发生更改时,您必须同时提交引擎和应用程序。

    为了解决这个问题,我对引擎文件夹进行了 gitignored,并在我的 gemfile 中将其设置为使用 github 上引擎的远程副本。这样,如果我稍后将其克隆下来,就不会缺少任何依赖项。如果我想立即在主应用程序中查看本地更改,我将 gemfile 切换为使用引擎的本地版本,但在提交之前将其切换回来。

    为了更好地回答您的问题,如果您可以在应用程序的依赖项中指定使用远程副本而不是 gitignored 本地副本,我认为使用 .gitignore 很好。

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 2015-12-24
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      相关资源
      最近更新 更多