【问题标题】:Find unadded files in Team Foundation Server在 Team Foundation Server 中查找未添加的文件
【发布时间】:2010-10-03 19:04:51
【问题描述】:

我们正在使用团队基础服务器进行源代码控制。我经常将文件放入我的项目中(在源代码控制下)并且忘记在 TFS 方面“添加”它们。在某些情况下,TFS 不会拾取新文件(在您的项目中复制并粘贴文件)。

有没有一种方法可以列出所有未标记为“添加”的文件,以便我可以验证所有预期的签入是否发生?

这快把我逼疯了!我们还没有为这个项目设置持续集成,而且我一直丢失文件。直到有人问我文件在哪里,我才知道。

在 Subversion 中,这非常简单。

我知道一种解决方案是签出第二份副本,但这并不是真正的最佳解决方法。

【问题讨论】:

  • 九年后,这对我来说是一个比以往更大的问题:-(

标签: version-control tfs


【解决方案1】:

转到源代码管理资源管理器,右键单击您感兴趣的文件夹并选择比较。

这将显示未添加的文件以及未经检查而修改的文件。

此解决方案不需要电动工具

【讨论】:

  • 除非您有数百个文件分散在您的树中,否则您无法轻松选择所有文件进行添加。
  • 请务必选中“显示仅存在于目标路径中的项目”,然后您就可以看到丢失的本地文件。对于较新的 .NET Core 项目,node_modules 中可能有数百个不应签入的文件,因此此视图可能会变得很慢。
【解决方案2】:

您可能需要确保安装了最新版本的 TFS 客户端 (VS 2008 SP1),因为这样可以更轻松地处理文件。另外,请查看TFS Power Tools - 特别是 tfpt 在线命令。

tfpt 命令行有很多方便的 TFS 实用程序。安装 TFS 电动工具后,在 Visual Studio 2008 命令提示符处键入“tfpt help”以获取列表。如果您在解决方案的根目录中执行“tfpt online /r”,它将检测可在本地文件系统中写入的文件并为它们挂起添加或编辑。您可能希望限制该命令,使其仅查找源文件 - 例如“tfpt online /r *.cs”。

【讨论】:

  • 使解决方案脱机然后重新联机可能会做类似的伎俩。
【解决方案3】:

是的,有。导航到源代码管理资源管理器。单击您感兴趣的项目。单击“将项目添加到文件夹”按钮。距离刷新按钮有两个。这将为您提供文件夹中但未添加到源代码管理的所有文件的列表。

【讨论】:

  • 这确实有效,但它不是递归的。浏览整个文件夹结构可能非常困难。
  • 可能下一个最好的事情是为此编写代码。 TFS 有一套完整的托管代码用于与 TFS 通信,因此您应该很容易编写代码来递归检查每个文件夹和 TFS 是否有未添加的文件。
  • 使用 'tfpt online',就像在接受的答案中一样,比针对 TFS API 编写自己的代码要容易得多(以防有人出于某种原因跳过接受的答案:p)
  • 这与the other answer 有何不同?
  • 对于递归文件夹,但是在第一步中,当显示添加文件对话框时,您必须用鼠标选择所有文件夹。我测试过,它可以工作。
【解决方案4】:

在 VS 2015 中,这帮助我将文件添加到版本控制

  1. 在源代码管理资源管理器中打开“将项目添加到文件夹...”上下文菜单项

  2. 添加必要的文件

【讨论】:

    【解决方案5】:

    来自this answer的“灵感”

    TFS Power Tools ) 现在有了 Windows Shell 扩展,因此您只需使用 Windows 资源管理器来操作源代码控制文件。

    您所追求的选项是与工作区版本比较 - 这也可以递归地工作,并允许有选择地添加/删除等(是的,tf.exe 可能会有一个等价物)


    (来源:msdn.com


    (来源:msdn.com

    【讨论】:

      【解决方案6】:

      如果您使用的是 Visual Studio,则可以右键单击解决方案资源管理器中的文件夹并选择 Add > Existing item。不幸的是,由此产生的“添加文件对话框”不会自动作用于您单击的文件夹。

      不过,解决方案资源管理器中还有一个名为“显示所有文件”的按钮。单击此按钮后,将出现未包含在项目中的文件并获得“包含在项目中”上下文菜单项。包含它们通常会将它们作为“已添加”自动放入 TFS 的“待更改”列表中。

      (Source.)

      【讨论】:

        【解决方案7】:

        像微软一样迁移到 git :)

        【讨论】:

          【解决方案8】:

          对于 Visual Studio 2017,这仍然是一个问题,但很容易修复: 导航至:解决方案探索者 REFRESH 圆形箭头右侧的第二个按钮是:SHOW ALL FILES 点击那个

          您的所有文件都将显示为淡出,但可见。右键单击每个并选择“包含在项目中”

          当你完成所有工作后,蜗牛寄一封投诉信给微软

          【讨论】:

            【解决方案9】:

            如果我正确理解您的问题,以下 Powershell 脚本会吐出尚未添加的文件:

            [hashtable] $lps = [hashtable]::new()
            
            tf info . -recursive | findstr /r /c:"^  Local path :" | foreach-object {
                $lp = $_ -replace '^  Local path : ', ''
                if ($lp) {
                    $lps[$lp.toLower()] = $null
                }
            }
            
            get-childItem -recurse | foreach-object {
                if (-not $lps.ContainsKey($_.fullName.toLower())) {
                   (resolve-path -relative $_.fullName).toString()
                }
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-12-06
              • 2015-05-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多