在网络共享上使用SVN工作副本

7

好的,我正在为我的Web团队整理版本控制流程。

我知道理想情况下,每个用户都应该在本地机器上拥有完整的工作代码副本。

不幸的是,对于我们很多Web应用程序来说,它们具有额外的服务器特定的数据库或其他系统集成要求,这些要求无法在用户的工作站上复制(即某些服务器只能安装在XP、vista等操作系统上)。

我正在考虑在我的一个服务器上设置一个区域,作为每个用户的工作副本,但仍然驻留在网络上。

例如:

/SVRROOT/
- Dev1 Working Copy
- Dev2 Working Copy
- Dev3 Working Copy

这意味着每个用户都将拥有自己的工作空间(按照SVN最佳实践),但它将驻留在网络上。
这种模型有什么问题吗?

你在用哪种编程语言开发?请记住,由于信任/安全限制,任何 .Net 相关的东西都不能跨网络运行。 - DilbertDave
谢谢,一些经典的ASP和一些.NET内容。 嗯...我会去查看的。 - Colm Troy
4个回答

5

您可能会发现,Subversion在网络上的操作性能比本地操作性能要慢得多。我在Unix环境中使用NFS挂载的工作目录遇到了这个问题,但我怀疑您使用Windows共享时也可能遇到同样的情况。

值得比较不同情况下的性能,以确定对性能的影响。


1
我们与您拥有完全相同的模型,即Win10开发机和通过smb挂载的AIX服务器之间。 我使用此设置的经验是,来自Windows的每个SVN操作都非常缓慢(特别是对于大型项目的svn检查修改)。 此外,如果您在同一工作副本中从win和命令行AIX运行并行svn操作,通常会破坏WC并不得不检出新的副本。
我们这样做是因为该项目在AIX上编译,我们希望在提交更改之前编译和测试更改。 我们通常使用常规IDE从Windows编辑源代码,但是直接使用AIX svn客户端从CLI执行每个svn命令(即Windows仅修改文件,而AIX执行所有svn工作)。

0

如果您将网络文件夹映射到驱动器号,某些Subversion操作的性能会更好。当您使用UNC路径而不是驱动器号时,Apache Apr库会执行一些额外的网络请求。

通常情况下,您应该只使用本地文件夹作为您的工作副本,因为这样您就可以仅备份服务器即可满足需求。

Visual Studio 2005和2008通过其迷你Web服务器允许大多数Web服务器方案,并且大多数数据库可以通过网络访问(或由每个开发人员设置)。这将开发人员与单点故障分离开来。

如果所有人都在同一台服务器上,单个开发人员可能会使所有开发人员使用的Web服务器/数据库服务器崩溃...


0

至少在使用TortoiseSVN时,强烈建议不要在网络共享上使用工作副本,如FAQ所述:

我可以将工作副本存储在网络共享上吗?
这取决于网络共享。但我们真的非常强烈地敦促您不要这样做!即使您正在使用Windows服务器并使用那些网络共享,fcntl()文件锁定也不是完全可靠的。对于基于Samba的共享,所有赌注都是关闭的。这意味着您获得损坏的工作副本,然后您将丢失数据!也许不是今天,也许不是明天,但总有一天。

我不确定这是否适用于SVN的一般情况。

我们还在Windows网络共享上使用SVN工作副本,最近遇到了问题,例如偶尔更改文件/目录权限,导致工作副本无法使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接