12

我目前正在开发一个 iPhone 应用程序,我的公司使用 TFS 2010 进行源代码控制。

我们使用 Team Explorer Everywhere 作为 Eclipse 插件来处理 Mac 上的源代码控制以及其他项目(例如我们最近做的 C++ 项目),它运行良好。

但是,它似乎不适用于此 iPhone 应用程序,主要原因似乎是别名。它要么根本不存储它们,要么将它们存储为常规文件或文件夹,这会破坏一切。

在尝试迁移到 TFS 之前,我以一种即兴的方式使用 Mercurial,并且一切正常。

有谁知道如何在不破坏它们的情况下将 Mac OS X 机器中的别名之类的东西存储在 TFS 中?

4

4 回答 4

5

Mac OS 上的别名是符号链接和指向源文件 ID 的指针的混合体。(将其视为指向 inode 的指针以及指向传统 unix 文件系统上完整路径的符号链接)

它实际上比这更复杂,因为别名结构的实现取决于底层文件系统。这都记录在别名管理器参考概述中

这真的归结为 TFS 2010 如何将其文件存储暴露给 Mac OS - 我的猜测是它是一个 SMB 共享,这就是为什么您的别名无法通过 SMB API 从 HFS+ 转换为 NTFS 存储。除非您可以公开原始存储,因为 HFS+/AFS 和 TFA 2010 可以智能地跟踪文件更改,否则您可能不走运并且必须一起避免使用别名。如果您愿意尝试,相对路径符号链接可能是一个更强大的解决方案。

您将放弃 Mac 端别名重新连接的所有稳健性,但对代码更改的控制可能更重要。我还会研究一个到 TFS 2010 的mercurialgit桥,因为它们在 mac 上工作得更好,并且可能是一个更容易接受的中间立场。

于 2011-08-30T20:20:25.950 回答
2

是的,Team Explorer Everywhere 可以保留 HFS 别名。HFS 将别名存储在文件的扩展属性中:

% ls -Flas alias
208 -rw-r--r--@ 1 ethomson  staff  69936 May 30 15:19 alias
% xattr alias
com.apple.FinderInfo
com.apple.ResourceFork

正确配置文件后,.tpattributes Team Explorer Everywhere 将存储扩展属性。要存储扩展属性,您将需要如下一行:

filename:transform=apple

应用此转换后,本地文件的数据和资源分支将组合成一个 AppleSingle 文件,然后将其签入到 TFS。当您在另一台 Mac 计算机上从团队资源管理器中获取该文件时,别名将被正确保留。在任何非 Mac 计算机上,此标志将被忽略,实际的 AppleSingle 文件本身将被下载。

于 2012-05-30T20:21:49.773 回答
-1

据我所知,答案是否定的。

于 2012-05-30T18:38:24.150 回答
-1

至少要到 TFS 2011,根据这个

于 2013-02-26T20:39:16.000 回答