【发布时间】:2011-05-13 15:50:24
【问题描述】:
我已更正当前有效的旧版本代码中的一个错误。有更新的版本尚未测试。我希望能够将此修复提交给旧版本,并让更新一直持续到头版本。这可能吗?
【问题讨论】:
我已更正当前有效的旧版本代码中的一个错误。有更新的版本尚未测试。我希望能够将此修复提交给旧版本,并让更新一直持续到头版本。这可能吗?
【问题讨论】:
我认为您要问的是“我可以让 SVN 更新我的所有代码,从修订版 X 到 Head,由我自动检查修订版 X 的修复” - 答案不是我知道的.
通常的用法是使用修复更新您的发布分支,然后将错误修复移动(合并/提交/等)到主干/开发中分支。这是为了确保 rev X 正确更新、测试等,然后您的主干/开发中分支也是如此。
【讨论】:
您可以将其提交到旧修订版,然后将该特定修订版合并到 HEAD。
【讨论】:
您无法更改历史记录。如果你在旧版本的 Subversion 中犯了错误,你不能修改已经提交的修订来修复这个错误。你只需要做一个新的提交。
现在,当我说你不能改变历史时,我的意思是没有简单的方法。你可以做一个svnadmin dump,把结果搞砸,然后有选择地做一个svnadmin load。
我不能 100% 确定该怎么做。我已经使用转储和加载技术删除了包含专有信息的修订版,这些信息不应该在我们的存储库中。但是,我从来没有为了纠正一个老错误而篡改历史。
而且,您可能真的不想这样做。想象一下,如果该错误在修订版 #23 中,并且您已修复它。有人对您的代码进行了修订 #26 试图找出问题所在,但在源代码中找不到问题。最后,最好说实话:我们制造了一个笨蛋,我们需要修复它。
我可以想象您的主干修订版#24 中存在错误,客户想要修订版#28,而您的主干现在是修订版#50。如果您修复了修订版 #24 中的错误,您可以将修订版 #28 提供给客户。在这种情况下,您应该为版本 #28 创建一个分支,并修复该分支中的错误。
您可以执行以下操作:修改提交语句以包含有关该错误的注释,从而警告其他人。
【讨论】:
您为什么要这样做?为什么不直接进行更改并提交?
像 Subversion 这样的产品的全部意义在于它跟踪所做的所有更改,并允许您准确地查看代码(或任何文本)在任何时间点的状态。如果您可以返回并更改较早的修订版,那么将无法再说明何时进行了哪些更改。
更改较早的版本您会获得什么?我试图弄清楚为什么你甚至想要这样做。说您将 1 月 1 日的修订 10 更改为 2 月 12 日的更改是什么意思?那么现在第 10 版不再是以前的第 10 版了吗?现在是 1 月 1 日提交还是 2 月 12 日提交?如果有人想知道当我们在 1 月 2 日拉出一个版本进行部署时代码是什么样的,SVN 会告诉他们什么?你想做的只会打破 SVN 的全部概念。
【讨论】: