【问题标题】:How can I find a copy of a deleted branch given a Revision如何在给定修订版的情况下找到已删除分支的副本
【发布时间】:2019-03-26 06:25:55
【问题描述】:

我有一个分支: http://myrepo/Branch1

此分支有 10 个修订版:1-10。

然后将分支复制到以下位置: http://myrepo/Branch2

Branch1 然后被删除。

从 Branch2 的“显示日志”对话框中,可以轻松查看所有 Branch1 修订(通过确保未选中“复制/重命名停止”)。

但是,如果给我一个修订版,例如 5,找到已删除分支的副本的最佳方法是什么? (在本例中为 Branch2)。

【问题讨论】:

  • 您可以尝试检查提供完整路径和修订的分支吗?

标签: svn tortoisesvn


【解决方案1】:

看来您实质上是在询问 Subversion 开发人员所说的“前向历史搜索”:给定特定路径和修订版,在较年轻的修订版中找到该路径的副本。此功能的一个实际用途是,“嘿,我知道 ^/trunk/lib/foo.c 的 1412 版本中存在一个重大错误——我们软件的各种发布分支和标签中的哪个需要接受修复错误?”

从核心技术的角度来看,这是具有挑战性的,因为 Subversion 只在内部反向跟踪历史——对于每个“节点”,它都知道它的祖先。但是继任者没有被跟踪。

您提到“取消勾选”“停止复制/重命名”选项让我相信您使用的是图形化 Subversion UI,例如 TortoiseSVN。我对那个 UI 不是很熟悉,但是我有这个(古老的)内存,它维护着存储库历史的本地缓存。与 Subversion 的核心 API 和命令行客户端相比,这样的缓存可以更好地回答“正向历史搜索”的问题是可行的,但当然,TortoiseSVN 开发人员必须做出有意识的决定来公开该功能。

缺少这样的东西,您需要找到或构建工具,例如,在存储库的根目录上获取 svn log -vq 的输出,跟踪所有副本随着时间的推移 - 构建一种历史树每条路径——然后允许您定位树上的给定点,并在修订时间通过它的各种分支和死胡同向前走,同时报告它发现的内容。

很遗憾,我不知道这样的工具。

【讨论】:

    【解决方案2】:

    你应该可以使用

    svn co http://myrepo/Branch1@5
    

    另请参阅 How to "undelete" a deleted folder in Subversion / TortoiseSVN?Need to restore a deleted branch in Subversion

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-21
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 2017-03-30
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多