有没有人尝试使用Laura Wingerd在Practical Perforce中描述的豆腐秤以及svn?
豆腐秤告诉我们如何在分支(代码行)之间传播变化。稳定分支的变化应该合并到不太稳定的分支(从公司到软),并且较不稳定的分支的变化应该被复制到稳定的分支(软到公司)。见How Software Evolves
这导致了开发分支,其中对更稳定分支的更改被合并,从而改进了开发分支中的代码,带来了新的开发和错误修正。
所以问题是:你能在svn中做到这一点吗?在分支机构上工作时,如何从父级更新?我从CVS了解到,当您想要将更改合并回父分支(通常是主线)时,从一个分支更新到另一个分支会给您带来很多问题
答案 0 :(得分:3)
trunk/
, branches/
, tags/
structure trunk/
作为主线 branches/
中为开发和发布创建分支 - 您可以使用命名约定来区分它们,甚至可以将branches/
替换为development/
和release/
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中做到这一点,它或多或少是标准做法。
这个想法是从更稳定,更少变化到不稳定的融合,以最大限度地减少不相关的变化,这将使合并变得更加困难。
合并回主线是首先将所有更改从主线合并到分支中,然后复制分支,即用合并分支替换主线。