我有一个分支:http://myrepo/Branch1
该分支有10个修订版:1-10。
然后将分支复制到以下位置:http://myrepo/Branch2
然后删除Branch1。
从Branch2的“显示日志”对话框中,可以很容易地看到所有Branch1修订版(通过确保“未复制/重命名停止”未被取消)。
但是,如果给我一个像5这样的修订版,找到已删除分支的副本的最佳方法是什么? (在这种情况下Branch2)。
看来你基本上都在询问Subversion开发人员将其称为“前向历史搜索”:给定一个特定的路径和修订版,在较年轻的版本中找到由该路径构成的副本。这个功能的一个实际用途是,“嘿,我知道^ / trunk / lib / foo.c的版本1412中有一个主要的错误 - 我们的软件的各种版本分支和标签中的哪一个需要获得修复错误吗?”
从核心技术的角度来看,这很有挑战性,因为Subversion只在内部跟踪反向的历史 - 对于每个“节点”,它都知道它的祖先。但是没有跟踪继任者。
你提到“解开”“复制/重命名停止”选项让我相信你正在使用图形化的Subversion UI,例如TortoiseSVN。我对这个用户界面并不熟悉,但我有这个(古老的)内存,它维护着存储库历史的本地缓存。这样的缓存可以比Subversion的核心API和命令行客户端更好地回答“前向历史搜索”的问题,但是当然,TortoiseSVN开发人员必须做出有意识的决定来公开该功能。
没有这样的事情,你需要找到或构建工具,比如在存储库的根目录上输入svn log -vq
,通过为每条路径构建一种历史树来追踪所有副本 - 然后允许您在树上找到给定点,并在修改时间通过其各种叉子和死角向前走,同时报告它找到的内容。
不幸的是,我知道没有这样的工具。
你应该可以使用
svn co http://myrepo/Branch1@5
另见How to "undelete" a deleted folder in Subversion / TortoiseSVN?或Need to restore a deleted branch in Subversion。