【问题标题】:Archiving many old Git projects into a single repo将许多旧 Git 项目归档到一个存储库中
【发布时间】:2013-05-23 12:26:00
【问题描述】:

我在新工作中继承了大约 150 个 Git 存储库,我的目标是将它们从它们当前所在的本地服务器中删除,并将所有内容迁移到 BitBucket。

唉,这些存储库中的大多数只是为了遗留目的而保留的,我真的不想为它们中的每一个都创建一个新的 BB 存储库。最终,我想创建一个名为“DeepFreeze”的新存储库,将这些旧存储库中更无用的存储在一个集中的位置,它们仍然可以访问,但实际上是不可见的。

似乎有两种主要方法可以解决这个问题:

  1. 子树将它们全部合并到 DeepFreeze 中。
  2. 将它们添加为子模块。

Subtree Merge 似乎是最明显的,但我的印象是只会将一个分支添加到新的 repo。

因此子模块似乎是更好的选择,但我担心旧项目不会有效地与我的新仓库一起存储,并且在尝试从不久的将来拉取时,克隆 DeepFreeze 然后执行“git 子模块更新”将失败-即将被重新利用的本地服务器上的-to-be-deleted bare repos。

有什么想法吗?谢谢!

【问题讨论】:

  • 您为什么不想为每个 repo 创建一个存储库?脚本不是很容易为您做到这一点吗?
  • @Colin -- 更重要的是保持一切井井有条。我不想每次加载 BitBucket 时都滚动浏览 150 个过时的存储库,但它们必须去某处
  • 但是存储库的历史会去哪里呢?您想将每个回购的历史合并到一个大回购中吗?您是否需要保留历史记录(如果不需要,为什么要打扰 git?)?我现在可以告诉您,子模块不会是您寻求的解决方案,因为您仍然需要将这些 repo 放在某个地方(即 bitbucket 中的 150 个过时 repos)。
  • 另外,你想对分支做什么。你想保持每个分支和每个存储库都处于完全相同的状态吗?
  • 好的,我认为该解决方案可能是处理事情的更好方法。您可以在每个存储库中执行git fsck && git prune && git gc --aggressive,也可以删除所有无用的内容并将存储库减小到最小大小,并将其存档。另一种解决方案是在 BitBucket 中创建一个新帐户,该帐户将包含每个存储库,因此它们并不总是存在,但在必要时仍然可用。

标签: git git-submodules git-subtree


【解决方案1】:

我最终只是压缩了它们并将这些 zip 文件添加到 DeepFreeze 存储库。效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    相关资源
    最近更新 更多