查找在HEAD提交中具有特定文件的所有分支

时间:2017-07-01 23:30:05

标签: git

任务:

  • 我需要在HEAD提交中找到具有给定名称的文件的所有分支。

情况:

  • 我可以安全地假设,有很多(数百万)分支。
  • 我还可以放心地假设,每个分支顶部目录中有很多文件。这一点,我可以通过创建子目录来解决问题,但对用户强制执行此操作将是非常重要的,特别是因为我希望允许编辑离线,然后让那些 A B Ans lagB wl new 1: 0 1 0 0 7 0 2: 2 0 1 1 7 1 3: 3 4 1 0 7 1 4: 5 2 4 4 1 4 5: 8 3 0 2 NA 0 6: 90 4 0 3 NA 0 7: 8 2 0 4 NA 0 8: 2 1 2 2 1 2 9: 4 2 3 1 2 3 10: 1 3 5 2 3 5 11: 2 1 6 3 3 6 ' ed到服务器。

背景:

  • 我将使用git存储库来创建一个特殊的wiki项目,每个用户都可以随时维护自己的wiki视图。
  • 我正在重新实现PHP中只读git访问所需的git函数,所以给我任何git命令对我来说都是有限的。
  • 每个用户都由一个或多个分支机构维护,每个维基页面上的所有其他用户和分支机构都可以轻松访问,同一页面的不同版本所在。
  • 我在服务器上只有裸存储库。

目前,我的计划是这样的(PHP-ish伪代码):

git-push

显然,这是两个大的嵌套循环,有数十万个文件和数百万个分支,这对于每个页面访问都不是我想做的。

所以,除此之外,我看到的唯一选择是创建我自己的这些信息的缓存,我将在我的接收后和/或提交后挂钩中更新。

问题:

  • 有没有比我在这里描述的更优雅的解决方案,那会是哪一个?

1 个答案:

答案 0 :(得分:0)

据我所知,在wiki中,所有页面都在同一目录中,搜索特定文件实际上是线性的。

如果你以某种方式设法存储未压缩的树对象(afaik只能用于blob),那么你就可以通过二进制搜索找到那里的文件。所以你可以摆脱内循环。但似乎没有办法避免在分支上循环。