我正在尝试在所有副本/移动/等中获取SVN中固定路径的日志历史记录(如果可能的话,递归地)。实际上,我试图避免使用peg revisions,并将日志应用于路径而不是对象。 svn手册提出了这个问题 - “你是否在询问曾经生活在那条道路上的所有物体发生的操作?” - 但它似乎没有提供此用例的选项。它假设这不是你想要的,但这正是我想要的。
有没有一种方法可以做到这一点,而不会发出重复的查询来跨越生活在SVN修订历史中固定路径的不同副本之间的差距?
答案 0 :(得分:2)
我不知道SVN中的任何方式。所有历史似乎都来自对象的角度,而不是存储库的角度。即使通过将多个请求拼接在一起这样做也是一个挑战,因为您必须弄清楚对象何时移动并且您应该发出新请求。
我能想到的最好的方法是从存储库根目录中获取完整的历史记录,并过滤查找影响您感兴趣的路径的更改。对于大型存储库而言,这可能会很昂贵。
答案 1 :(得分:1)
在咨询SVN开发人员之后,这个问题的答案是使用单个svn命令是不可能的。有一个非常古老的bug可以实现这种行为,但它没有得到牵引力:
http://subversion.tigris.org/issues/show_bug.cgi?id=928
希望在将来的版本中可以实现这一点。
答案 2 :(得分:0)
另一种方法可能是为您的存储库编写自定义挂钩。当提交某个路径时,您可以将其记录在日志中。
答案 3 :(得分:0)
将ViewVC与“提交数据库”功能一起使用。它会将有关每个提交的元数据提取到SQL数据库中。然后,您可以在SQL数据库中查询影响特定路径的所有提交。
初始元数据提取需要很长时间 - 对于10GB存储库大约需要12个小时 - 但只需要完成一次。然后,您可以设置一个提交后挂钩来更新每次提交的元数据,这很快。元数据数据库是中等大小的 - 对于10GB存储库大约200MB。
快速查询元数据。