如何在Subversion中设置共享工作副本

时间:2008-10-01 11:25:06

标签: svn

我使用Subversion仍然很新。

是否有可能在网络可用共享(c:\ svn \ projects \ website)上有一个工作副本,每个人(在这种情况下使用3个)可以签出并提交文件?我们不需要构建服务器,因为它是一个asp站点,设计人员习惯在保存文件时立即获得结果。我可以尝试向他们展示如何在他们的机器上设置本地,但是如果我们可以在开发服务器上共享文件并且仍然能够在某人完成时提交,那将是理想的。

一个简单的解决方案是让我们所有人都使用相同的subversion用户名,这至少可以让我将文件置于版本控制之下。

但是有可能从svn资源库中签出一个文件夹但是仍然要求每个人使用他们的用户/传递来提交吗?

编辑:我正在尝试使用我们当前的工作流程,即使用Frontpage Extensions或FTP编辑网站的LIVE版本。并把它变得更好。在这种情况下,我设置为镜像实时服务器的开发服务器上的实时站点的副本,删除首页扩展访问。然后设计师仍然可以获得即时满足的相同效果,但我不必担心他们正在编辑实时文件。即使在subversion中使用共享用户/传递仍然是版本控制。它可能并不理想,如果设计师实际上是程序员,我会尝试让他们完全充实,但事实并非如此。在这种情况下,这是我能做的最好的事情,避免了巨大的学习曲线和停工。

9 个答案:

答案 0 :(得分:7)

根据我的经验,它可以很好地开箱即用。在我的公司,我们已经有这么多年的设置,并没有遇到任何问题(除了明显的共享工作副本之外)。

但是,如果您需要网站的“实时”版本,则应该考虑使用单独的工作副本和触发器(挂钩)来更新提交时的共享位置。

答案 1 :(得分:2)

您无法签出工作副本,工作副本是用于已经签出的代码的术语。如果您要求多个开发人员同时使用同一组工作文件,那么您正在严重破坏拥有版本控制系统的一个主要用途,即允许您的开发人员彼此独立地进行更改没有为其他人破坏东西。

那就是说,如果你真的想这样做,你可以。使用Linux服务器,要做的就是让每个用户为每个用户运行不同的ssh用户代理(对于我们使用Pagent的Windows机器),并使用不同的ssh身份。然后让svn服务器将来自不同身份的ssh-tunnel识别为来自不同用户。不幸的是,我不知道如何在Windows中进行设置。

答案 2 :(得分:1)

您需要使用svnserve(SVN附带的轻量级SVN服务器)或apache mod。

有了它,你可以configure permissions这样:

[general]
password-db = userfile
realm = example realm

# anonymous users can only read the repository
anon-access = read

# authenticated users can both read and write
auth-access = write

答案 3 :(得分:1)

我知道这是一个旧线程,但我发现它是因为我正在尝试做同样的事情。

我不认为这个问题可以通过颠覆来解决,虽然我已经多次尝试过,但我认为这种需要是完全合法的。

为我们重复出现的用例是在应用程序之外维护的复杂配置文件。

一个很好的例子可能是apache httpd.conf文件。它们很复杂,我们想跟踪文件的变化。我们不希望每个人都使用“root”,因为我们无法跟踪谁做了什么。

Mercurial可以这样做:

Mercurial Multiple Committers

答案 4 :(得分:0)

工作副本适用于每个用户拥有自己的副本。存储库是共享的。只有签出WC的人才能对其进行更改。

答案 5 :(得分:0)

如果你不想要服务器,比如分布式VCS(Bzr,git和mercurial这些天很受欢迎),或者你应该看看subversion托管服务,也许你可以看看除了颠覆之外的东西。

不建议共享单个工作副本。这实际上违背了版本控制的目的。请不要这样做。

答案 6 :(得分:0)

您打算拥有自己的SVN存储库,每个用户(使用自己的用户名和密码访问SVN存储库)都应该查看自己的工作副本。

可以通过拥有不同的PC用户帐户并让人们查看他们自己的帐户,甚至通过共享PC,在一台PC上实现这一点(这是你的问题,有多个开发者共享它的PC吗?)用户帐户并让人们签到另一个工作文件夹。我不认为这是特别整洁或好看,如果一家公司这些天不能为每个开发人员买一台PC,那么它几乎不值得为之工作!

我建议:

  1. 每位员工都有自己的工作副本。

  2. 应该有一个ANT或Maven或类似的构建脚本,允许开发人员从他们的工作副本构建和部署到开发Web服务器上,这样他们就可以看到它是如何形成的。这可以很简单,如“将文件复制到此共享位置”。

  3. 由于每个员工都有自己的SVN用户名/密码,您可以看到谁做出了哪些更改,并在他们离开公司时将他们锁定。

  4. 这可能会创建一个设计师必须遵循的流程,而不是您当前的无政府状态,但如果他们需要超过半天的时间来获取SVN以及如何运行构建脚本来部署到开发Web服务器然后你遇到了更大的问题。

答案 7 :(得分:0)

我认为你卖的是你的球队。非开发者可以轻松学会使用SVN,尤其是像乌龟这样的东西。如果你要经历设置SVN的麻烦,那么只需给每个人一个单独的登录,让他们在自己的本地工作副本上工作。做一个快速而又脏的CruiseControl自动构建,从SVN中提取以创建临时站点内容。这只是一点点工作,结果会更好。

答案 8 :(得分:0)

我知道这是一个老问题/ wiki,但我遇到的解决方案如下。

问题可以重述如下:我们如何使用真正的源控制系统(如SVN),并且仍然允许非技术设计人员享受他们所遇到的相同的保存预览 - 保存 - 预览周期知道和爱?

要点:

  • 为了实现SVN的全部优势,每个用户都需要拥有自己的工作副本。这就是它的方式。

  • 如果你的应用程序中仍然有经典的ASP(非.NET),像Cassini这样的轻量级本地服务器将无法完成这项工作。

  • 用户最好不要安装或学习使用像(简单的)乌龟这样的SVN客户端。

我的方法:

  • 在SVN中为每个用户创建一个分支

  • 在每个客户端上,为您的开发服务器上的用户特定工作目录提供映射驱动器。他们将使用FrontPage,Expression,SharePoint设计器或其他任何方式在此处进行更改。

  • 在开发服务器上的IIS中,使用特定于用户的主机标头创建特定于用户的网站(例如,alice.www.mysite.combob.www.mysite.com)。他们将通过此URL浏览网站以查看其更改。这也允许他们在将其合并到主干之前向他人显示他们的更改。

  • 使用CruiseControl.NET,提供检查,更新,添加和提交每个用户分支的更改的任务。弄清楚如何做到这一点,以便每个用户只能看到自己的任务。

  • 使用CruiseControl.NET创建一个将其更改合并到主干中的任务

  • 使用CruiseControl.NET,创建一个任务,使用合并的更改更新真实开发站点(dev.www.mysite.com)。该站点将显示每个人的工作组合,并充当临时和调试区域。如果您使用的是WAP,那么您也希望此任务能够触发构建。

听起来很多步骤,但它真的很简单。创建分支机构,映射驱动器,设置新的IIS站点,让它们变得疯狂。

在幕后,这与为他们提供本地IIS安装完全相同,并允许他们在必要时使用SVN提交更改,就像开发人员一样。不同之处在于,他们的工作副本位于服务器上,IIS / Cassini不必在他们的盒子上,他们将使用Web界面执行提交,更新等SVN操作。

祝你好运!