ChatGPT解决这个技术问题 Extra ChatGPT

如何让 TFS 2010 检测对 Visual Studio 之外的文件所做的更改?

我将 Team Foundation Server 2010 与 Visual Studio 2010 一起使用。

每当我在 Visual Studio 之外修改文件时,TFS 似乎都没有检测到对文件所做的更改,因此没有为我提供在文件修改后签入文件的选项。

如何解决?

Subversion 或 Git(可能还有其他)正在比较文件的哈希值而不是 API 来签入/签出文件。更简单,风险更小!
更糟糕的是,TFS 甚至没有注意到需要签入更改的文件,因此您经常会忘记它.. 直到您的同事将其签出并意识到您的代码无法编译或工作。难怪人们说 TFS 是“类固醇上的 VSS”——更好,但仍然有许多 VSS 的问题。
这是类固醇上的 VSS,就像类固醇会破坏你的身体一样。

m
mhu

TFS 对此有一个“协调”命令:

打开源代码管理资源管理器 右键单击有更改的文件夹并选择比较 选择要协调的文件(按 CTRL+A 选择所有文件) 单击协调按钮 在协调文件夹差异对话框中设置选项。确保将没有未决更改的文件设置为签出 单击确定 如果您有本地更改,将显示签出对话框。设置首选的锁类型 点击签出

https://i.stack.imgur.com/BzvnH.png

另请参阅:Reconcile differences between folders


这是最好的答案,因为它不需要命令行或有风险的“撤消挂起的更改”。
拯救了我的一天!我完全按照您的步骤进行操作,并且完全按预期工作。 :-)
按照描述工作。应该是最好的答案。
不幸的是,在我的整个项目中执行此操作时,我收到错误指定的路径、文件名或两者都太长。完全限定名称必须少于 260 个字符,目录名称必须少于 248 个字符。选择单个文件夹对我来说不是一个选项,因为我不记得我更改的所有文件目录。任何想法?
在 VS 2015 更新 3 中完美运行,非常感谢。应该是最好的答案,没有棘手的命令让它工作
A
Asbjørn Ulsberg

如果您在 Visual Studio 之外工作时与服务器建立了网络连接,则最好在编辑之前继续检查文件,或者使用 tf 命令行客户端,或者使用 Windows Explorer shell 集成在 TFS Power Tools 版本中可用。 (此外,越来越多的其他工具具有 TFS 集成,可以自动执行此操作,但如果您只是使用记事本,这仍然需要手动执行。)

当然,有很多时候您正在工作并且没有可用的网络连接来检查文件。

如果您知道您修改了哪些文件,您可以从 Visual Studio 中将它们签出,然后您就可以将它们重新签入。

如果您不知道自己编辑了哪些文件,您可以通过运行 tfpt online 命令(也是 Power Tools 版本的一部分)来检测更改。这将在本地找到已修改的文件并从服务器中检出这些文件。


Visual Studio 似乎不能仅通过检出文件来检测文件的更改。我刚刚尝试签出一个文件夹,内容作为编辑显示在待处理的更改中。然后我删除了文件资源管理器中的文件夹并刷新了挂起的更改,但 Visual Studio 没有说这些文件在挂起的更改中被删除。此外,这些文件仍然存在于解决方案资源管理器中。
A
Adam Batkin

这对我有用,使用 TFS 电动工具:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(其中 directory-name 是要更新的目录的路径,否则它将检测整个 TFS 存储库中的更改)

如果您想知道它在不实际进行任何更改的情况下会做什么,您可以通过添加 /preview 开关强制它进行试运行。


