SVN分支交换机

时间:2014-07-30 12:46:30

标签: svn version-control

我们有一个项目和三个开发人员在舞台服务器上工作。我们想做svn如下:

  1. 为每个开发者创建不同的分支,
  2. 从舞台服务器到本地计算机的每个开发人员结帐并在那里提交更改到相应的分支
  3. 我们希望每次开发人员都喜欢在舞台服务器上测试他们的代码时切换分支,
  4. 一旦一切正常,我们想将分支与trunk合并,
  5. 开发人员可以使用最新分支更新其本地副本(各分支机构)。
  6. 当每个开发人员切换分支时,我们如何将分支链接到文档根目录(第3点)?有没有什么像后钩?如果是这样,我们怎么能这样做?我知道我们可以使用trunk添加post hook,以便它会自动更新文档根目录。但是我们不确定分支和切换是如何做到的。

2 个答案:

答案 0 :(得分:1)

让我们解释一下如果没有这些步骤你想做什么:

  • 开发人员正致力于处理服务器的代码。
  • 开发人员完成他们的工作,并可以将其部署进行测试。
  • 如果部署良好,开发人员可以提交其他人使用的代码。

注意我没有提到分支机构。您可以为每个开发人员使用分支,但没有真正的原因。只有三位开发人员,我不会为分支开发而烦恼。但是,有些人喜欢这种模式 - 特别是如果它们用于Git和Gitflow。

您可能需要的是一些可以帮助您处理的工具。这是你应该看的两个。它们都是免费和开源的:

Jenkins

Jenkins是一个持续集成工具。大多数人认为Jenkins是一个可以编译代码的地方,但是你的开发环境很可能不需要编译

但是,Jenkins可以做的不仅仅是编译代码。每次提交代码时,Jenkins都可以设置为自动 build 。或者,可以在特定时间将其设置为 build ,或者在开发人员请求完成构建时。或者,这些的任何组合。

即使您没有编译,您也可能希望执行Jenkins可以作为构建过程的一部分执行的自动化测试 - 即使您实际上没有编译代码。 Jenkins还可以存储构建工件(例如您要部署的压缩文件),并且可以通过按下按钮来部署这些工件。

詹金斯有一大堆plugins可以用来增强你的构建过程。

我不喜欢使用版本控制系统将文件部署到HTTP服务器。我发现使用Jenkins是一种控制部署的好方法。

Vagrant

我见过的大多数网站都有糟糕的开发部署环境。大多数时候,它们甚至都不存在。 Vagrant是一种轻松设置可以使用虚拟机模拟生产和测试环境的环境的方法。每个开发人员都可以拥有自己的登台服务器,而不是拥有一台登台服务器。

您使用VirtualBox之类的东西设置了一个类似于您的暂存环境的虚拟环境。完成此操作后,开发人员可以下载Vagrant文​​件,并自动安装并启动暂存环境。这可以允许开发人员在将代码提交到Subversion存储库之前测试他们的代码

使用Vagrant在提交更改之前对其进行预测试可以简化您的流程。听起来你想要三个分支(每个开发人员一个)允许每个开发人员在登台服务器上测试他们的代码。使用Vagrant,开发人员可以在虚拟环境中进行暂存测试,而无需提交更改 - 无需分支。

Post Commit Hooks怎么办?

提交后挂钩的问题在于它们会占用您的存储库,直到提交后挂钩完成。想象一下,您的提交后挂钩更改部署到服务器上。该部署可能只需要十秒左右的时间,但这意味着每次有人将代码提交到Subversion时,每次提交都会等待十几秒钟。开发人员会对 Subversion缓慢感到不满,并且会做更少的提交。

使用像Jenkins这样的 post commit 工作(通过构建过程)意味着Subversion没有被束缚。此外,詹金斯可以使发生的事情更加明显。每个 build 都有一个控制台,可以显示正在进行的操作。如果提交后进程(一种考虑Jenkins构建的方法)失败,您可以检查日志。

答案 1 :(得分:0)

无论您是提交trunk还是分支,post-commit钩子脚本都会在您提交时运行。在脚本中,您可以检查svnlook changed的输出以确定您所在的分支,并将DocumentRoot链接到相应的分支。

您可以在http://svnbook.red-bean.com/en/1.7/svn.ref.svnlook.html

的Subversion手册中找到有关svnlook的更多详细信息