我决定这样做:
shared-objects-database.git/foo.git/ objects/info/alternate (will have ../../shared-objects-database.git/objects)bar.git/ objects/info/alternate (will have ../../shared-objects-database.git/objects)baz.git/ objects/info/alternate (will have ../../shared-objects-database.git/objects)
所有分叉在其object / info / alternates文件中都有一个条目,该条目提供了到对象数据库存储库的相对路径。
使对象数据库成为存储库非常重要,因为我们可以保存具有相同名称的存储库的不同用户的对象和引用。
脚步:
git init --bare shared-object-database.git
- 每当有任何推送(通过后接收)或运行cronjob时,我都会运行以下代码行
for r in list-of-forksdo
(cd“ $ r” && git push ../shared-objects-database.git“ refs / :refs / remotes
/ $ r / ” && echo ../../shared-objects-database.git / objects>对象/ info /
alternates#要保存的代码每次完成时,我都将“ fat”对象添加到备用对象中
然后,在下一个“ git gc”中,将替代已存在的fork中的所有对象。
git repack -adl也是一个选择!
这样,我们可以节省空间,以便两个用户在服务器上各自的分支上推送相同的数据将共享对象。
我们需要在共享对象数据库中将
gc.pruneExpire变量设置为
never。为了安全起见!
要偶尔修剪对象,请将所有派生作为远程对象添加到共享,提取和修剪中!Git会做剩下的!



