Subversion在共享开发服务器上

时间:2010-10-10 08:48:23

标签: svn version-control

我正在考虑在我的工作中实现源代码控制。理想情况下,我想使用Subversion,因为它似乎是目前的首选工具。但是,我似乎已经碰到了一堵砖墙,因为我们所有的开发人员都无法在本地环境中工作。我们使用Coldfusion进行Web开发并使用共享开发服务器。可以在浏览器中快速刷新对文件所做的更改。

我们公司拥有100多个站点,我们的开发服务器在生产中镜像所有这些站点。我们经常需要对这100个中的1个进行快速调整,测试并快速上传到生产中。如果我们必须在本地下载一个给定的站点,在我们的本地Web服务器中进行设置,这些小的更改将成为更耗时的任务。此外,通常是撰稿人和技术较少的人都想进入html页面并更改副本。这在我们当前的共享服务器设置中很简单。

很久以前我们使用了一个名为NGSource的源代码控件,当你将项目检入存储库时,它将文件权限更改为只读。我们将文件检查到共享开发服务器,它将更改读写权限。我们都会检查存储库,以确保有人没有处理我们认为可以处理的文件。这很好用,可以向撰稿人解释。问题是NGsource客户端很慢,据我所知他们可能已经停业了。

那么有没有办法在签入时实现文件权限的更改并使用Subversion签出?如果没有,是否有更好的开源解决方案?在共享环境中开发并跳过本地开发是否如此糟糕?

5 个答案:

答案 0 :(得分:1)

您可以使用'svn lock'[1]确保其他任何人都无法编辑您当前正在处理的文件。

[1] http://svnbook.red-bean.com/en/1.2/svn.ref.svn.c.lock.html

答案 1 :(得分:0)

你能解释为什么你需要文件的“只读”模式吗? 如您所述,您可以在生产站点上维护工作副本。所以开发人员或撰稿人只需连接到网站,编辑它并直接从生产站点提交更改。

答案 2 :(得分:0)

我是一家开发公司的版本控制经理,负责制作和维护Web应用程序和网站,但不会像您的那样多。我理解在 n 开发者/版权局的本地方框中让100多个网站正常工作(如果有的话)的复杂性,并认为这是不在本地检查每个网站的正当理由。

关于我们的流程

在我们的流程中,首先在本地进行的任何更改都会转到临时环境,在此环境中,它会根据客户数据的合理表示进行审核,然后在认为良好时将其最终转移到生产环境中。我们不在Production中安装版本化代码库,因为:

  1. 文件系统开销: SVN保留的内容相当于签出目录中信息的两倍。这就是为什么你可以在不连接服务器的情况下进行差异和还原。
  2. 安全性:拥有额外的.svn目录只是另一个攻击媒介。这可以得到补偿,但收益是否超过成本?对我们来说,没有。
  3. 相反,我们使用像RepliWEb这样的工具将代码库从分段复制到生产。

    关于您可能的流程

    如果您有一个配置,运行和受源控制的所有100多个站点的暂存环境,它会起作用吗?这是所有开发人员和版权所有者用来进行修改的环境,然后他们会提交。当修改被认为是好的时,像RepliWeb这样的工具可以将Staging中的版本(没有.svn目录)转移到Production。如果您的公司的文件系统开销和安全风险可以忽略不计,那么RepliWeb将被替换为简单地在生产中清理检查网站(确保删除任何以前的工件)。

    我希望这会有所帮助。

    谢谢你,
    扎卡里

答案 3 :(得分:0)

我可以想象你的痛苦,但你没有告诉我们你现在的手术有什么问题;)。毕竟,“如果没有破坏,它就不会修复”。并且只因为每个人都使用SVN / GIT等,所以没有为你服务的人。

我们在这里有类似的要求,但幸运的是仍然设法让一些人在提交之前使用本地检查和本地网络服务器。这是推荐的方式。 对于通过samba或nfs挂载的其他人,有一个共享的开发环境。但仍然每个人都有自己的OWN工作区。 在前端工作并检查不加批判的更改的人使用Web界面在数据中心或目标(客户端)系统上的主分段系统上调用svn更新。当事情破裂时,它的自由裁量权和错误。当然,使用svn钩子也可以完全自动化步骤。

到目前为止,我们的结果是可以接受的。

如果您认为个人工作空间的开销对您的业务案例而言过高,那么我所知道的源代码控制可以帮助您。您仍然可以锁定svn中的文件,这样人们就无法检查更改,直到它被解锁,但这是非常1990年......

毕竟源控制的目标是什么?我可以想到一些:

  • 与很多人一起开发Paralell
  • 隔离稳定且不稳定的代码
  • 透明度和回滚能力

当你没有个人工作空间和“用户”签到的概念而不是匿名“团队”破坏文件时,大多数源代码管理功能自然不适合你。

也许你可以在coldfusion服务器上安装子文件夹?通过从源代码管理服务器自动更新所有这些来减少个人工作空间管理开销(通常不是我建议的那样)?

如果可能的话,你需要首先摆脱“我们在服务器上编辑”的习惯,然后考虑源代码控制。反过来会很复杂;)

C

答案 4 :(得分:0)

在我们公司,我们的情况非常相似 - 项目多于开发人员。所以所有项目都在开发服务器上,开发人员可以轻松地对它们进行操作。通常在给定时间只有一个开发人员在一个项目上工作。但是开发人员来了,离开,休假,等等,所以我们需要快速切换项目。 但理想情况下是版本控制,以摆脱对改变某些东西的恐惧,以及版本控制所带来的所有好东西。

集中版本控制如svn,csv,p4等不适合此类解决方案。只能使用分布式版本控制。

我们正准备测试一些像Mercurial或GIT这样的分布式版本控件,它似乎是唯一适合在所述环境中工作的版本控制器,即使它们可能不是针对这种情况开发的。

但由于开发人员没有个人空间,我们将无法使用版本控制的所有方面。开发人员需要将他们的名字列入签到备注。但至少比什么都没有。

我做了一些研究,这里有一些我发现的有趣链接:

How to use version control on a remote development server?

Version control has me stumped

https://www.mercurial-scm.org/wiki/TortoiseHg

http://git-scm.com/