Windows网络共享上的svn存储库

Pat*_*key 9 svn filesystems berkeley-db network-share fsfs

多台计算机是否可以同时访问存储在共享文件系统上的svn存储库?

我正在构建一个应用程序,其中每个Windows客户端计算机都有一组本地工作文件,并且可以定期与团队的其他成员同步.从服务器的角度来看,除了Windows共享挂载点之外,我不想依赖任何东西.svn file:// URL协议是否支持共享文件系统,还是假设文件系统是本地的?

颠覆文档提到与BDB和FSFS问题在Win9x的环境,但它不是我清楚库是否不同时通过文件访问:// URL是在最近版本的Windows安全(或其他操作系统,对于这个问题).

编辑 我正在构建的应用程序将直接使用svn,因此如果它允许安全的并发共享协作环境,我愿意构建一个相对受限的环境.

小智 11

Tortoise SVN文档实际上强烈反对它 - 请看这个链接..

总结一下:

file:// access仅用于本地,单用户访问,尤其是测试和调试.

  • 我认为"设置服务器"一词会让人们尖叫起来.我们实际上在这里讨论的是在某个系统上运行svnserve或apache模块.如果需要,可以将它放在自己的桌面上(不推荐;将它放在您考虑用于file://的文件服务器上).SVN占用的系统资源非常少,不需要专用系统. (4认同)
  • 好吧,我认为你犯了一个大错误.多个用户在Windows共享上使用单用户软件一直存在问题.但这是你的葬礼. (3认同)
  • 我以某种方式怀疑Tortoise开发人员比您或我更了解Subveersion。Tortoise是基于Subversion代码构建的,因此我想它是Subversion的基本限制。 (2认同)
  • 从个人经验来看,我不会这样做!只需设置一个服务器.这并不难,会让你头疼不已. (2认同)

cra*_*str 10

另一个问题是类似的,但被问到re:性能: Subversion协议性能

SVN Book建议您不要将file://协议用于多个用户

选择服务器配置:

不要被所有用户直接通过file:// URL访问存储库的简单想法所诱惑.即使存储库通过网络共享随时可供所有人使用,这也是一个坏主意.它删除了用户和存储库之间的任何保护层:用户可能会意外(或故意)破坏存储库数据库,使存储库脱机以进行检查或升级变得困难,并且可能导致文件权限问题混乱(请参阅"支持多个存储库访问方法"一节.请注意,这也是我们警告不要通过svn + ssh:// URL访问存储库的原因之一 - 从安全角度来看,它实际上与通过file://访问的本地用户相同,并且它可能带来所有相同的问题如果管理员不小心

  • IIRC,SVN使用文件进行锁定,而不是实际的文件系统级锁(因为它们不是在文件系统和操作系统之间统一支持).竞争条件可能存在于网络共享上,因为假定为原子(即移动)的文件系统操作在通过网络访问时不保证是原子的.SVN开发者在某一点上对此进行了深入解释,但我可能已经忘记了一些细节,但我认为这是它的要点. (2认同)

Pet*_*ker 5

从技术角度来看,完全有可能与多个用户一起使用file://协议:

在标准svn用法下,不会发生损坏,因为subversion在FSFS上使用其自己的锁定机制。否则,SVN本书会明确声明避免设置,因为它在BDB后端中提到了此问题。

但是,真正的问题是如何限制对存储库数据库的访问,以不使用任何其他任意工具访问存储库数据?

如果使用file://,每个人都可以打开SVN信息库中的每个文件并更改其内容,这肯定会导致信息库损坏。

哎呀,每个用户都可以删除整个存储库!

您不能限制对svn工具的访问,因此不应使用file://协议。


Jas*_*Cav 2

我突然想到(我无法在网上找到任何信息),我认为如果您使用支持 file:// 协议的 SVN 客户端(例如TortoiseSVN ),它应该可以正常工作。

然而,不幸的是我找不到该文档,我记得 file:// 协议和 SVN 存在某些问题。如果可能的话,我建议设置一个 SVN 服务器(VisualSVN工作得非常好并且易​​于设置)而不是依赖于 Windows 共享。

编辑:我在 Stackoverflow 上找到了这个讨论。使用文件协议似乎没有问题。

编辑2:尼尔的链接是我不久前读过的,并且确实阻止了文件协议。但是,如果使用 file:// 协议意味着使用和不使用源代码管理之间的区别,我建议至少使用它。一些源代码控制总比没有好。

  • 我强烈不同意你的第二次编辑 - 不可靠的源代码控制比没有更糟糕。 (8认同)