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

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

问题描述:

我有几个Git/Github问题。首先,有没有办法创建某种访问令牌的拉/推访问只需一个分支上的Git回购?这个想法是我给用户这个访问令牌,他们可以使用它,但只能推/拉一个我预先指定的分支。Git:每个分支级别访问和最大分支数量

其次,回购可以有多少分支上限?假设我有100个分支机构。这会影响性能吗?大约10,000? 1,000,000个分支机构?

+1

唯一接近的就是GitHub的“受保护的分支”,在这种分支中,如果不进行公关,就无法承诺。对于我知道的分支没有限制,但请记住,git将所有内容都存储在一个大对象树中,因此树越大,最终版本库越慢。 –

多家分支机构的在理论上是无限的:只要你有空间的无限量在其中存储所有的分支名称及其ID,您可以创建分支的任意数量的,都指向一个提交。这意味着存储库本身(不包括分支名称)可以具有小的,有界的大小(一个包含一个文件的提交),并且所有名称都指向该单个提交。

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


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