【问题标题】:SVN Branch switchSVN 分支开关
【发布时间】:2014-09-22 02:51:36
【问题描述】:

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

  1. 为每个开发者创建不同的分支,
  2. 每个开发人员从阶段服务器签出到本地计算机并将更改提交到各自的分支,
  3. 我们希望每次开发人员想要在阶段服务器中测试他们的代码时切换分支,
  4. 一切正常后,我们希望将分支与主干合并,
  5. 开发者可以用最新的分支更新他们的本地副本(各自的分支)。

当每个开发人员切换他们的分支时,我们如何将分支链接到文档根目录(第 3 点)?有没有类似 post-hook 的东西?如果有,我们该怎么做?我知道我们可以在主干中添加 post hook,以便它会自动更新文档根目录。但我们不确定如何通过分支和切换来完成。

【问题讨论】:

  • 是文档根 some 工作副本还是未版本化的树?
  • 文档根目录是 /var/www/html,repo 路径是 example.com/repo/trunk
  • 但是docroot可以是某个repo路径的WC,也可以不是。很重要
  • 我在这里评论不是为了聪明,但所描述的几乎是“git”。 Master和分支可以在很少中断的情况下交换。选中一个分支后,它可以合并到 master 中,然后它会自动过滤到每个人的 master ,他们可以合并到他们各自的分支中。是否有机会使用 git 代替 SVN?

标签: svn version-control


【解决方案1】:

让我们解释一下你想在没有这些步骤的情况下做什么:

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

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

您可能需要一些有助于您的流程的工具。这里有两个你应该看看。它们都是免费和开源的:

Jenkins

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

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

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

Jenkins 拥有大量 plugins,可用于增强您的构建过程。

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

Vagrant

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

您使用VirtualBox 之类的东西设置了一个看起来像您的暂存环境的虚拟环境。完成此操作后,开发人员可以下载 Vagrant 文件,并自动安装并启动暂存环境。这可以让开发人员在将代码提交到您的 Subversion 存储库之前对其进行测试。

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

Post Commit Hooks 怎么样?

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

使用像 Jenkins 这样的东西来完成你的提交后工作(通过构建过程)意味着 Subversion 没有被捆绑。另外,Jenkins 可以使发生的事情更加明显。每个 build 都有一个控制台,可以显示正在发生的事情。如果提交后流程(一种在 Jenkins 中考虑构建的方式)失败,您可以检查日志。

【讨论】:

    【解决方案2】:

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

    您可以在 http://svnbook.red-bean.com/en/1.7/svn.ref.svnlook.html 的 Subversion 手册中找到有关 svnlook 的更多详细信息

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 2012-01-29
      • 2014-06-18
      • 1970-01-01
      • 2021-01-14
      • 2011-04-18
      • 2010-12-19
      • 1970-01-01
      • 2021-11-04
      相关资源
      最近更新 更多