Git:每个分支级别访问和最大分支数量

时间:2016-06-08 20:51:04

标签: git github branch token

我有一些Git / Github问题。首先,有没有办法为Git仓库中的一个分支创建某种访问令牌以进行拉/推访问?我的想法是给用户这个访问令牌,他们可以使用它,但只能推/拉一个我事先指定的分支。

第二,回购可以拥有分支数量的上限吗?说我有100个分支。这会影响性能吗?一万个呢? 1,000,000个分支机构?

1 个答案:

答案 0 :(得分:1)

分支数理论上是无界限的:假设您有无限的空间来存储所有分支名称及其ID,则可以创建任意数量的分支,所有分支都指向一次提交。这意味着存储库本身(不包括分支名称)可以具有小的有限大小(一个提交包含一个文件),其中1个googolplex名称都指向该单个提交。

但是,每个名称必须是唯一的,并且每个名称占用一些空间。在当前的Git实现中,分支名称存储在单个文件中(.git/refs/heads/br/an/ch保存名为br/an/ch的分支的值)和/或在单个平面文件中(.git/packed-refs保存每个文件的值引用,包括所有分支名称。。 1 由于这个文件/这些文件存在于存储库中,它们将占用空间,并且主机可能会在某些时候限制您(当然它在运行时磁盘空间不足,但可能在此之前。)

1 如果某个名称出现在单个文件中,该文件将提供该名称的值。如果没有,Git会回到搜索平面文件。因此,对于平面文件中存在的名称,其私有文件值将覆盖。这让Git只需将所有名称收集到平面文件中,删除单个文件,然后重新压缩;然后在更新名称时一次重新创建一个单独的文件。只有名称​​删除需要更新单个文件(删除它)平面文件(删除条目)。