在用户之间共享Git对象存储库



[注意:这与https://stackoverflow.com/questions/25112974/git-repository-sharing-between-users因为我希望用户拥有自己的克隆,所以我只想共享底层对象数据库。]

我有一个相当大的Git存储库,可以由同一台机器上的不同用户访问。是否可以避免每个用户都有自己的存储库对象副本?

我试着使用git clone --reference ~otheruser/foo ...,它似乎在某种程度上起作用,但git gc给了我一个警告:

$ git gc
Enumerating objects: 339704, done.
Counting objects: 100% (4611/4611), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2442/2442), done.
Writing objects: 100% (4611/4611), done.
Total 4611 (delta 2164), reused 4611 (delta 2164), pack-reused 0
Checking connectivity: 339728, done.
warning: unable to unlink '/home/otheruser/foo/.git/objects/pack/pack-88be8eadb55c04690096008a883d76835ddbf24c.idx': Permission denied
warning: unable to unlink '/home/otheruser/foo/.git/objects/pack/pack-af141b07e139a664364d08873cc23598a021ecdf.idx': Permission denied
Expanding reachable commits in commit graph: 82246, done.
$

我应该担心吗(我已经完全意识到使用--reference的风险,所以我在这里更具体地讨论.git/objects/info/alternates指向属于其他用户的目录的情况(。

[老实说,我真的很惊讶Git会试图删除"备用"对象存储库中的文件,不管它是否属于其他用户。]

您可以为每个用户创建单独的分支,并使用git worktree命令将该分支工作目录存储在单独的目录中。

最新更新