【问题标题】:switching svn working copy to commit to two different servers切换 svn 工作副本以提交到两个不同的服务器
【发布时间】:2013-07-26 10:31:06
【问题描述】:

美好的一天 Stackoverflow

我的本​​地计算机上有我的管理系统的 SVN 工作副本。

工作副本已从我们的生产服务器中检出。因此,我或我的队友所做的任何提交都会转到生产服务器存储库。

我想做的是在我们的开发服务器上使用生产服务器代码创建一个存储库。这样我和我的队友就可以将所有内容提交到开发箱中。当我们都对代码感到满意时,我想切换本地存储库以提交到生产服务器

这样的事情有可能吗。如果是这样……怎么办?

【问题讨论】:

  • 为什么你不能使用相同的 repo 并将它们导出到不同的文件夹(我的意思是生产、测试​​或开发)?
  • 我不太清楚你的意思?
  • 您有两个不同的开发和生产存储库有什么特别的原因吗?为什么不拥有一个 repo,并使用 branching strategy 以便系统的生产版本位于特殊分支中?就个人而言,我更喜欢功能分支,其中“trunk 为王”,是发布到生产环境的分支
  • 你看我的公司不希望我们使用分支机构。所以另一种策略是创建一个devbox repo,当devbox代码稳定时,我想将其部署到live。 devbox 在开发方面处于中间位置

标签: svn ubuntu


【解决方案1】:

为什么生产有版本控制系统,而开发者没有?

版本控制适用于开发人员。您应该能够检查、更新、更改代码、添加功能、犯错误、做愚蠢的事情等。这就是版本控制的用途!

生产,如果他们从 Subversion 存储库中获取代码,应该从 标签 中检出代码。标签是您希望世界看到的内容。您希望通过仔细和严格的测试,您的错误、错误和其他错误已被清除。

将您的 Subversion 存储库从生产环境中移出,并放入您的开发环境中。也就是说,除非您指的是正在备份和维护的生产环境——不是生产环境中的人(如客户)实际使用 Subversion。在这种情况下,让存储库留在生产环境中,但开发人员不应该害怕使用它。

某些网站严格使用 trunk 来发布代码。这不是一个好主意。发布代码应该放在 tags 目录中。主干和分支是供程序员进行编程的。

【讨论】:

  • 我理解你的回答。你看我们正在使用springloops.io 来托管我们的生产 svn,我们的提交将用于。我不确定我们是否可以在可以提交 springloops 的开发盒上进行 repo?
  • 我们设法开始使用分支。谢谢大家的建议
【解决方案2】:

虽然在单个服务器上使用分支更易于管理,但您可以拥有两个存储库并根据要求在它们之间切换

  1. 创建生产的完整转储 (svnadmin dump PROD-PATH > DUMPFILE)
  2. 创建 DEVEL 存储库 (svnadmin create DEVEL-PATH)
  3. 将 PROD 的负载转储到 DEVEL (svnadmin load DEVEL-PATH --force-uuid < DUMPFILE)。 --force-uuid 是强制性的为了在两个仓库中拥有相同的 UUID(从而允许在仓库之间重新定位单个 WC),“svnadmin create”将唯一的 UUID 分配给 DEVEL
  4. 将 WC 迁移到 DEVEL
  5. 代码提交测试...

为了将代码返回给 PROD

  1. 获得干净的 WC,更新到 DEVEL HEAD
  2. 将 WC 迁移到 PROD
  3. 将 WC 更新到 PROD HEAD,合并更改
  4. 在 WC 中提交从 DEVEL 累积的所有更改,作为对 PROD 的一次“大爆炸”提交
  5. 转到第一部分,第 4 步

【讨论】:

  • 这是一个很棒的方法,但是在将代码发送到生产服务器时似乎有很多开销......
  • @Ryan - 是的,在这种情况下,分支是自然之道(tm)
猜你喜欢
  • 2011-02-23
  • 2011-03-12
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多