在我们公司,我们正在尝试从 svn 迁移到 git。我们想让这对团队来说变得简单,同时不会给系统管理员带来太多负担。
我们已经找到了一种方法来做到这一点,方法是在每个团队拥有的(Windows)网络驱动器上创建一个裸存储库,然后向/从那里推/拉。身份验证是通过文件访问权限安排的,因此无需设置 https 和整个身份验证内容。伟大的!(我们可以通过 VPN 远程访问驱动器,所以它几乎和 https 或 git+ssh 解决方案一样好)
更好的是,我们甚至可以免费获得备份,因为网络共享已经被备份。但是,此备份的运行相当不可预测(备份持续几个小时,因此可能会持续到下一个工作日)。
因此,当开发人员推送到存储库时,可能正在备份驱动器。使用 SVN,这可能会导致问题,这就是svn hotcopy
存在的原因。
git是否存在同样的风险?当有人推送到某个地方时,我可以在某个地方复制一个裸存储库吗?当然,推入完成后无法恢复也没关系。如果必须做一些工作来恢复在被推送到时创建的备份(即通过删除半完成的推送残留数据),这也很好。但是,如果整个裸存储库损坏且无法使用,那就是个问题。
我做了一些实验,看不到问题,但这并不意味着不可能有任何问题。
编辑:我接受了“以正确的方式做”的答案,因为从长远来看,这是我打算做的。然而,就目前而言,对我们而言,一个简单的解决方案是在自动备份开始前git clone
大约一小时对整个裸存储库(在同一个驱动器上)进行备份。如果“真实”存储库已在使用中,自动备份可能会错误地复制它到那时,但最近克隆的副本不会有问题。我们知道备份何时开始,而不是何时结束,所以这对我们来说已经足够了。