有人知道是否可以生成统一的差异,并且如果可以,应该如何操作吗?
谢谢。
这是tf diff /shelveset:<set> /format:unified
。然而,需要注意的是,与大多数现代版本控制系统不同,据我所知TFS实际上无法使用修补程序文件。也就是说,您不能将差异的结果应用于一组文件以获得相应的更改。(大多数人所做的是压缩更改的文件并且替换为“补丁”,非常不理想。)
这是我通常做的:
从tf命令行生成统一的差异(diff)以获取补丁文件
tf diff /recursive /format:unified . >> diff.patch
使用以下命令应用补丁
patch.exe -p0 < diff.patch
显然,这假设源文件已经检出。如果没有,特别是在应用跨分支的补丁时,编写一个简单的 shell 脚本来遍历 diff 文件,获取文件路径并使用 tf edit 命令对其进行编辑。
这是SubVersion和其他版本控制工具中一个持续存在的特性差异(请原谅双关语),被微软所认可。我相信很快会出现解决方案,但在此之前,我已经想出了一个解决方案:
构建一个Windows窗体应用程序,它将接受4个字段作为命令行参数(filepath1、label1、filepath2、label2),并返回两个文件的字符串统一差异(可能输出到一个丰富的文本框或其他地方)。我有一个,但我认为它还不够完善,不能放在CodePlex上。有几个托管的Diff库。
将Visual Studio的源代码控制比较功能设置为指向您的差异应用程序。确保它能正确打开和比较。
构建一个Windows窗体补丁应用程序,它将把补丁应用到一个文件夹中。该应用程序还必须在每个文件被打补丁时进行检出(有趣!)。
设置两个工作区,一个是通常的工作区,另一个是MyWkSpace_PATCH。这用于打补丁。
我还需要完成第三点,但这将为我提供与SubVersion类似的功能。我会让你知道第三点进展如何!