17

我不确定为什么我以前从未注意到这一点,但是当我从 TFS “获取最新”时,我本地工作文件夹中文件的日期和时间设置为当前日期和时间。这适用于创建和修改日期,即使没有进行任何更改(就像我刚刚做了“获取最新”一样,仅此而已)。

我是否应该担心文件的日期和时间不反映文件创建和随后修改的真实日期和时间?我在 TFS 中有修订历史,所以我并不过分担心,但我必须承认这感觉不对。从技术上讲,一切都有效,但我想知道发生了什么。

4

3 回答 3

23

正如您所注意到的,Team Foundation Server 中的默认行为是将文件时间写入“当前”时间(当您检索文件时)。这是大多数版本控制工具的默认行为,通常被认为是安全的。

在许多情况下,将时间设置为远程时间可能会产生负面影响。例如,make将扫描比上次构建时间更新的文件。将文件时间设置为服务器时间会影响确定自上次构建以来哪些文件已更改的能力。

但是,如果您确实更喜欢这种行为并且至少使用 TFS 2012 和 Visual Studio 2012,您可以通过将“文件时间”设置为“签入”来在每个工作区的基础上启用它:

在此处输入图像描述

来自 Microsoft 的其他详细信息:

文件时间:

  • 如果您希望每个文件的日期和时间戳与工作区中版本变更集的时间戳大致匹配,请选择签入一些问题和例外是:

    • 当您修改本地文件时,日期和时间戳将与您修改文件时的日期和时间相匹配。

    • 仅当您使用 Visual Studio 2012 或更高版本以及 Visual Studio Team Foundation Server 2012 或更高版本时,此功能才可用。

    • 该设置不适用于文件夹,除非对该文件夹包含的文件有挂起的添加或删除操作。

    • 您可能无法逐步构建代码项目。相反,您将不得不重建)。

  • 如果您希望日期和时间戳与您上次修改本地文件的日期和时间相匹配,请选择当前。例如,一名团队成员在周一签入了对文件的最新更改。在星期二,您执行 get 操作来更新文件。日期和时间戳设置为星期二。

于 2013-03-05T17:41:45.670 回答
1

如前所述,这是 TFS 的默认行为。这是我在默认设置下使用的第一个版本控制系统。当开发人员获得最新版本时,对文件使用当前时间的问题在于,您只能通过对每个文件进行文件比较来判断您是否拥有最新版本。同一项目中的三个不同开发人员对于同一版本的文件将具有 3 个不同的日期时间值。无论哪种方式,在创建构建之前总是做一个项目清理。为什么?因为您可能已经调整了一两个文件,然后在测试后恢复到最新的签入版本。根据我的经验,使用签到时间总是更好。

于 2013-11-21T16:27:20.033 回答
1

TFS 不应修改源代码控制处理中的原始文件属性。它的构建功能应​​该使用它们自己的属性来控制最新签入的版本和构建控制。从 TFS 获取文件应将原始文件放回系统上,且其原始属性未修改。TFS 因自身目的而劫持原始文件的属性而被破坏。最初的 Microsoft VSS 工具提供了此选项 - TFS 团队感到羞耻。

于 2014-09-19T16:46:21.313 回答