为什么可以';t SVN查找revison 0的存储库位置

为什么可以';t SVN查找revison 0的存储库位置,svn,tortoisesvn,Svn,Tortoisesvn,我最近升级了我在工作站上安装的SVN和TortoiseSVN版本,每当我在没有任何更改的情况下检查文件上的差异时,就会出现以下错误 Unable to find repository location for "<path>" in revision 0 在版本0中找不到“”的存储库位置 我已经签出了我的一个项目的新副本(我在一些项目上试用过),它仍然给我相同的结果 我曾尝试在我的工作站上升级SVN,希望它能解决这个问题(我假设它是不可比的)——没有风险 我还尝试完全重新安装Or

我最近升级了我在工作站上安装的SVN和TortoiseSVN版本,每当我在没有任何更改的情况下检查文件上的差异时,就会出现以下错误

Unable to find repository location for "<path>" in revision 0
在版本0中找不到“”的存储库位置
我已经签出了我的一个项目的新副本(我在一些项目上试用过),它仍然给我相同的结果

我曾尝试在我的工作站上升级SVN,希望它能解决这个问题(我假设它是不可比的)——没有风险

我还尝试完全重新安装OrtoiseSVN——同样,没有骰子

我做的另一件有趣的事情是移动原始存储库的位置(存储在文件系统中,而不是数据库中)。但是它的路径与错误消息相同,所以我相信它正在查找存储库

还有什么原因呢?

您的第一个修订版(修订版0)可能没有“主干”、“分支”或“标记”目录。它们通常在初始签入(修订版1)中添加

同样地,如果您将“svn switch”插入其中一个目录(通常对“trunk”目录执行此操作),那么请求该目录上的版本0将正确地给您一条错误消息,即在版本0中找不到路径“/trunk”,因此它无法拉取该版本,并且仍然遵守以前的“svn switch”命令

尝试将“svn switch”切换到项目名称,而不进入任何子目录,我敢打赌您随后可以调出修订版0

$ svnadmin create /path/to/repos

这将在目录/path/to/repos中创建一个新的存储库。这个新的存储库从版本0开始使用,它被定义为不包含任何内容,只包含顶级根(/)文件系统目录。最初,版本0还有一个单独的修订属性svn:date,设置为创建存储库的时间。

这似乎是在不做任何更改的情况下检查文件差异的预期结果。我本来希望得到“文件是最新的”这样的结果,但回到我确信仍在工作的另一台工作站上的旧版本的TortoiseSVN,对于一个未编辑的文件,我得到了相同的结果。

只是想澄清一下,自从我在网络驱动器上移动了项目的位置后,我已将其签出。在移动过程中,回购的URL是否发生了更改?之后,修订。不,你搬家了?你能访问在移动之前创建的任何修订版吗?如果我从存储库的新位置签出了一个新副本,而我遇到的问题就是这个新副本,那么这是否重要?不是真的。除非您签出存储库的“根”,否则您不应该期望得到版本0的良好签出。在版本0中,通常只存在存储库的“根”。这是后来(在其他版本中)添加的所有内容,它们添加了非根路径和文件。请记住,“主干”、“分支”、“标记”等不是subversion内置的,它们是创建后签入存储库的项目。它们通常不在修订版0中。这意味着您无法在修订版0中(通过任何方式)签出它们,甚至不能通过签出“”的方式。对于修订版0,只有“”签出才有意义。您是说对未更改的文件执行差异时,错误消息是预期结果吗?(注意:自从您回答后,我重新编写了我的问题)预期0重定,因为这是一个特例-您可以在
svn log filename
中看到文件真正出现在repo中的时间(我想它必须是rev 1或rev 2)-在我的示例repo history of+1中查看
检查文件上的差异而不做任何更改。这就是为什么当文件实际上没有以前的版本时,我试图与以前的版本
diff
时出现问题的原因。这是一个被添加过一次的文件,在后来的数百次修订中根本没有被修改过。