SVN不带服务器用于我们的Visual Studio开发



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

编辑

对不起——我认为我没有很好地沟通。

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

这样够好吗?

或者我需要一个"服务器"吗?

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

然而,你应该考虑使用服务器的原因有几个:

    同步:基于文件的存储库由访问它的客户端更改。如果您的一个客户的时钟与团队的其他成员不同步,在极少数情况下,他/她可能会损坏存储库数据。然而,服务器总是有一个唯一的时间。
  • 可伸缩性:当每天提交的数量增加时,基于文件的锁/提交/解锁顺序可能会导致文件服务器上的意外负载,并使您的团队因长响应时间而受挫。
  • 可扩展性:你或你的团队迟早会发现需要一个票据系统(QA/QC或三级支持,例如Trac, Redmine, Bugzilla),然后与版本控制相关的问题和修复将确实成为必须拥有的。这些票据系统总是接受svn://URL,但很可能拒绝基于文件的存储库。

我不知道这些理由对你来说是否足够有说服力,但你确实可以推迟去服务器的决定,直到它变得不可避免——甚至无限期,如果你的团队永远不会成长。

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

svn的主要用途是进行版本控制。使用文件不容易保持版本控制。顺便说一句,你可以在你自己的pc上本地设置"svn服务器"

Subversion使用三种主要协议:

  • svn:
  • http:
  • file:

还有一些其他的(svn+ssh和https),但它们与上面的相关。

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

C> svnadmin create C:svnreposmyrepos
C> cd C:workspace
C> svn co file://C:/svnrepos/myrepos repos

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

这里有几个问题:

  • Subversion存储库目录必须对每个人都可以读写,这意味着任何人都可以直接修改存储库而不需要通过Subversion。
  • 我不是100%确定钩子是如何工作的,或者如果多个用户同时尝试提交,如何处理冲突。
  • 即使你不打算有任何安全措施,你也可能想知道更改的人的名字。file://协议不跟踪这个。你所看到的只是修改了,而不是谁做的。

,最后:

  • 运行一个服务器并没有那么难。

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

你可以很容易地运行svnserve作为一个Windows服务,所以它会自动启动当你的机器启动。而且,设置起来很简单。没有理由不使用它。

所以,不妨继续用正确的方法。

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

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

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

这也是关于习惯的:"首先我们养成习惯,然后习惯塑造我们。"要学会在任何时候都做对,即使是在简单的情况下。

想象一下和很多人一起做同一个项目。两者在同一时刻修改同一个文件。如果你们都在同一个文件共享上工作,那就很糟糕了。使用某种类型的源代码控制的另一个原因是能够跟踪更改。这样你就可以通知你的同事他把事情搞砸了。

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

  • 如果你想让一个团队同时在相同的源代码上工作(并且能够恢复错误的提交)
  • 如果你想避免最后一个保存文件的人擦除另一个人所做的所有修改(在同一网络共享文件的情况下)
  • 如果您需要进行并行开发(并为此创建分支)
  • 如果你需要能够重新提取一个标记的版本(在交付应用程序时很有用)

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

  1. 可靠性。网络文件系统如SMB共享是不一样的可靠,特别是当涉及到多个用户向相同的文件在同一时间。SVN没有明确声明支持这个。
  2. 性能。提供对文件的访问服务器将比在网络上完成要快得多份额。
  3. 审计。您希望您的更改与用户相关联,即使您不关心安全性。通过服务器强制登录,服务器可以使用该用户名记录谁进行了更改。
  4. 安全。如果使用网络共享,那么所有用户都可以直接读/写访问存储库文件。我知道你不关心安全,但是简单的错误怎么办?比如有人不小心从存储库中删除了文件。

下载并安装Subversion Edge之类的东西。这是微不足道的安装在Windows上,它给你一个web UI来管理服务器。您还可以获得一个用于浏览存储库的web UI,这在研究bug时非常有用。

在只有两个人的团队中,有版本控制比没有版本控制有很大的优势。如果您需要多个版本进行演示,则可以回溯更改,分支代码,并且使用锁/解锁+合并来防止开发人员相互破坏代码,这就是使用SVN的原因。当你一个人在一个项目上工作时也很有用。

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

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

我们使用VisualSVN。

最新更新