我想问你的是:你真的需要共享存储库吗?
与Mercurial一样,git在制作本地克隆时会在存储库之间创建硬链接,从而仅占用很少的磁盘空间。例如: -
git clone http://example.org/repo repo
git clone repo repo-copy1
git clone repo repo-copy2
在repo-copy1
和repo-copy2
库大多数文件的硬链接repo
,并且不会占用额外的磁盘空间。只有工作副本中的文件才是真正的副本。
可以确认这种行为是这样的:
$ df -l
Filesystem 512-blocks Used Available Capacity Mounted on
/dev/disk0s2 976101344 217966872 757622472 23% /
$ git clone --no-checkout repo repo-copy
Cloning into repo-copy...
done.
$ du -cs repo-copy/.git
63528 .
63528 total
$ df -l
Filesystem 512-blocks Used Available Capacity Mounted on
/dev/disk0s2 976101344 217967536 757621808 23% /
正如你可以看到,克隆65880块库后(每512个字节),文件系统上的块数下降了仅664块。
如果从远程服务器克隆(子)存储库,则可能必须手动创建到其他本地克隆的硬链接;对于Mercurial,您可以使用relink
扩展名;该git相当于也似乎是called that。
澄清:共享扩展共享多个工作副本之间的单个存储库。 –
@Laurens Holst:这正是我需要的。 –