给定修订版,如何查找已删除分支的副本

时间:2019-03-26 06:25:55

标签: svn tortoisesvn

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

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

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

然后删除分支1。

从Branch2的“显示日志”对话框中,很容易看到所有Branch1修订版(通过确保未选中“停止复制/重命名”)。

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

2 个答案:

答案 0 :(得分:2)

您似乎在本质上在询问Subversion开发人员将什么称为“转发历史搜索”:给定特定的路径和修订版本,请在较新的修订版本中查找该路径的副本。此功能的一个实际用途是,“嘿,我知道^ / trunk / lib / foo.c的1412版中有一个主要错误-我们软件的各个发行分支和标签中的哪个需要获得针对此的修复程序错误?”

从核心技术的角度来看,这具有挑战性,因为Subversion仅在内部沿相反方向跟踪历史记录-对于每个“节点”,它都知道其祖先。但是没有追踪到继任者

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

简而言之,您需要找到或构建工具,例如,将svn log -vq的输出存储在存储库的根目录中,并跟踪时间上的所有副本-建立某种历史记录每条路径的树形图–然后允许您在树形图上找到给定点,并在修订时向前走遍树形图的各个分支和死角,同时报告发现的结果。

不幸的是,我知道没有这种工具。

答案 1 :(得分:0)

您应该可以使用

svn co http://myrepo/Branch1@5

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