Git类似于Hg的Bigfiles Extension?

dav*_*avr 6 git version-control mercurial mercurial-bigfiles

我想要一些类似于Mercurial的Bigfiles Extensiongit中的东西(注意:我知道git-bigfiles,但这是无关的).

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

Mar*_*air 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.

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

Scott Chacon的"git media"扩展:作者在回答这个类似的问题并在github的README中描述了这一点:http://github.com/schacon/git-media.

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

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

我希望有一些帮助.