在项目中,昨日遇到一个问题,一位同事在目录中事先添加了一些文件,后来无法进行签入,截图如下:
笔者使用TFS命令行 的TF undo命令强制签入,提示如下错误信息:
,
当时很郁闷,以前遇到过类似问题,但都用命令行可以解决,经搜索,查到一位网友写的blog,他的思路从命令行转移到操作TFS本身的数据库表,在TFS数据库中有一个
TfsVersionControl库,这个数据库专门用于记录关于版本控制信息。在sql2005中使用以下sql语句:
select * from tbl_workspace where workspacename='工作区名称'
这句sql可以获取到上面问题工作区的id,
select * from tbl_pendingchange where workspaceid = 工作区id
这句sql可以根据工作区id查询到该工作区未提交的更改。
select * from tbl_lock where workspaceid = 工作区id
这句sql可以根据工作区id,查询到所有被锁定的项。
通过删除后2句sql查询到的内容,即可解锁被锁定的项。
上面只是解决了问题,但还没发现问题产生的原因,后来在沟通中,得到一个重要信息,该同事重新做了系统,并且在系统中默认添加了 一个工作区,这样在同一个电脑中,出现了新旧
2个工作区,重做系统前未签入的内容属于旧工作区,重做系统后使用新的工作区开发,而且2个工作区的映射目录还不同,这样导致同一台电脑在新工作区无法迁入与就工作区相同的文
件。
得出一条经验, 每台电脑的工作区尽量唯一,就算需要多个工作区,也不要多个工作区同时包含同一个项目,而且在重做电脑或类似情况,请先签入或撤销挂起的更改,避免造成类似情
况。