【问题标题】:Git analog to Hg's Bigfiles Extension?Git 模拟 Hg 的 Bigfiles 扩展?
【发布时间】:2010-07-01 20:53:53
【问题描述】:

我想要 git 中类似于 Mercurial's Bigfiles Extension 的东西(注意:我知道 git-bigfiles,但这无关紧要)。

基本上我想在我的 git 存储库中存储大型二进制文件,但我不想在克隆时获取大型二进制文件的每个版本。我只想在签出包含这些大文件的特定修订版时下载大型二进制文件。

【问题讨论】:

    标签: git version-control mercurial mercurial-bigfiles


    【解决方案1】:

    以下是一些可供考虑的选项:

    浅克隆:您可以将--depth <depth> 参数添加到git clone 以获得存储库的浅克隆。例如如果<depth> 为1,这意味着克隆将只获取最近提交所需的文件。但是,如git clone 手册页中所述,此类存储库对您可以使用它们的操作有一些尴尬的限制:

    - 深度 创建一个浅克隆,其历史被截断为指定 修订数量。浅层存储库有许多 限制(你不能克隆或从中获取,也不能从那里推送 进入它),但如果你只对最近的感兴趣 历史悠久的大型项目的历史,并希望 作为补丁发送修复。

    事实上,正如 this thread 中所讨论的那样,这有点夸大其词 - 在某些有用的情况下,从浅层克隆推送仍然有效,并且可能适合您的工作流程。

    Scott Chacon 的“git media”扩展:作者在回答 this similar question 和 github 上的自述文件中描述了这一点:http://github.com/schacon/git-media

    浅子模块:您可以将所有大文件保存在单独的 git 存储库中,并将其作为 shallow submodule 添加到您的主存储库中。这样做的好处是您的代码没有浅克隆的限制,只有包含大文件的存储库。

    还有很多方法可以通过添加钩子来实现这一点,例如,从 git 钩子中对大文件进行 rsync,但我认为你有充分的理由希望将这些文件保持在 git 的控制之下第一名。

    希望对你有所帮助。

    【讨论】:

    • git-media 看起来正是我想要的,但它还没有完成。我想我得到了它的工作与一点点黑客虽然。现在我只需要编写代码来支持将文件上传到我希望它们去的地方。
    • 为了将来参考,这是我的 git-media 分支,有一些必要的更改:github.com/davr/git-media
    • 太好了,看起来很有用!就像另一个有趣的地方一样,这里的线程(尤其是第一封邮件中链接的幻灯片)对 git 处理大文件的主题很有趣git.661346.n2.nabble.com/…
    • 哇...显然红宝石很烂。我将 'filter' 脚本从 ruby​​ 移植到 bash shell 脚本,现在它的运行速度提高了大约 20 倍(运行 'git status' 时不再有 10 秒的延迟,现在更像是半秒。更有用。)
    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    相关资源
    最近更新 更多