Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法获取SVN上特定版本下的文件_Svn_Svnkit - Fatal编程技术网

无法获取SVN上特定版本下的文件

无法获取SVN上特定版本下的文件,svn,svnkit,Svn,Svnkit,我的项目使用SVNKit以编程方式从一个repo A签出文件,并签入另一个repo B repoa中的所有文件都是由Eclipse提前签入的 用户在repo A上指定特定版本下的特定文件,程序将其从repo A复制到repo B 大多数情况下工作正常,但在以下情况下失败: 例: 在开始时,我将文件ex:InfoStruc.java签入repo A,它会返回修订号ex:61 用户选择版本2上的InfoStruc.java进行传输。事实上,从1到60的任何修改都会失败 返回以下错误消息 org.tm

我的项目使用SVNKit以编程方式从一个repo A签出文件,并签入另一个repo B

repoa中的所有文件都是由Eclipse提前签入的

用户在repo A上指定特定版本下的特定文件,程序将其从repo A复制到repo B

大多数情况下工作正常,但在以下情况下失败:

例:

在开始时,我将文件ex:InfoStruc.java签入repo A,它会返回修订号ex:61

用户选择版本2上的InfoStruc.java进行传输。事实上,从1到60的任何修改都会失败

返回以下错误消息

org.tmatesoft.svn.core.svn异常:svn:E160013:'/svntest/arthur/!未找到svn/bc/2/DPS/src/main/java/idv/arthur/work/InfoStruc.java的路径:404未找到http://10.134.231.56

在多次承诺回购协议后,InfoStruc.java的修订版增加到946。 它在1~60之间的修改仍然会出错,但在61~946之间效果良好

我的subversion服务器的版本是1.6.11。
SVNKit是1.7.8。

这是按设计工作的。如果repo中的文件是在第61版创建的,您可以参考repo@60你可以参考回购协议/file@61但你不能参考回购协议/file@60因为,正如错误消息所指出的,这指的是那个版本中不存在的东西。它在概念上与试图引用一个不存在的文件并没有什么不同。

我不明白。第一个文件是在第61版创建的,您很惊讶从第2版检索此文件失败?是的,我总共提交了两次此文件,第一个版本是61,第二个版本是946,但我可以选择61~946之间的所有版本。所以我想我应该也能选择1~60。为什么SVN不能像62~945那样完成1~60的缺勤呢?API是否有办法区分哪个版本是开始版本?当我在SVNDirEntry中调用getRevision方法时,它总是返回最大版本,可能会导致用户选择不存在的版本。如果文件是在版本61创建的,那么它肯定仍然存在于版本62中,因此您可以参考它。也许您的修订所代表的模型与SVN的不同?修订意味着这就是项目在特定时间点的样子。您可以参考项目中的任何人工制品;如果它自第61版以来没有改变,那么你得到的是第61版中的样子,因为它在你所指的版本中仍然是正确的。第61版之前的事实是文件不存在。谢谢你的解释。我想我明白了。