2016-06-08 61 views
0

我有幾個Git/Github問題。首先,有沒有辦法創建某種訪問令牌的拉/推訪問只需一個分支上的Git回購?這個想法是我給用戶這個訪問令牌,他們可以使用它,但只能推/拉一個我預先指定的分支。Git:每個分支級別訪問和最大分支數量

其次,回購可以有多少分支上限?假設我有100個分支機構。這會影響性能嗎?大約10,000? 1,000,000個分支機構?

+1

唯一接近的就是GitHub的「受保護的分支」,在這種分支中,如果不進行公關,就無法承諾。對於我知道的分支沒有限制,但請記住,git將所有內容都存儲在一個大對象樹中,因此樹越大,最終版本庫越慢。 –

回答

1

多家分支機構的在理論上是無限的:只要你有空間的無限量在其中存儲所有的分支名稱及其ID,您可以創建分支的任意數量的,都指向一個提交。這意味着存儲庫本身(不包括分支名稱)可以具有小的,有界的大小(一個包含一個文件的提交),並且所有名稱都指向該單個提交。

但是,每個名稱必須是唯一的,每個名稱都佔據一定的空間。在當前的Git實現中,分支名稱存儲在單個文件中(.git/refs/heads/br/an/ch保存名爲br/an/ch的分支的值)和/或存儲在單個平面文件中(.git/packed-refs保存每個引用的值,包括所有分支名稱)。由於此文件/這些文件位於存儲庫中,因此它們將佔用空間,並且可能主機會在某個時間點(當然,在磁盤空間用盡的地方,但可能在此之前)限制您。


如果一個名字出現在一個單獨的文件,該文件給出了名的值。如果沒有,Git會回退搜索平面文件。因此,對於平面文件中存在的其自己的私有文件,私有文件值將覆蓋。這讓Git只需將所有名稱收集到平面文件中,刪除單個文件即可重新壓縮;然後每當名稱更新時一次重新創建單個文件。只有名稱刪除需要更新個別文件(刪除它)平面文件(刪除條目)。