感谢@Adam Batkin 的提示。工作就像一个魅力,我现在修好了! +1
请注意,此命令行还将包含不需要的文件:*.user、BIN\、obj 等...
干杯,我正在寻找一种命令行方式,这样我就可以从本地 Git 存储库自动更新公司的 TFS!
@SteveB 有一个 /exclude:fld_name/*,filename 开关可用于排除不需要的文件..这让我大吃一惊
我像这样运行 tfpt online /deletes /noprompt /recursive directory-name 并有数千个文件要“更改”,所以必须撤消。但我从来没有碰过这些,只是删除了文件夹。
h
hugbe8
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

我在一个分支上测试了这个解决方法,它对我帮助很大。但是只有新文件和新文件夹必须手动完成。

我建议在操作之前创建一个分支。它可以隔离您的操作时间。

注意:此技术还会对 TFS 始终标记为已修改的文件进行相同的清理。


这真的应该是对藻类帖子的评论,而不是新的答案。无论如何,我仍然建议不要这样做,原因与我在上面提到藻类时建议反对的原因相同。
绝妙!正是我想要的(在我们公司移动了我们的 TFS 服务器之后,TFS/VS2010 被它弄糊涂了)。现在,我刚刚检查了我编辑的文件。谢谢!
这可行,但 MS 应该提供更好的方法来做到这一点。好的产品不需要命令行和 hack(特别是如果它嵌入到 VS 中)。 SVN 和 Mercurial 这样做是为了好玩……
代替第 4 点,您可以使用 tfpt uu stackoverflow.com/a/544285/10245
这只会撤销你所做的。它不会让 Visual Studio 知道你做了什么。
O
Oleksandr G

尝试这个。这是某种解决方法,但它有效:

在 Visual Studio 之外进行更改转到 Visual Studio 并打开源代码管理资源管理器右键单击文件夹>“签出以进行编辑”>“签出”右键单击同一文件夹>“撤消挂起的更改...”>“撤消改变”>“对所有人都说不”

而已。现在可以看到更改。


我真的不建议这样做——我最大的担心是我会指手画脚并且不小心撤消了我所有的合法更改。此外,您正在检查所有文件,根据您的客户端和服务器配置,这些文件可能会锁定某些或可能所有文件,并且可能会在检查时执行最新操作,这肯定会很烦人。
这只会撤销你所做的。它不会让 Visual Studio 知道你做了什么。
如果您创建或添加了新项目,请在该会话中:Gone baby,去吧!
C
Cristian Lupascu

还有另一种解决方案可以让 TFS 找出在 Visual Studio 之外已更改的文件:

离线打开解决方案 在解决方案资源管理器中选择解决方案文件,然后按“联机”按钮 ()

在此之后,TFS 将自动扫描解决方案的更改。

第一步可以通过多种不同的方式实现。这里有一些:

使用 GoOffline 扩展 - 非常简单有效。

如果在打开解决方案时要求您提供 TFS 凭据(无自动域身份验证),请不要输入凭据。该解决方案将离线打开,您将在按下“联机”按钮后登录

(极端解决方案)断开你的网线;打开解决方案;连接网络电缆。


C
CheckRaise

Visual Sourcesafe 也是这样工作的,我让 VSS 或 TFS 注意到更改的方法是在 Visual Studio 中检查文件一次。


g
g t

打开源代码管理并转到您的 TFS 文件夹。右键单击该文件夹并选择“比较”。

请注意,您编辑的文件显示为红色。

我发现这比 tfpt online 更好,它还可以获得非只读且未编辑的文件。


J
Jaider

过去我遇到过这个问题,当我的 Internet 出现故障并且我脱机工作时,我的大部分更改都没有出现在 Team Explorer 中。

https://i.stack.imgur.com/5tqMF.png

*.cs;!obj\;!bin\;!packages\;

在此示例中,它将仅包含在搜索中的 C# 文件并排除在以下文件夹中:bin、obj 和 packages。

请注意 Pending Change 列包含文件是否标记为编辑、添加等...或什么都没有的信息...

要标记为编辑(当本地项目具有匹配的服务器项目时),请选择文件并选择签出以进行编辑...

要标记为添加(当本地项没有任何服务器项时),请选择文件并选择添加文件

最后,我不确定为什么项目没有在此处列出(在我删除 *.cs 过滤器后,仍然没有显示),因此重新构建解决方案以确保项目也更新

在解决方案中,单击显示联机的连接按钮(如果显示)。


G
Graham Laight

我发现在 Visual Studio 2015 中,随着项目的打开,Visual Studio 自己发现文件已在外部进行了修改,并自动将它们签出,而我无需做任何事情。以正常方式签入项目保存了外部修改。


s
snumpy

就我而言,以下方法有效(至少我尝试过一次):

转到 Pending Changes 面板 在 Included 或 Excluded changes 下选择 View Options。在 Show All 和 Show Solution Changes 之间切换 根据需要切换回来

https://i.stack.imgur.com/pEnOJ.png

更改查看选项似乎会强制刷新已修改的文件。