Git:每个分支级别的访问权限和最大分支数
Git: per-branch level access and maximum number of branches
我有几个 Git/Github 问题。首先,有没有办法为 pull/push 访问 Git 仓库上的 one 分支创建某种访问令牌?这个想法是我会给用户这个访问令牌,他们可以使用它,但只能在我预先指定的一个分支上 push/pull。
其次,回购可以拥有的分支数量是否有上限?假设我有 100 个分支机构。这会影响性能吗? 10,000 呢? 1,000,000 个分支?
分支数量理论上是无限的:如果您有无限数量的space来存储所有分支名称及其ID,您可以创建任意数量的分支,都指向一个提交。这意味着存储库本身,不包括分支名称,可以有一个小的、有界的大小(一个提交包含一个文件),1 个 googolplex 名称都指向一个提交。
但是每个名称必须是唯一的,并且每个名称都占用一些space。在当前的 Git 实现中,分支名称存储在单个文件中(.git/refs/heads/br/an/ch
保存名为 br/an/ch
的分支的值)and/or 在单个平面文件中(.git/packed-refs
保存每个引用的值,包括所有分支名称)。1 因为这个文件/这些文件存在于存储库中,它们将占用 space,并且主机可能会在某个时候限制你(当然是在它用完磁盘 space 的时候,但很可能在那之前)。
1如果某个名称出现在单个文件中,则该文件会给出该名称的值。如果不是,Git 回退到搜索平面文件。因此,对于同时存在于平面文件 和 其自己的私有文件中的名称,私有文件值将被覆盖。这让 Git 只需将所有名称收集到平面文件中,删除单个文件,重新压缩;然后在更新名称时一次一个地重新创建单个文件。只有名称 删除 需要同时更新单个文件(删除它)和 平面文件(删除条目)。
我有几个 Git/Github 问题。首先,有没有办法为 pull/push 访问 Git 仓库上的 one 分支创建某种访问令牌?这个想法是我会给用户这个访问令牌,他们可以使用它,但只能在我预先指定的一个分支上 push/pull。
其次,回购可以拥有的分支数量是否有上限?假设我有 100 个分支机构。这会影响性能吗? 10,000 呢? 1,000,000 个分支?
分支数量理论上是无限的:如果您有无限数量的space来存储所有分支名称及其ID,您可以创建任意数量的分支,都指向一个提交。这意味着存储库本身,不包括分支名称,可以有一个小的、有界的大小(一个提交包含一个文件),1 个 googolplex 名称都指向一个提交。
但是每个名称必须是唯一的,并且每个名称都占用一些space。在当前的 Git 实现中,分支名称存储在单个文件中(.git/refs/heads/br/an/ch
保存名为 br/an/ch
的分支的值)and/or 在单个平面文件中(.git/packed-refs
保存每个引用的值,包括所有分支名称)。1 因为这个文件/这些文件存在于存储库中,它们将占用 space,并且主机可能会在某个时候限制你(当然是在它用完磁盘 space 的时候,但很可能在那之前)。
1如果某个名称出现在单个文件中,则该文件会给出该名称的值。如果不是,Git 回退到搜索平面文件。因此,对于同时存在于平面文件 和 其自己的私有文件中的名称,私有文件值将被覆盖。这让 Git 只需将所有名称收集到平面文件中,删除单个文件,重新压缩;然后在更新名称时一次一个地重新创建单个文件。只有名称 删除 需要同时更新单个文件(删除它)和 平面文件(删除条目)。