【问题标题】:Multiple users for single git repository单个 git 存储库的多个用户
【发布时间】:2020-11-22 11:13:07
【问题描述】:

我们有一个供多个用户使用的服务器。磁盘空间非常有限,因为我们的 git repo 非常庞大,每次有人克隆它时,它都会消耗 130G 的空间。

我了解 git 并非设计为集中式工作流程,但这是一种非常特殊的情况。我们考虑过升级硬件,但这是一条很长的路,因为它不是云实例。

我尝试摆弄git worktree,但很快就遇到了权限问题。我的理想设置是单个 repo,多个用户可以通过它进行推送和拉取。

我查看了以前的线程,但不幸的是那里没有可靠的建议,而且它们是相当老的线程。因此,任何新的建议都将受到高度赞赏。

【问题讨论】:

  • 你如何为这个 git repo 提供服务?您只是通过 SMB 共享它还是使用 GitHub Enterprise 或 TFS 之类的东西?
  • 另外,为什么一个 repo 会是 130GB?您不应该将二进制文件存储在 git 存储库中……这就是 LFS 的用途。
  • 我们有自己的内部 git 服务器,我们在它上面使用gerrit。关于 130 GB,是的,我们有大量的配置文件和合适的文件(我们本可以使用 DB,但将所有内容保存在 git repo 中是历史性的商业决策)

标签: git gerrit git-worktree


【解决方案1】:

另一种方法是use git worktree,以便签出多个不同路径中的多个分支,同时只保留一个克隆的存储库。

将其与一些 partial clone with filter and sparse cone 和:

  • 您的主存储库可能比现在更小(因为您的集体工作不需要的一些文件已被过滤,并且未获取完整的历史记录)
  • 您的不同分支无需再次克隆存储库即可签出。

【讨论】:

    【解决方案2】:

    也许查看git subtreegit submodule 将您的大型 git 存储库分成几个较小的存储库。它仍然是相同的大型存储库,但可以更易于管理。

    子模块注意事项:

    当你克隆这样一个项目时,默认情况下你会得到包含子模块的目录,但其中还没有文件

    所以当你说

    $ git clone https://github.com/myco/MainProject
    

    它只下载主仓库和子模块的文件夹。然后,您可以指定要下载的子模块文件。

    $ cd subModuleDir
    $ git submodule init
    $ git submodule update
    

    因此,它只克隆子模块的文件,而不是所有文件。

    【讨论】:

      【解决方案3】:

      我不确定您在此处问的是什么:您有一台机器被多个用户使用,每个克隆都在破坏可用空间。

      然后,只需在所有 Windows 用户都可以访问的文件夹中创建一个副本,并让每个人在那里的一个单独的分支上工作。

      任命某人为“经理”,以管理对 master 的合并和“祝福”信息的管理。

      【讨论】:

        猜你喜欢
        • 2019-05-06
        • 2011-12-09
        • 1970-01-01
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多