没有服务器的SVN用于我们的Visual Studio开发

时间:2011-09-30 14:31:54

标签: visual-studio svn

安全对我们的小团队来说不是问题。 是否有任何令人信服的理由说明为什么我们可能需要使用某种类型的SVN服务器,而不仅仅是在某个网络共享上使用文件?

修改

抱歉 - 我认为我没有很好地沟通。

我想使用SVN进行版本控制。我认为我不需要一个“服务器”。团队成员都可以将他们的SVN客户端指向网络位置。

这够好吗?

或者我需要“服务器”?

10 个答案:

答案 0 :(得分:3)

Agent SVN是Visual Studio的Subversion插件,可以配置为使用文件位置作为存储库,因此不需要服务器。

答案 1 :(得分:2)

是的,您可以在某个文件夹上创建存储库,并将您的客户端指向该位置,不需要svnserve进程或apache2 + mod_svn

但是有几个原因可以考虑服务器:

  • 同步性:基于文件的存储库由访问它的客户端更改。如果您的一个客户的时钟与团队的其他成员不同步,他/她可能在极少数情况下破坏存储库数据。然而,服务器将始终具有唯一的时间。
  • 可伸缩性:当每天的提交量增加时,基于文件的锁定/提交/解锁序列可能会导致文件服务器意外加载,并使响应时间过长会让您的团队感到沮丧。
  • 可扩展性:比您或您的团队更快发现需要一个票务系统(QA / QC或第三级支持,例如Trac,Redmine,Bugzilla),然后遇到与修订控制相关的问题和修复确实成了必备品。这些故障单系统始终接受svn:// URL,但很可能会拒绝基于文件的存储库。

我不知道这些原因对你来说是否足够引人注目,但是你确实可以推迟决定去服务器,直到它开始变得不可避免 - 如果你的团队永远不会成长,甚至无限期。

答案 2 :(得分:1)

svn的主要用途是版本控制。 使用文件不容易保持版本控制。顺便说一句,您可以在自己的电脑上设置“svn服务器”本地

答案 3 :(得分:1)

Subversion使用三个主要协议:

  • svn:
  • http:
  • file:

还有其他几个(svn + ssh和https),但它们与上述内容有关。

如果使用file:协议,则不需要Subversion服务器。您所要做的就是将文件协议指向Subversion存储库所在的目录:

C> svnadmin create C:\svnrepos\myrepos

C> cd C:\workspace
C> svn co file://C:/svnrepos/myrepos repos

在上面,我在C:\svnrepos\myrepos创建了一个Subversion存储库,然后转到另一个目录(非常重要!)并进行了结帐。没有服务器正在运行。

这有几个问题:

  • Subversion存储库目录必须是每个人都可以读/写的,这意味着任何人都可以直接修改存储库而无需通过Subversion。
  • 如果多个用户同时尝试提交,我不能100%确定挂钩的工作方式或处理冲突的方式。
  • 即使您不打算获得任何安全保护,您也可能想知道进行更改的人的姓名。 file://协议不会跟踪。你所看到的只是改变,而不是由谁。

最后:

  • 运行服务器并不是那么困难。

因此,尽管您可以将Subversion存储库放在网络共享上,并且每个人都可以使用file://协议,但实际上并没有很好的理由这样做。事实上,我使用Subversion作为我自己的个人存储库,我是唯一使用它的人,我不使用file://协议。

您可以轻松地将svnserve作为Windows服务运行,因此只要您的计算机启动它就会自动启动。而且,设置非常简单。根本没有理由不使用它。

所以,不管怎么说,不妨继续以正确的方式行事。

顺便问一下,你是如何通过Visual-Studio使用Subversion的?我建议你看一下ankhsvn,它允许你直接在Visual-Studio中访问Subversion。

答案 4 :(得分:0)

SVN与安全无关;它是关于维护源代码的历史记录。

我想不出你不想设置SVN服务器的令人信服的理由。我在我的个人桌面上使用一个用于我自己的开发。这不是关于安全;它是关于保留我的源代码历史记录,以防我搞砸了并想要恢复。

这也与习惯有关:“首先我们养成习惯,然后养成习惯。”即使在简单的情况下也要学会一直做好。

答案 5 :(得分:0)

想象一下,与多人合作开展同一个项目。两者都在同一时刻修改同一个文件。如果你们都在同一个文件共享上工作,那将会很糟糕。 使用某种源控制的另一个原因是能够跟踪变化。 通过这种方式,您可以通知您的同事他搞砸了。 : - )

答案 6 :(得分:0)

嗯,如果你需要安全性,subversion不是正确的工具,它是正确的工具:

  • 如果您希望团队同时处理相同的来源(并且能够还原错误的提交)
  • 如果你想避免保存文件的最后一个人擦除另一个人做出的所有修改(如果是同一网络共享上的文件)
  • 如果你需要进行并行开发(并为此创建分支)
  • 如果您需要能够重新提取标记版本(在交付应用程序时有用)

答案 7 :(得分:0)

设置服务器几乎是微不足道的,所以我会问你为什么不想要一台服务器。但这里还有其他一些原因:

  1. 可靠性。 SMB共享等网络文件系统不是 可靠,特别是当涉及多个用户写入 同时使用相同的文件。 SVN特别不声称 支持这个。
  2. 性能。通过提供对文件的访问 服务器将比通过网络执行速度快得多 份额。
  3. 审计。即使您不关心安全性,也希望将更改与用户关联。通过服务器强制登录,服务器可以使用该用户名记录进行更改的人。
  4. 安全。如果使用网络共享,则所有用户都可以直接读取/写入存储库文件。我知道你不关心安全性,但是简单的错误怎么办?比如有人不小心从存储库中删除了文件。
  5. 下载并安装Subversion Edge之类的内容。这在Windows上安装很简单,它为您提供了一个Web UI来管理服务器。您还可以获得用于浏览存储库的Web UI,这在研究错误时非常有用。

答案 8 :(得分:0)

在一个只有两个人的团队中,某种版本控制比没有版本控制更具优势。如果您需要多个版本用于演示目的,并且使用锁定/解锁+合并以防止开发人员谋杀彼此代码,则能够回溯更改,分支代码是您使用SVN的原因。在单独参与项目时也很方便。

您可以在Linux,Mac,Windows上轻松托管SVN - 您只需要该机器可以从开发机器进行网络连接。

答案 9 :(得分:0)

需要在某处运行的SVN服务器进程。你无法避免它。它是SVN的基本组成部分,它提供对存储库的访问,是客户必须指向的内容。

我们使用VisualSVN。安装几乎不需要任何努力。