Git类似于Hg的Bigfiles Extension?

时间:2010-07-01 20:53:53

标签: git version-control mercurial mercurial-bigfiles

我希望git中有类似于Mercurial's Bigfiles Extension的内容(注意:我知道git-bigfiles,但这是无关的)。

基本上我想在我的git存储库中存储大型二进制文件,但是当我进行克隆时,我不希望得到大型二进制文件的每个版本。我只想在签出包含那些大文件的特定修订时下载大型二进制文件。

1 个答案:

答案 0 :(得分:5)

以下是一些需要考虑的选项:

浅层克隆:您可以将--depth <depth>参数添加到git clone以获取存储库的浅层克隆。例如如果<depth>为1,则表示克隆仅获取最近提交所需的文件。但是,正如git clone手册页中所述,此类存储库对您可以对它们执行的操作进行了尴尬的限制:

        --depth 
           Create a shallow clone with a history truncated to the specified
           number of revisions. A shallow repository has a number of
           limitations (you cannot clone or fetch from it, nor push from nor
           into it), but is adequate if you are only interested in the recent
           history of a large project with a long history, and would want to
           send in fixes as patches.

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

Scott Chacon的“git media”扩展:作者在回答this similar question和github上的README:http://github.com/schacon/git-media时对此进行了描述。

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

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

我希望能有所帮助。