如何让TFS 2010检测到对Visual Studio以外的文件所做的更改?
我在Visual Studio 2010中使用Team Foundation Server 2010。
每当我在Visual Studio之外修改一个文件时,TFS似乎没有检测到对文件所做的更改,因此不提供在修改文件后签入文件的选项。
这怎么解决?
如果您在Visual Studio外部工作时与服务器build立了networking连接,则最好先进行检查,然后再编辑文件,或者使用tf命令行客户端,或者使用Windows资源pipe理器shell集成可在TFS电动工具版本中find。 (另外还有越来越多的其他工具可以自动进行TFS集成,但是如果您只是使用记事本,这仍然需要手动操作。)
当然,有很多时候你工作,你没有可用的networking连接,允许你检查文件。
如果你知道你已经修改了哪些文件,你可以从Visual Studio中检查出来,然后你就可以检查它们了。
如果您不知道自己编辑了哪些文件,则可以通过运行tfpt online
命令(也是Power Tools版本的一部分)来检测更改。 这将find已在本地修改的文件,并从服务器中检出这些文件。
TFS有一个“Reconcile”命令:
- 打开Source Control Explorer
- 右键单击包含更改的文件夹,然后select比较
- select您要调和的文件(按CTRL + Aselect所有文件)
- 点击Reconcilebutton
- 在Reconcile Folder Differences对话框中设置选项。 确保没有挂起更改的文件被设置为签出
- 点击OK
- 如果您有本地更改,将显示“ 检出”对话框。 设置首选的lockingtypes
- 点击签出
这对我来说,使用TFS电动工具:
tfpt online /adds /deletes /diff /noprompt /recursive directory-name
(其中directory-name是要更新的目录的path,否则它将检测整个TFS存储库中的更改)
如果您想知道在没有实际进行任何更改的情况下会执行什么操作,可以通过添加/preview
开关强制执行干运行。
*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"*
我在一个分支上testing了这个解决方法,它帮了我很多。 但是只有新的文件和新的文件夹必须手动完成。
我build议在操作之前创build一个分支。 它隔离你的手术时间。
注意:这种技术也是文件完全相同的清理,TFS总是标记为已修改。
尝试这个。 这是一种解决方法,但它的工作原理:
- 在Visual Studio之外进行更改
- 转到Visual Studio并打开源代码pipe理资源pipe理器
- 右键单击文件夹> “检出编辑” > “检出”
- 右键单击相同的文件夹> “撤消挂起更改…” > “撤消更改” >“ 否全部 ”
而已。 现在可以看到更改。
还有另外一个解决scheme可以让TFS找出在Visual Studio之外更改过的文件:
- 离线打开解决scheme
- 在解决scheme资源pipe理器中select解决scheme文件,然后按“联机”button( )
之后,TFS将自动扫描解决scheme以进行更改。
第一步可以通过许多不同的方式来实现。 这里有一些:
- 使用GoOffline扩展 – 非常简单和有效。
- 如果在打开解决scheme(无自动域身份validation)时要求您提供TFS凭据,请不要input凭据。 该解决scheme将打开离线,您将在按下Go Onlinebutton后login
- (极端的解决办法)断开你的网线; 打开解决scheme; 连接网线。
Visual Sourcesafe也是这样工作的,而我得到VSS或TFS注意到这个变化的方法是在Visual Studio中检查一次这个文件。
打开源代码pipe理并转到您的TFS文件夹。 用鼠标右键单击该文件夹,然后select“比较”。
请注意,您编辑的文件显示为红色。
我发现这比tfpt online
更好,这也让你的文件不只是只读和不编辑。
过去我遇到过这个问题,当我的networking出现故障,离线工作时,我的大部分更改都没有出现在团队资源pipe理器中。
遵循这些步骤:首先,在解决scheme资源pipe理器中,select要重新调和的文件夹(对于我来说,这是我的整个解决scheme文件夹),然后select比较… 点击修改filter ,然后在filter文本框中input:
*.cs;!obj\;!bin\;!packages\;
在这个例子中,它将包含在仅searchC#文件并排除在文件夹:bin,obj和包中。
请注意, Pending Change列有关于文件是否被标记为编辑,添加等的信息,或者没有任何信息。
- 要标记为编辑 (当本地项目具有匹配的服务器项目时),请select该文件并select检出以编辑…
- 要标记为添加 (当本地项目没有任何服务器项目时),select该文件并select添加文件
最后,我不知道为什么项目不在这里列出(我删除* .csfilter,仍然不显示),所以重build解决scheme,以确保项目更新以及
+在解决scheme中,单击连接button(如果显示)说去线上 。
我发现,在Visual Studio 2015中,在项目打开的情况下,Visual Studio自己发现文件已被外部修改,并自动检查出来,而无需执行任何操作。 以正常方式检入项目保存了外部修改。