来自带有硬链接的单个仓库的多个git结账?

时间:2012-01-23 23:03:55

标签: git

有没有人知道如何根据硬链接获得众多“只读”git存储库?换句话说,我希望后续的工作目录从大约500MB的回购仅仅是硬链接,因此只需几KB。

如果没有,那么对我下面的精神错乱的任何反馈都表示赞赏。


好的,现在背景:

我正在制作一个QA工具,我希望能够点击:

1f381de1.somesite.com
9e010d42.somesite.com
...etc

由于这些项目包括由例如apache托管的动态(例如php)文件,我无法通过像git show之类的东西管道所有输出,或者我很乐意(如果有人知道的话)一种可行的方法,我很乐意听到它。)

我不希望为每个要点击的版本执行git clonegit-new-workdir,因为我将复制回购中的所有实时文件。由于我不想经常垃圾收集这个项目,可能会有一百个版本或更多“活跃”,我不想复制可能是500MB项目100次。

理想情况下,存在一些允许我基于硬链接获得多个只读签出的工具。如果没有,我目前的想法是:

  • 签出存储库
    • 制作“未压缩对象”文件夹
    • 根据需要解压缩.pack文件
  • 我想要一个新版本:
    • 制作目录
    • 使用git catfile -p
    • 解压缩树的提交日志
    • 将每个对象解压缩到“未压缩对象”文件夹(如果它尚不存在)
    • 根据需要走上树,重复上述步骤
    • 在我的新文件夹中为每个未压缩对象创建硬链接

最终结果是我在.git/objects中使用了所有文件的未压缩版本,新结帐中的每个文件都是指向该目录中某个文件的硬链接。

1 个答案:

答案 0 :(得分:1)

调查一下,我遇到了我听说过的FUSE,但从来没有真正使用或打扰过我的脑袋。它允许我做我认为不可能的事情 - 代理git show命令到操作系统级别的文件请求。