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