【问题标题】:Manipulate SVN history操纵 SVN 历史
【发布时间】:2018-06-07 23:12:23
【问题描述】:

是否可以通过在最后一个提交之前添加一个提交来强制 SVN 提交历史?例如,我会在某个历史点“创建”软件版本,其中仅包含稍后提交中存在的部分功能。有没有办法做到这一点?

谢谢

【问题讨论】:

  • 对不起?您想在例如之间创建修订吗? r2000r2001?像r2000½ 这样的东西?您不需要从早期版本创建一个好的旧分支吗?
  • @ÁlvaroGonzález 即使这是最好的选择,在这种情况下我也不能使用分支。但我可以接受更改额外提交之后的每个版本号。
  • 如果我们知道为什么分支在这里不合适可能会有所帮助。您是否正在尝试完成一些非严格技术性的事情,例如制作您的 repo 的简化副本以供第三方处理?
  • @ÁlvaroGonzález 是的,是这样的……我们正在尝试将我们的存储库复制到一个新的存储库中,确定一些发布点的功能,在第一个存储库中,所有这些功能都包含在单次提交。在实践中,我们试图将单个提交“拆分”为多个,而不是在新存储库中再次单独执行每个提交
  • @bahrep 我并不是说它又快又容易,我希望有一种方法可以让它变得又快又容易.. 我问任何比我更了解的人关于这个话题,希望他/她有一个解决方案;)为了了解最终结果,我们谈论的是总共 o 7k 次提交,并且在它们之间添加了额外的 10 次提交。分支将迫使我手动重做所有后续提交。目标是以只有一个干净分支的存储库结束。如果这是不可能的,我们将继续寻找另一个解决方案......但是这里的一个问题可以轻松解决我们的任务;)

标签: svn version-control commit


【解决方案1】:

您考虑的过程不应该用于 SVN 的正常日常工作流程,因为 Subversion 中的存储库历史记录是不可变的。您应该提交新的修订,而不是更改现有的修订。我不完全理解你的情况,但在我看来你想从一个新的release branch开始。

在这种情况下我不能使用分支。但我可以接受更改额外提交之后的每个版本号

创建一个分支并将这些更改记录为一系列提交而不是单个提交应该非常简单。这应该是最简单正确的方法了。

PS 如果您对服务器上的存储库具有完全访问权限,则可以使用管理工具对旧版本进行手术。但是,这项任务并非微不足道,如果您不考虑所有注意事项,可能会有害。例如,在现有版本之间添加修订后,您将如何处理 svn:mergeinfo

【讨论】:

    【解决方案2】:

    如果您可以直接访问存储库 (svnadmin dump/svnadmin load),可能有一种方法可以做到这一点,但这样做可能会破坏从您的存储库签出的每个工作副本,修订号与修订日期不会正确跟踪,并且它会质疑存储库历史的完整性 - 如果你操纵了这个,你还能操纵什么?

    找到另一种方法来执行此操作,例如从您需要的修订分支或在您需要修改的点之后恢复所有更改,然后重新应用它们。

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 2010-12-03
      相关资源
      最近更新 更多