networking共享文件夹中GIT回购的并发性

我想有一个裸的git存储库(Windows)networking共享存储。 我使用的是Linux,并且使用CIFS安装了所述networking共享。 我的coleague使用的是Windows XP,并且将networking共享作为networking驱动器(从ActiveDirectory以某种方式)自动安装。

我不知道是否可以使用两台计算机的回购,没有并发问题。

我已经testing过了,在我的最后,我可以克隆好,但是如果我们同时访问相同的回购(push / pull),恐怕会发生什么。

在git FAQ中有关于使用networking文件系统的参考(以及SMBFS的一些问题),但我不确定是否有networking/服务器/ windows / linux完成任何文件locking – 我确定没有“T。

那么,有没有人在networking共享上使用了git repo,没有服务器,没有问题?

谢谢,
亚历克斯

PS:我想避免使用http服务器(或git-daemon),因为我没有访问带有共享的服务器。 此外,我知道我们可以从一个推到另一个,但是我们需要在代码/回购上有备份的原因。

更新:

我担心的不是networking故障的可能性。 即便如此,我们也会在当地设立所需的分支机构,我们将能够编制我们的资料来源。

但是,我们通常会经常犯下这个错误,而且经常需要重新绑定/合并。 从我的观点来看,最好的select是在股票上有一个中央回购(所以备份是有保证的),我们都会从这一个中克隆出来,然后用它来重组。

但是,由于我们经常这样做,如果发生同时推/拉的情况,我恐怕文件/回购腐败 。 通常情况下,每当我们访问远程回购时,我们都会互相大叫) ,但是最好是由计算机/networking来保护它。

而且,GIT可能有一个内部机制来做到这一点(因为有人可以在你工作的时候推送到你的回购协议中),但是我还没有发现任何结论。

更新2:

共享驱动器上的回购将是一个回购,不包含工作副本。

Git需要最小的文件locking,我认为这是通过networking文件系统使用这种共享资源时出现问题的主要原因。 这样做的原因是,Git仓库中的大部分文件—所有那些形成对象数据库的文件都被命名为内容的摘要,而且一旦创build就不可变。 所以有两个客户端试图使用不同的内容相同的文件的问题不出来。

对象数据库的另一部分是棘手的 – refs被存储在“refs”目录(或“packed-refs”)下的文件中,并且这些确实改变了:虽然refs/*文件很小并且总是被重写,正在编辑。 在这种情况下,Git将新引用写入临时的“.lock”文件,然后将其重命名为目标文件。 如果文件系统遵守O_EXCL语义,那是安全的。 即使不是,最糟糕的情况也可能是覆盖ref文件。 虽然这会让人感到讨厌,但不应该引起腐败:只要你推到共享的回购站,这个推动看起来是成功的,而实际上是别人的做法。 但是,这可以简单地通过拉(合并在其他人的承诺)和再次推动。

总而言之,我并不认为回购腐败在这里是一个问题太多 – 事实上,由于locking问题,事情可能会有点错误,但是Git回购的devise可以减less损失。

(免责声明:这在理论上听起来不错,但是我没有做任何并发的repo来testing,只通过NFS而不是CIFS共享)

何必? Git被devise成分布式的。 只需在每台机器上都有一个存储库,并使用发布和拉取机制在它们之间传播更改。

出于备份目的,运行夜间任务将您的存储库复制到共享。

或者,在每个共享上创build一个存储库,然后将它们作为分布式存储库使用,从中可以将变更集从对方中取出。 如果使用这种方法,那么执行构build等将会减less,因为您将不断地通过networking访问。

或者,在您自己的计算机上分发存储库,并运行定期任务,将您的提交推送到共享上的存储库。

显然使用中央git回购支持。 大多数规定的用途表明ssh或http访问,这两者都不能避免同时访问回购。 即使你使用的是完全分布式的使用方法,如果有两个以上的协作者在任何地方推送相同的回购,也会出现这个问题。 到目前为止,还没有人回答这个问题。 git的devise是否允许它同时处理N个分支?

听起来就像你更喜欢使用一个集中的版本控制系统,所以备份查询是令人满意的。 也许在xxx2git之间为你在本地工作。