应用场景:
在一项目中因为一个同事去了其它项目组同时又有未签入的文件,通过电话沟通得知已经是最新文件,但是由于临一项目组不在本地,同时也不想使用TFS的远程访问,那么有两种方法可以让其他同事继续开发:其一是脱机进行开发,这样可以开发,但是文件就不能签入,项目组的其它人只能通过文件copy的方式获取最新版本,就失去了使用tfs进行源代码管理的意义;其二是使用tfs的命令行工具进行强制撤销签出,这样文件就处于签入状态了。在本文中就是用第二种方法来解决这个问题,既省去了让同事跑回来签文件的无谓消耗,又使其他同事能继续开发。下面我们切入正题。
解决思路:
可以通过TFS的命令行工具,调用undo命令进行强制撤销签出。MSDN对Undo命令的描述如下:
undo 命令检查具有正在撤消的挂起编辑的文件是否已在磁盘上进行修改。 如果检测到修改,不带 /noprompt 的 undo 命令将显示一个提示,询问是否继续撤消更改。 可以响应“Yes”、“No”或“All”。
undo 命令将所有签出文件返回到未修改的只读状态。 它将丢弃对文件和文件夹的所有挂起的更改,并将项还原到 Team Foundation 版本控制 服务器版本。
undo 命令移除签入及签出锁定,以便用户在自己的工作区签出文件并对其做出挂起的更改。
如果使用 undo 命令撤消其他用户计算机上挂起的更改,则必须在该工作区中执行 get 操作以更新本地磁盘。 不仅必须运行 get,还必须对已撤消的文件运行 get /all,以便为被编辑文件下载正确的内容。
感兴趣的读者可以参考:
http://msdn.microsoft.com/zh-cn/library/c72skhw4.aspx
具体步骤:
1、使用TF workspaces命令查看签出文件的人员使用的工作区
2、是用TF undo命令进行强制撤销签出
演示:
1、项目中有同事签出了文件,如下图1所示:
图1 签出了文件
2、使用tf comman,可以在开始程序里打开,如图2所示:
图2 vs command
也可以在路径:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\下打开,注意这里的路径和 $\command7\IDE的路径有所不同。
3、使用tf workspaces查看工作区,如下图所示:
输入的命令行是:
tf workspaces /owner:rareserver\limingfei /computer:*
命令解释:
Tf workspaces /owner:域名\用户名 /computer:*
可以查看到工作区有两个:songfx和win-lmfpc,这里我们确认是win-lmfpc
4、使用tf undo命令进行强制撤消签出,输入命令:
tf undo /workspace:win-lm
fpc;rareserver\limingfei $/POSManagement/SourceCode/RareBusinessServer/NexusLibr
ary/Models/OilCanInfo.cs
命令解释:
tf undo /workspace:工作区;域名\用户名 $文件路径/文件名.扩展名
有关文件路径可以在团队资源管理器的source location里取到,执行命令后的界面如下:
在命令行界面已经提升操作成功了,回到tfs的团队资源管理器界面确认一下,点击“刷新”按钮,刷新一下,效果如下图所示:
上图中有一个文件已经撤消签出了,重复以上步骤把另一个文件也可以强制撤销签出。
实际上我们使用undo命令还可以对某个文件夹和子文件夹的所有更改进行操作。