【问题标题】:Can TFS Pending Changes show files that are truly changed like SourceGear Vault?TFS Pending Changes 能否像 SourceGear Vault 一样显示真正更改的文件?
【发布时间】:2018-07-09 01:44:20
【问题描述】:

我一直将 SourceGear 库用于一些个人项目,将 Team Foundation Server 用于工作项目。 TFS 缺少的一件事是 Vault 在其签入对话框窗口中具有的一项简单功能。

在 Vault 客户端中,您可以查看签出的文件是否与之前签入的版本相比发生了变化。这里是 screen shot。注意到“详细信息”列了吗?这告诉你有区别。如果您因为要进行代码重新生成而必须检查整个项目,那么这种方法非常有用。我将检查我的类库项目,然后重新生成我的 CodeSmith 模板。这样做可能会导致仅更改几个特定文件。当我查看挂起的签入屏幕时,我看到了真正发生变化的文件,我可以比较看看影响。

所以... TFS 可以做到这一点吗?也许有一个 3rd-party 工具可以为我做这件事?是否有我必须获得的 TFS SDK 或 PowerTool。有人想建吗?

【问题讨论】:

  • 我希望你能找到一些东西,因为单独检查每个文件的更改是一个巨大的痛苦(尽管我可能会这样做来检查是否已经进行了正确的更改,大多数时间)。

标签: tfs sourcegear-vault


【解决方案1】:

选择“待更改”窗口中的所有文件并激活上下文菜单。然后点击“撤消...” > “撤消更改” > “全部拒绝”没有更改的文件将被回滚。

【讨论】:

  • 这是什么版本的 Visual Studio?我在 2010 SP1 中没有获得该选项
  • 请注意,这也适用于 VS Team System 2008。
  • 不是全部,在选择文件并从 Pending Changes 上下文菜单中选择 Undo 后,不会显示在我的 Undo Changes 对话框中。
  • 这不是 Visual Studio 2012 Professional 中的选项
  • 在 2010 Premium SP1(根据上面的评论)和 2010 Ultimate 中可用
【解决方案2】:

根据this page,您可以从 Visual Studio 命令提示符运行此命令。

tfpt uu /noget /r *

您需要安装 TFS Power Tools 才能使用。此外,请确保在命令提示符下浏览到映射文件夹的根目录(例如 - C:\TFS)。

TFS 电动工具链接(如果您还没有)
TFS Power Tools for 2010
TFS Power Tools for 2012

【讨论】:

  • 像魅力一样工作,谢谢!很高兴我不必手动撤消所有 1844 个文件:D
  • 没有办法自动化吗?它需要每次都运行该命令。我确定我以前工作的地方有一个设置可以自动撤消未更改的文件,但我想不出办法。
  • 相信未更改的文件实际上不会在 TFS 中得到更新。那可能只是我工作的设置。我只是为了自己的理智而执行上述操作(在我的回答中);以确保我只签入我实际修改过的文件。
  • TFS 在更新文件之前检查文件是否不同,因此与其说是潜在的代码问题,不如说是带来不便。我检查待处理的更改以查看我在代码中所做的更改并写下我的签入注释并添加适当的相关工作项,因此有 1800 个更改的文件而不是我正在处理的 15 个。
【解决方案3】:

没有必要撤消未更改的文件,因为 TFS 会在签入时注意到它们未更改,并且只会关联真正更改的文件。任何签出但未更改的文件都将恢复为其最后一个已知的签入版本,并且不会与您的签入相关联。在 TFS 中(虽然没有很清楚地记录)是不可能签入未更改的文件的。如果没有更改,它将始终恢复到以前的版本。

您可以通过从命令行调用 'tfpt.exe uu /r'(为此需要 Team Foundation Power 工具)或使用“待更改”窗口中的“撤消未更改”按钮来快速撤消未更改的文件。这会立即从列表中删除任何未更改的项目。这样您就可以准确地看到您正在签入的内容。

尽管此选项可能是由Team Foundation Power ToolsTFS Source Control Explorer Extensions 添加的(无论如何,这是每个 TFS 用户都必须拥有的)。

另见:

【讨论】:

  • 我使用的是 TFS 2010,当我从 VS 命令提示符运行 tfpt.exe uu /r 时,它显示 无法确定工作区。您是否也收到此错误?
  • 当前工作文件夹是否被映射?如果没有,您是否提供了所需的参数?
  • 当前工作文件夹已映射。通过导航(使用命令提示符)到映射的文件夹克服了我的错误。
  • 您是如何在 Pending Changes 窗口中获得“撤消未更改”按钮的?我用的是VS2013,安装了你链接的2个扩展,还是看不到。
  • 2013 年它已移至源代码管理资源管理器。它在那个窗口的工具栏上。
【解决方案4】:

我不喜欢回答自己的问题,但看起来可能没有真正的 Microsoft 解决方案。对我来说,这就是我在办公室使用 Visual Studio 处理问题的方式。

  1. 在重新生成业务对象之前,我会复制整个文件夹结构
  2. 我检查了整个项目或根生成的文件夹
  3. 我启动代码生成器。有时,我确切地知道发生了什么变化,但其他时候,我可能会做出很多改变,我不想错过任何东西。我工作中的代码生成器还生成 DROP/CREATE 存储过程所需的所有 SQL 文件。
  4. 使用 SourceGear DiffMerge,我比较了刚刚生成的文件夹和之前备份的文件夹。

这非常耗时。直到我看到 Vault 识别出磁盘上的文件与存储库不同,我才认为这是一个问题。

也许你们都可以说在使用源代码控制存储库时如何进行代码生成/重新生成。

【讨论】:

    【解决方案5】:

    我在一个企业开发环境中工作,许多开发人员可能正在处理同一个文件,我们也将 TFS 作为我们的源代码控制。在我们的 TFS 最佳实践文档中,我们真的不鼓励检查开发人员不打算更改的文件,这样我们在提交变更集时自然会排除没有差异的文件。

    要回答您的问题,我通常只查看“待更改”窗口并在我不确定的“已更改”文件上运行 比较 - 比较工具应该立即告诉如果您的本地副本与服务器副本相同。不幸的是,除了我的建议之外,没有真正的解决方法,但我没有看到我绝对必须检查整个项目分支以进行编辑的情况。

    【讨论】:

    • 我不确定您所说的代码生成是什么意思。但另一方面,我可以说这通常是我们开发人员从 8 到 5 尝试做的事情 :)
    • 代码生成使用像 CodeSmith 这样的工具来生成基于数据库模式的业务对象类。如果您不进行此类开发,则无需检查项目中的所有文件。看起来格兰特克罗夫顿了解这种需求。
    • 比较文件很好,但是如果你有 250 个文件要比较呢?这发生在我身上,更新了 WCF 引用。大多数文件都是相同的,我不知道为什么 TFS 会检查它们。
    猜你喜欢
    • 2021-03-07
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    相关资源
    最近更新 更多