5

在使用doExport()svnkit的方法时,我不明白一个参数的含义。

即使在查看Javadocs之后我仍然不明白

参数pegRevision是什么意思?

文档说

pegRevision - 将首先在存储库中看到 url 的版本,以确保它是需要的版本

但这并不能真正帮助我理解它。

4

2 回答 2

5

看看这个很棒的解释。从您提到的javadoc中获取:

...首先在存储库中看到 url 的版本,以确保它是需要的版本...

我相信这通常是@BASE 或@HEAD。这是提供给 Subversion 的修订版,其唯一目的是确定一条独特的历史线。因为在任何给定时间最多有一个版本化资源可能占用一条路径——或者更准确地说,在任何一个修订版中——路径和挂钩修订版的组合是引用特定历史行所需要的全部内容。

尝试使用HEAD

org.tmatesoft.svn.core.wc.Revision.HEAD

于 2011-07-14T15:43:43.413 回答
2

示例

假设很久以前我们创建了我们的存储库,并且在修订版 1 中我们添加了我们的第一个概念目录,并在该目录中添加了一个讨论该概念的 IDEA 文件。在添加和调整了真实代码的几次修订之后,我们在修订 20 中将此目录重命名为 frabnaggilywort。到第 27 版,我们有了一个新概念,一个新的概念目录来保存它,以及一个新的 IDEA 文件来描述它。然后五年和数千次修改飞逝,就像他们在任何好的浪漫故事中一样。

现在,多年后,我们想知道 IDEA 文件在修订版 1 中的样子。但是 Subversion 需要知道我们是否在询问当前文件在修订版 1 中的回顾,或者我们是否在询问任何文件的内容。在修订版 1 中的概念/IDEA 中。当然,这些问题有不同的答案,并且由于 peg 修订版,您可以提出这些问题。要了解当前 IDEA 文件在旧版本中的外观,请运行:

$ svn cat -r 1 concept/IDEA 
svn: Unable to find repository location for 'concept/IDEA' in revision 1

当然,在这个例子中,当前的 IDEA 文件在版本 1 中还不存在,所以 Subversion 会报错。

称为 peg revision的机制可以解决这个问题;

$ svn cat -r 1 concept/IDEA@BASE
or
$ svn cat -r 1 concept/IDEA@1

-------------------------- 更复杂的情况---------------------- --------------

假设 frabnaggilywort 已从 HEAD 中删除,但我们知道它存在于修订版 20 中(通过查看 svn 日志),我们希望查看其 IDEA 文件在修订版 4 和 10 之间的差异。我们可以将 peg 修订版 20 与在修订版 20 中保存 Frabnaggilywort 的 IDEA 文件的 URL,然后使用 4 和 10 作为我们的有效修订范围。

$ svn diff -r 4:10 http://svn.red-bean.com/projects/frabnaggilywort/IDEA@20
Index: frabnaggilywort/IDEA
===================================================================
--- frabnaggilywort/IDEA    (revision 4)
+++ frabnaggilywort/IDEA    (revision 10)
@@ -1,5 +1,5 @@
-The idea behind this project is to come up with a piece of software
+The idea behind this project is to come up with a piece of

更多在这里http://svnbook.red-bean.com/en/1.6/svn.advanced.pegrevs.html

于 2013-04-20T17:17:15.023 回答