在specfic提交时克隆git repo

在specfic提交时克隆git repo,git,Git,作为当前工作流程的一部分,我们在创建时将某些git回购预克隆到用户HomeDir中。然而,随着这些存储库的增长和用户数量的增加,磁盘使用率变得越来越成问题 我从两个方面对此进行攻击: 没有更改文件的现有回购协议会得到git reset--hard$first\u commit,这会将它们恢复到一个小得多的初始状态。登录时通常使用的git pull,会像往常一样将它们更新为当前版本 新用户可以获得从$initial commit开始的回购协议,并且可以通过git pull将其更新到当前状态 虽然我

作为当前工作流程的一部分,我们在创建时将某些git回购预克隆到用户HomeDir中。然而,随着这些存储库的增长和用户数量的增加,磁盘使用率变得越来越成问题

我从两个方面对此进行攻击:

  • 没有更改文件的现有回购协议会得到git reset--hard$first\u commit,这会将它们恢复到一个小得多的初始状态。登录时通常使用的
    git pull
    ,会像往常一样将它们更新为当前版本
  • 新用户可以获得从
    $initial commit
    开始的回购协议,并且可以通过
    git pull
    将其更新到当前状态
  • 虽然我已经为#1提出了一个解决方案并提交审查,但我很难为#2提出一个不会产生大量IO开销的解决方案

    简单的解决方案是:

    git clone /opt/git/app.git /home/user/app && \
    git -C /home/user/app reset --hard $first_commit
    
    但是,签出完整的工作树而只删除它会导致大量额外的IO,这在创建新的应用程序服务器以及所有必需的用户时是一个值得关注的问题

    我已根据尝试了以下操作,但生成的回购未正确设置为从
    origin/master
    提取:

    git init /home/user/app
    git -C /home/user/app remote add origin /opt/git/app.git
    git -C /home/user/app fetch origin $first_commit
    
    它似乎根本没有设置任何分支,并且
    .git/config
    中缺少以下内容:

    [branch "master"]
            remote = origin
            merge = refs/heads/master
    
    提前感谢。

    使用
    git分支——将上游设置为
    ,以设置
    主机
    的上游:

    git init
    git remote add origin /opt/git/app.git
    git fetch origin
    git reset --hard "$first_commit"
    git branch --set-upstream-to=origin/master
    

    如果你不需要任何git历史记录,你会为你的项目构建一个二进制文件并简单地下载它吗?@AndyRay-nope。这是一个多开发人员的环境,有点笨拙的工作流程。