确定哪一方更改代码的最佳方法?

时间:2014-12-20 01:25:56

标签: visual-studio-2013 tfs

我有一个场景我希望有人能够帮助我思考并确定最好的处理方式。我使用的工具是Visual Studio 2013和TFS。

我们有一位开发人员突然离开我们公司,他为一个尚未签入的客户项目进行了大量的代码更改。我们在本地拥有代码库。我们还有客户端的TFS服务器和最新的代码。我没有他的更改文档,所以我的目标是找到他所做的所有代码更改。请记住,我也无法访问他的机器,我只能访问他正在处理的本地代码库,其中包括他的更改。

我首先将他的代码与客户在TFS上的代码进行比较,然后寻找变化。然而,自该开发人员开始研究该项目以来,客户端在2个月内也对其代码进行了一些更改。因此,在这两个月内,他在本地进行了一些更改,客户也进行了一些在TFS上检查的更改。

当我将他的代码与服务器上的最新代码副本进行比较时,我可以看到差异,但我似乎无法告诉谁进行了更改。如果某个方法被修改,我会看到TFS和本地代码中存在不同的版本,但我无法分辨谁进行了更改。客户端是否对代码进行了更改,而TFS上的较新版本使我的版本看起来过时了?或者这位开发人员是否对代码进行了更改,使服务器代码看起来过时了?由于我们的开发人员所做的更改未签入,因此我没有显示我对代码进行更改的历史记录。确定我们当地开发人员所做的更改的最佳方法是什么?

所以,总结一下:我已经将他的本地代码与服务器代码进行了比较,并且已经看到了差异,但客户端自从获得代码后也对代码进行了更改。因此,他的代码和服务器代码之间的差异可能是由于他的更改或客户端更改,但我不知道哪个。

1 个答案:

答案 0 :(得分:1)

我看到了一些方法可以让您的生活更轻松,但它需要您知道开发人员最初下载的版本。使用该版本(Changeset,Label,Date),您可以与本地工作区进行比较,并在服务器上查找该版本的所有更改。

工作区版本

您可以从命令行(以及Visual Studio)启动diff,但命令行更容易在Stack Overflow上发布:

tf folderdiff c:\sources "$/TFSProject/Path/To/Sources;C12345" /recursive
     /collection:http://your.client.tfsserver.com:8080/tfs/ProjectCollection 
     /view:different,sourceonly

C12345的位置,您可以输入用于在开发人员的计算机上创建工作区的变更集编号或标签(使用Llabelname而不是Cnumber)或(近似)日期(使用D2014-12-20)。

这将输出已在本地更改的文件列表,而不是用于创建工作区的版本。现在,您可以使用以下方式单独列出每个文件:

  

tf diff c:\sources\changedfile.cs /version:C12345

(如果使用标签或日期,则使用与上述相同的版本规范)。

如果工作区仍在TFS服务器上注册,并且要与工作区版本进行比较,还有另一种选择:

tf folderdiff c:\sources "$/TFSProject/Path/To/Sources;Wworkspacename;owner" /recursive 
     /collection:http://your.client.tfsserver.com:8080/tfs/ProjectCollection 
     /view:different,sourceonly`

其次是:

  

tf diff c:\sources\changedfile.cs /version:Wworkspacename;owner

为了执行此操作,您不需要拥有工作区,但服务器仍必须具有该服务器上该工作区的记录。您可以尝试使用以下命令查找工作区:

C:\Sources\>tf workspaces /owner:avanade-corp\jesse.houwing /computer:jessehouwing 
    /collection:http://your.client.tfsserver.com:8080/tfs/ProjectCollection

Collection: http://your.client.tfsserver.com:8080/tfs/ProjectCollection
Workspace               Owner         Computer     Comment
----------------------- ------------- ------------ ----------------------------
JESSEHOUWING            Jesse Houwing JESSEHOUWING

以上示例将导致:

tf folderdiff c:\sources "$/TFSProject/Path/To/Sources;WJESSEHOUWING;Jesse Houwing" /recursive 
     /collection:http://your.client.tfsserver.com:8080/tfs/ProjectCollection 
     /view:different,sourceonly

创建一个货架集

如果您确实可以选择访问系统(即使以其他用户身份登录),您可以获取工作区的所有权并创建更改的Shelveset。然后,您可以在更新的工作区上取消搁置这些更改,Visual Studio将提示您解决合并冲突。 TFS将知道对方做出了哪些更改,并尝试尽可能自动合并更改。