gpt4 book ai didi

git - 在推送时将大型 repo 分成多个较小的 repo

转载 作者:行者123 更新时间:2023-12-02 01:09:01 28 4
gpt4 key购买 nike

我在github上托管了一个项目,结构如下

github.com/example/allpackages

.
├── .git
└── packages
├── example-1
├── example-2
└── example-3

在每次推送到 github 时,我希望将每个包的内容推送到与 repo 名称相对应的 repo,例如

github.com/example/example1

.
├── .git
└── example1

github.com/example/example2

.
├── .git
└── example2

等等

有人对如何自动执行此操作有任何想法吗?有人提到使用 Travis-CI 完成这项任务,但我找不到任何关于它如何工作的细节。

我理想的解决方案:

  • 将完全自动化——这意味着更新不会由推送计算机触发,而是由 github 或外部服务触发。
  • 在更新时将历史从“allpackages”迁移到相应的子库

任何关于从哪里开始研究的指导将不胜感激。提前致谢!

编辑:

@VonC 建议使用子模块,并使用 git submodule foreach --recursive 进行提交

优点:

  • 干 - 每个子模块的代码都放在一个地方。
  • 能够跟踪父模块中子模块的变化。
  • 使用 git submodule foreach --recursive 使用别名允许一次提交到多个子模块

缺点:

  • 查看对子模块所做的更改不是立即清楚的。必须深入研究子模块,看看发生了什么变化。
  • 使用 git submodule foreach --recursive 很麻烦,而且不像常规提交那样优雅。

对于这个特定的用例。 “包” repo 例如github.com/example/example1 将在某种意义上只读。我不会直接推给他们。它们只会在 allpackages 更新时收到更新。需要创建它们的唯一原因是,使用它们的包管理器需要为每个包单独存储库。

最佳答案

如果您将所有 exampleX 文件夹声明为 git repos,并使它们成为 submodules父仓库 allpackages,然后:

  • 每个 exampleX 存储库都可以有自己的 upstream repo 在 GitHub 上

  • ( since git 1.7.11 ), 你可以把所有东西推送到他们各自的仓库

    cd allpackages
    git push --recurse-submodules=on-demand

一个命令,一切都被推送。

关于git - 在推送时将大型 repo 分成多个较小的 repo ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19202403/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com