【发布时间】:2013-07-02 17:37:57
【问题描述】:
任何人都知道这(生成统一差异)是否可行,如果可行,如何实现?
谢谢。
【问题讨论】:
-
Creating a Patch with TFS 的可能重复项
标签: tfs
任何人都知道这(生成统一差异)是否可行,如果可行,如何实现?
谢谢。
【问题讨论】:
标签: tfs
它是tf diff /shelveset:<set> /format:unified。但是,请注意,与大多数现代版本控制系统不同,TFS 实际上不能处理补丁文件 afaik。也就是说,您不能获取 diff 的结果并将其应用于一组文件以获取结果更改。 (大多数人所做的是将更改的文件压缩起来,然后将其替换为“补丁”。哎呀。)
【讨论】:
这是我通常做的:
从 tf 命令行生成统一的 diff 得到补丁文件
tf diff /recursive /format:unified . >> diff.patch
应用补丁
patch.exe -p0 < diff.patch
显然,这假定源文件已经被签出。如果它们不是,特别是当您跨分支应用补丁时,请编写一个简单的 shell 脚本来遍历 diff 文件,获取文件路径并 tf 编辑它们。
【讨论】:
这是与 SubVersion 和其他版本的持续功能差异(请原谅双关语),即 recognised by Microsoft。我相信解决方案很快就会出现,但在那之前我已经想出了一个解决方案:
构建一个 windows 窗体应用程序,它将 4 个字段作为命令行参数(filepath1、label1、filepath2、label2)并返回两个文件的字符串统一差异(可能输出到富文本框或其他东西) .我有一个,但我相信使用 CodePlex 有点粗糙。有一些托管的 Diff 库。
将 Visual Studio 的源代码控制比较函数设置为指向您的差异应用程序。确保它正确打开和比较。
构建一个 Windows 窗体补丁应用程序,它将补丁应用到一个文件夹。应用程序还必须在修补时检查每个文件(有趣!)。
设置两个工作区,一个是常用的,一个是 MyWkSpace_PATCH。这是用来打补丁的。
我仍然需要完成第 3 点,但这会给我带来与 SubVersion 有点相似的功能。会让你知道第 3 点的进展情况!
【讨论】: