【问题标题】:Force TFS to detect changes强制 TFS 检测更改
【发布时间】:2013-04-26 17:45:21
【问题描述】:

看起来这应该是很简单的事情,但我找不到如何做到这一点......

我使用自己编写的脚本对存储库中分布的多个文件进行了更改。问题是 TFS 以其无限的智慧不认为文件发生了变化。除了手动查找每个文件并单击“签出以进行编辑”之外,还有什么方法可以告诉 TFS 重新扫描所有内容并检测更改?

【问题讨论】:

标签: tfs


【解决方案1】:

文件夹比较(文件->源代码管理->比较...)应该可以解决问题。选择开始比较的顶层文件夹,然后选择与最新版本进行比较。结果应显示已更改的文件,以及它们是否已签出。

【讨论】:

  • 有趣的是,当我在 VS 2012 中进行此文件夹比较时,它显示 TF10108:源代码管理无法将文件与文件夹进行比较。选择两个文件,然后重试。
  • @arviman:第二个路径需要是一个文件。当您在 Visual Studio 之外的项目中更改了数百个文件时,这不是一个可行的解决方案。
  • 是的,它会显示,现在有 80K 文件被随机添加/编辑/删除,但尚未进行待处理的更改...
【解决方案2】:

TFS 对此有一个“协调”命令。完整答案请参见https://stackoverflow.com/a/22860674/932282

【讨论】:

    【解决方案3】:

    本地工作区

    您需要使用local Workspace。以下是管理工作区的方法:

    visualstudio.com: "Create and work with workspaces".

    添加或编辑工作区时,单击 Advanced >> 。然后将Location: 设置为Local

    现在,当您的脚本或其他任何内容更改 Visual Studio 之外的文件时,您的工作区会自动检测到 changes

    它还会检测到addsdeletes,但您必须使用Excluded Changes 下的链接手动将它们包含到您的Pending Changes

    但要小心。当检测到addsdeletes 并将它们添加到Pending Changes 时,这些文件不会自动包含到您的项目中。因此,您可以将它们签入TFS,但它们并未列在Solution Explorer 下。

    Matt Burke 解决了这个问题:

    mattburkdev.com: "Automatically Include All Files in Folder in Visual Studio"

    要编辑项目文件,请右键单击您的项目,选择Unload Project,然后再次右键单击它并选择Edit。编辑项目文件后保存并关闭它。然后右键单击并选择Load Project

    但是你也需要小心,因为项目只在这些文件夹中搜索要包含的新文件,当你加载项目而不是当你打开项目时。因此,当一些文件被添加到 Visual Studio 之外时,您只需重新加载项目即可。


    服务器工作区

    但是,如果您出于某种原因必须坚持使用服务器工作区,我还有另一个窍门:

    第一: 检查所有可能有未决更改的文件(最好检查许多文件)。然后转到 Team Explorer -> Pending Changes 并选择您刚刚签出的所有文件。然后选择“撤消更改”。在此之后,您会收到一条消息“确认撤消结帐”。此消息仅针对实际上已更改的文件弹出!对每个文件按“否”或对所有文件按“否”。

    最后:在未决更改下,所有文件都将从列表中删除,但有未决更改的文件除外。


    我希望我可以帮助某人,只要我必须,您就不必搜索此解决方案^^

    【讨论】:

    • 我希望我在厌倦之前读过这篇文章,然后检查我的整个项目,然后重新检查一切,这需要一些时间。我删除了项目内容,然后从其他地方粘贴了修改后的版本,它拒绝检测到更改。也许这会奏效。
    • 谢谢!对于来自 git 的每个人来说,这确实是一个常见问题解答。您一定喜欢这个功能:“当您的网络连接不可用或不可靠时,您可以快速开始编辑文件”,..“当您在 Visual Studio 之外添加或删除文件时,程序会自动检测这些更改”。除了最琐碎的项目之外,很难想象以任何其他方式使用它。虽然文档说,local 应该在大多数情况下使用,但它显然不是 VS2019 中的默认设置。
    • 本地工作空间的性能相当低下,对任何拥有 monorepo 设置的人发出了严重警告。
    【解决方案4】:

    如果您在离线时发生任何更改,您可以转到文件 > 源代码管理 > 上线,所有文件都会被检查是否有修改。

    【讨论】:

      【解决方案5】:

      如果以上方法都不起作用,您还可以尝试通过转到文件 -> 源代码管理 -> 高级 -> 更改源代码控制来重新绑定您的项目。

      【讨论】:

      • 只需单击“解除绑​​定”,然后单击“绑定”即可为我解决此问题。这是最简单的解决方案,但不清楚为什么会发生这种情况。
      【解决方案6】:

      在 Visual Studio 2015 中:

      Source Control -> Advances -> Refresh Status

      【讨论】:

      • 在 VS2019 中不可用
      • @Demodave - 在 VS 2019 Professional(版本 16.3.6)中可用。
      【解决方案7】:

      当我将项目从一台电脑移动到另一台电脑时,我遇到了这个问题。 解决方案是删除 TFS 在解决方案文件夹中创建的临时文件。 删除.vs 和隐藏的$tf 文件夹。

      如果运气不好,在您的本地 PC 上将您的解决方案文件夹复制到另一个,删除解决方案中的所有文件,从 TFS 服务器获取最新版本,然后从复制的文件夹中获取必要和已编辑的文件和将它们放回解决方案文件夹(这将覆盖一些文件)。

      毕竟不要忘记检查项目映射,如果一切正常,请尝试右键单击解决方案和“添加到源代码管理”选项。

      【讨论】:

        【解决方案8】:

        无法识别放入 TFS 文件夹的 Dtsx 文件。

        • 在 Visual Studio (2015) 主屏幕上,单击 Team Foundation Server 链接。导航到正确的分支。
        • 在屏幕左侧的窗口中,导航到包含您的文件的文件夹。展开文件夹。
        • 在文件夹的右侧,您会看到三个点。点击这些,然后点击“+ 添加文件”。

        选择“上传现有文件”。然后,您可以将 .dtsx 文件拖放到窗口中,然后单击“确定”。

        最后,您必须执行“获取”才能将文件添加到那里。然后你需要做一个“拉”。最后,您可以将更改提交到远程分支。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-18
          • 2012-05-06
          • 1970-01-01
          • 1970-01-01
          • 2019-09-23
          • 1970-01-01
          相关资源
          最近更新 更多