使用豆腐秤与svn

时间:2009-08-21 13:12:00

标签: svn version-control

有没有人尝试使用Laura Wingerd在Practical Perforce中描述的豆腐秤以及svn?

豆腐秤告诉我们如何在分支(代码行)之间传播变化。稳定分支的变化应该合并到不太稳定的分支(从公司到软),并且较不稳定的分支的变化应该被复制到稳定的分支(软到公司)。见How Software Evolves

这导致了开发分支,其中对更稳定分支的更改被合并,从而改进了开发分支中的代码,带来了新的开发和错误修正。

Figure taken from Practical Perforce (ISBN 10: 0-596-10185-6) http://dl.getdropbox.com/u/136976/tofu%20scale.png

所以问题是:你能在svn中做到这一点吗?在分支机构上工作时,如何从父级更新?我从CVS了解到,当您想要将更改合并回父分支(通常是主线)时,从一个分支更新到另一个分支会给您带来很多问题

3 个答案:

答案 0 :(得分:3)

  1. 使用standard trunk/, branches/, tags/ structure
  2. 使用trunk/作为主线
  3. branches/中为开发和发布创建分支 - 您可以使用命名约定来区分它们,甚至可以将branches/替换为development/release/
  4. 使用svn merge执行合并和复制 - 首先阅读Advanced Merging

答案 1 :(得分:3)

在这个主题上阅读更多内容后,我发现我认为是对svn中分支之间进行这种变化传播所需要的精确描述。

C. Michael Pilato等人在书中Version Control With Subversion对此进行了描述。在子章Basic Merging - Keeping a Branch in Sync

本书引用了以下内容。

  

Subversion知道你的分支的历史,并知道它何时与主干分开。要将最新的,最大的主干更改复制到您的分支,首先要确保您的分支的工作副本是“干净的” - 它没有svn状态报告的本地修改。然后只需运行:

$ svn merge http://svn.example.com/repos/calc/trunk
  

一旦你拥有干净的干净工作副本,你就可以将你的分支合并回来了:

$ pwd
/home/user/calc-trunk

$ svn update  # (make sure the working copy is up to date)
$ svn merge --reintegrate http://svn.example.com/repos/calc/branches/my-calc-branch
$ svn commit -m "Merge my-calc-branch back into trunk!"

在开始之前,请阅读整章(甚至可能是本书)。建议阅读。

答案 2 :(得分:2)

是的,你可以在Subversion中做到这一点,它或多或少是标准做法。

这个想法是从更稳定,更少变化到不稳定的融合,以最大限度地减少不相关的变化,这将使合并变得更加困难。

合并回主线是首先将所有更改从主线合并到分支中,然后复制分支,即用合并分支替换主线。