无法还原或还原映射到其他卷(macOS)的文件夹中的更改

时间:2018-07-31 10:23:07

标签: tfs

如果我尝试在源代码管理下还原或还原文件,并且该文件夹/文件映射到与实际项目不同的卷,则Eclipse的TFS处处都有插件存在问题。

当我尝试还原或还原它时,出现错误:

java.io.IOException: Failed to rename /Users/*/*/*/*/.tf1/8/d54f18aa-bdce-4ab7-958a-01eaaf0c36c1.tmp to /Volumes/macOSData/*/*/*/*/*/some_file.cs. Check the file and directory permissions.

日志还有其他一行:

2018-07-31 12:44:39,814 WARN [ModalContext] (com.microsoft.tfs.util.FileHelpers) Main rename failed (source permissions problem?), trying to rename temp file back

当我获得项目的特定版本时,即使覆盖现有文件也没有问题,因此,权限至少可以用于获取文件。另外,当文件与本地TFS映射位于同一卷上时,不会发生这种情况。

将所有权限设置为777确实可以解决该问题,但这会用+ x标记所有文件,使它们全部“更改”,从而使该解决方案无法接受。

我尝试将基本文件夹映射到另一个驱动器(即,在另一个驱动器上强制创建一个 .tf 文件夹),但这无济于事。当我尝试还原主卷上的内容时,将出现错误。

我尝试使用符号链接,以使映射保持在同一卷内,但仍然没有运气。

有什么办法解决这个问题?还是所有内容都应该在同一卷上?

1 个答案:

答案 0 :(得分:0)

经过一整天的研究并使用jshell戳戳之后,这似乎是macOS上Java中File.renameTo()的错误。 renameTo函数无提示地无声失败,即使没有写入目标的权限问题也是如此。仅在写入其他卷时才会发生这种情况。

我已经在github上的TFS Everywhere存储库中提交了拉请求,并提供了解决此问题的方法。

任何有兴趣的人都可以使用此更改来编译插件,以使事情正常进行: https://github.com/Microsoft/team-explorer-everywhere/pull/276