SVN分支切换

3
我们有一个项目,有三个开发人员在阶段服务器上工作。我们希望按照以下方式使用svn:
  1. 为每个开发人员创建不同的分支,
  2. 每个开发人员从阶段服务器检出到本地计算机,并将更改提交到各自的分支中,
  3. 我们想要在每次开发人员想要在阶段服务器中测试其代码时切换分支,
  4. 一旦一切正常,我们想将分支与主干合并,
  5. 开发人员可以使用最新的分支更新其本地副本(各自的分支)。
当每个开发人员切换分支(第3点)时,我们如何将分支链接到文档根目录?是否有类似于后钩子的东西?如果有,我们该如何做到这一点?我知道我们可以在主干中添加后钩子,以便它会自动更新文档根目录。但是我们不确定如何在分支和切换中实现这一点。

文档根目录是某些工作副本还是未版本化的树? - Lazy Badger
文档根目录为 /var/www/html,仓库路径为 http://example.com/repo/trunk。 - Abhilash
但是 docroot 可以是仓库某个路径的工作副本,也可能不是。这很重要。 - Lazy Badger
我在这里评论并不是为了聪明,但你所描述的基本上就是“git”。主分支和分支可以互换而几乎没有任何干扰。当一个分支被检查后,它可以合并到主分支中,然后自动过滤到每个人的主分支中,他们可以根据需要将其合并到各自的分支中。有没有可能你可以使用git而不是SVN? - latenitecoder
2个回答

1

让我们不分步骤解释您想要做的事情:

  • 开发人员正在编写发送到服务器的代码。
  • 开发人员完成工作后,可以部署进行测试。
  • 如果部署成功,开发人员可以提交他们的代码供其他人使用。

请注意,我没有提到分支。每个开发人员都可以使用一个分支,但没有真正的理由这样做。对于只有三名开发人员的情况,我不会为开发而分支。然而,有些人喜欢这种模式--尤其是如果他们习惯于Git和Gitflow。

您可能需要的是一些可以帮助您流程的工具。以下是两个您应该查看的免费且开源的工具:

Jenkins

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

然而,Jenkins不仅可以编译代码。 Jenkins可以设置为在每次提交代码时自动构建。或者,它可以设置为在特定时间或开发人员请求进行构建时构建。或者,任何这些的组合。
即使您不编译,您可能希望执行自动化测试,Jenkins可以作为构建过程的一部分执行这些测试--即使您实际上不编译代码。 Jenkins还可以存储构建工件(例如您要部署的压缩文件),并可以通过按一个按钮来部署这些工件。
Jenkins有整套插件可用于增强您的构建过程。
我不喜欢使用版本控制系统将文件部署到HTTP服务器。我发现使用Jenkins是控制部署的好方法。

Vagrant

我看过的大多数网站都没有良好的开发部署环境,有时甚至根本不存在。Vagrant是一种可以使用虚拟机模拟生产和测试环境的方法来轻松设置环境。每个开发者都可以拥有自己的一个暂存服务器,而不是只有一个暂存服务器。
您可以使用类似VirtualBox的工具设置一个虚拟环境,使其看起来像您的暂存环境。一旦完成此操作,开发者可以下载Vagrant文件,并自动安装和启动暂存环境。这可以让开发人员在将代码提交到您的Subversion存储库之前测试其代码。
使用Vagrant在提交之前预先测试更改可能会简化您的流程。您可能需要三个分支(每个开发者一个)来允许每个开发者在您的暂存服务器上测试其代码。使用Vagrant,开发者可以在虚拟环境中进行暂存测试,而无需提交其更改,从而消除了分支的需求。
关于提交后挂钩呢? post-commit钩子的问题在于它们会阻塞您的存储库,直到该post-commit钩子完成为止。想象一下,您的post-commit钩子将更改部署到服务器上。这个部署可能只需要十秒左右的时间,但这意味着每次有人将他们的代码提交到Subversion时,他们都要等待十秒左右。开发人员会对Subversion变慢感到不满,并且会减少提交次数。
使用像Jenkins这样的工具来完成您的post-commit工作(通过构建过程)意味着Subversion没有被绑定。此外,Jenkins可以使发生的事情更加可见。每个构建都有一个控制台,显示正在进行的操作。如果post-commit过程(Jenkins中的构建方式)失败,则可以检查日志。

0
无论您提交到主干还是分支,post-commit钩子脚本都会在每次提交时运行。在脚本中,您可以检查svnlook changed的输出以确定您所在的分支,并将DocumentRoot链接到相应的分支。
您可以在Subversion手册的http://svnbook.red-bean.com/en/1.7/svn.ref.svnlook.html中找到有关svnlook的更多详细信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接