0

不知为何,我无法再在便携式 Windows XP Professional SP3 机器上的开发目录上运行 TortoiseSVN 更新,出现以下错误:

之前的操作还没有完成;如果中断,请运行“清理”
请执行“清理”命令。

如果我尝试运行清理,我会收到另一个错误,

无法处理以下路径:无法将 $ROOT_DIR/.svn/tmp/tmp-... 移动到 $ROOT_DIR/path/where/thing/should/go:没有这样的文件或目录

我已经验证了这两个文件都存在,实际上从 CMD.EXE 提示符我可以使用这两个文件名发出 MOVE 并让它正常工作。这是没有用的,因为下次 SVN 在创建不同的tmp文件名后尝试自行重复操作,而当 CMD 成功时,SVN 会失败。

更新:在这两种情况下,路径长度都远低于 PATH_MAX,目标文件系统是 NTFS,并且权限正常。也许我现在会尝试使用FileMon来看看 TortoiseSVN 到底在做什么。

我尝试降级 TortoiseSVN 但无济于事。其他存储库在同一台机器之间工作正常。

TortoiseSVN 1.7.9, Build 23248 - 32 Bit , 2012/08/30 18:25:37
Subversion 1.7.6, 
apr 1.4.6
apr-utils 1.3.12
neon 0.29.6
OpenSSL 1.0.1c 10 May 2012
zlib 1.2.7

服务器(OpenSuSE Linux 12.2)和客户端现在都运行最新版本的 SVN。

在 Windows 上,我似乎也无法获得更多信息日志或信息(我对 TortoiseSVN 不是很熟练,我一直使用 Linux 命令行版本)。

我可能会删除本地副本并运行结帐,但它大约有 2 GB 的数据,而且我的连接速度很慢,所以它实际上更像是“从物理上飞到服务器位置并将铜质以太网连接到本地网络那里”的替代品。我将其保留为最后的选择,核选项;我真的很想了解问题是什么,因为我担心它可能会再次发生。

更新

我试图远程删除所涉及的子目录,在服务器上提交删除;在本地删除子目录,并清空.svn/tmp我发现 16 个tmp文件的子目录,一个 PNG 的所有副本都会导致问题。

我仍然无法执行任何 SVN 子命令,得到“运行清理!” 错误; 关于清理;我尝试将 tmpfile 复制到一个不再存在的目录中,该文件在任何地方都不再存在。

我尝试在本地重新创建目录(但不是文件!),没有任何更改。

使用 FileMon,我将源 PNG 跟踪到8e4c2389cf9d85c8b8ee54d49ea053c752a38187.svn-base.svn/pristine 子目录中,尝试将其删除并让 SVN 抱怨。我尝试将它复制到它的预期目的地(以便文件原样和文件原样相同),没有乐趣。

更新

嗯,这很奇怪。我决定使用 FileMon 跟踪TortoiseSVN 所做的一切。我可以看到它检查wc.db并搜索该项目,检查它.svn/pristine(并找到它),复制它(如果你问我的话......不必要).svn/tmp,最后$DESTINATION_FILE使用 Windows Open() API 检查(使用正确的大小写)。并且找不到路径。但是文件那里,我可以看到它(名称少于 8.3 个字符)。为什么找不到PATH而不是找不到文件

4

2 回答 2

2

好的,这一切都归结为一个远程创建的目录,其名称以空格结尾。文件本身没问题;它所在的目录不是

显然,在更新时,该目录已创建,但名称被 Windows 缩短以排除最终空间。

为了增加诊断的难度,虽然 TortoiseSVN确实告诉我问题出在哪里,但它是在 Arial 字体使空间无法清晰识别的对话框中这样做的\path\to\your \file(一旦我知道在哪里看,并比较了与其他人一起斜线。这个站在离左边的字母稍远的地方)。

经验教训:仔细检查对话文件名,逐个字符(自我注意:如果可能的话,在 Courier New 中找到一种方法)。

于 2012-09-16T17:38:06.970 回答
1

您可能在存储库中有两个文件,它们只是大小写不同。这在 Windows 上是个问题。有关详细信息,请参阅此常见问题解答

于 2012-09-16T09:31:47.440 回答