我可以更新subversion中的旧版本并将更改传播到所有较新的版本吗?

时间:2011-05-13 15:50:24

标签: svn subclipse

我已更正了当前有效的旧版代码中的错误。还有一些尚未经过测试的新版本。我希望能够将此修复程序提交到旧版本,并使更新一直持续到头版本。这可能吗?

4 个答案:

答案 0 :(得分:2)

我认为你问的是“我可以让SVN更新我的所有代码,从修订版X到头部,我自动检查修订版X” - 答案不是我所知道的。

正常用法是使用修复程序更新Release分支,然后将错误修复程序移动(合并/提交/等)到trunk / in-development分支。这是为了确保rev X正确更新,测试等,然后确保您的主干/开发中分支也是如此。

答案 1 :(得分:1)

您可以将其提交到旧版本,然后将该特定修订合并到HEAD中。

,例如Subversion: How to merge only specific revisions into trunk when multiple consecutive changes are made in a branch?

答案 2 :(得分:1)

您无法更改历史记录。如果您在旧版本的Subversion中出错,则无法修改已提交的修订以修复此错误。你只需要做一个新的提交。

现在,当我说你不能改变历史时,我的意思是没有简单的方法。您可以执行svnadmin dump,查看结果,然后有选择地执行svnadmin load

我不是100%确定如何去做。我已经使用转储和加载技术来删除其中包含专有信息的修订版本,该修订版本不应该存在于我们的存储库中。但是,我永远不会破坏历史来纠正一个老错误。

而且,你可能真的不想。想象一下,如果错误是在修订版#23中,你修复它。你的代码修订版#26的某个人试图弄清楚什么是错的,但是在源代码中找不到问题。最后,最好是说实话:我们制作了一个booboo,我们需要修复它。

我可以想象你的主干版本#24中有错误的地方,客户需要修订#28,你的主干现在是修订版#50。如果您修复了修订版#24中的错误,则可以为客户修订#28。在这种情况下,您应该为版本#28创建一个分支,并修复该分支中的错误。

您可以执行以下操作:修改commit语句以包含有关错误的注释,以便其他人收到警告。

答案 3 :(得分:0)

你为什么要那样做?为什么不进行更改并提交?

像Subversion这样的产品的全部意义在于它跟踪所做的所有更改,并允许您在任何时间点确切地查看代码的状态(或任何文本)。如果您可以返回并更改早期版本,则无法再说明何时进行了哪些更改。

通过更改早期版本可以获得什么?我想弄清楚为什么你甚至想要这样做。如果您更改1月1日的修订版10并且在2月12日进行了更改,这意味着什么?那么现在修订版10不再是以前的修订版10了吗?它现在是1月1日提交还是2月12日提交?如果有人想知道我们在1月2日部署一个版本时代码是什么样的,SVN会告诉他们什么?你想做的只是打破SVN的全部概念。