【问题标题】:Unified Diff in TFSTFS 中的统一差异
【发布时间】:2013-07-02 17:37:57
【问题描述】:

任何人都知道这(生成统一差异)是否可行,如果可行,如何实现?

谢谢。

【问题讨论】:

标签: tfs


【解决方案1】:

它是tf diff /shelveset:<set> /format:unified。但是,请注意,与大多数现代版本控制系统不同,TFS 实际上不能处理补丁文件 afaik。也就是说,您不能获取 diff 的结果并将其应用于一组文件以获取结果更改。 (大多数人所做的是将更改的文件压缩起来,然后将其替换为“补丁”。哎呀。)

【讨论】:

  • John,你知道如何将结果输出到 diff 工具而不是命令窗口吗?我偶然发现在做 /options:?在没有 /format:unified 选项的情况下会转到我的默认合并工具 (TortoiseMerge.exe),但我无法在打开统一选项的情况下让它去那里。另外,我只能看到我自己的搁置集 - 想查看团队的所有搁置集 - 这可能吗,还是我必须从服务器运行 tf.exe?
  • 完美 - 谢谢。对于像我这样可能不知道的其他人,tf.exe 就在这里(除非您安装在其他地方) - C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE。这是一个参考:tutorial.visualstudioteamsystem.com/details.aspx?item=38.
  • 我想出了如何让它输出到 .diff 文件。输入命令:“tf diff /format:unified [/shelveset:] >filename.diff” 然后,如果你安装了任何可以处理 .diff 格式的东西(比如 TortoiseSVN),只需打开它。瞧!
  • 对不起,直到现在我才看到你之前的 cmets。管道到标准输出几乎也是我想要的,所以听起来你已经准备好了!
  • 我在这里创建了一个功能请求:connect.microsoft.com/VisualStudio/feedback/details/631052/…
【解决方案2】:

这是我通常做的:

显然,这假定源文件已经被签出。如果它们不是,特别是当您跨分支应用补丁时,请编写一个简单的 shell 脚本来遍历 diff 文件,获取文件路径并 tf 编辑它们。

【讨论】:

  • 对于我的设置(windows 7,tfs 2013),从 tfs2013 创建补丁是可以的,但补丁实用程序无法将这些补丁应用于类似文件。响应是“在输入第 6 行找不到要修补的文件也许您使用了错误的 -p 或 --strip 选项?”
【解决方案3】:

这是与 SubVersion 和其他版本的持续功能差异(请原谅双关语),即 recognised by Microsoft。我相信解决方案很快就会出现,但在那之前我已经想出了一个解决方案:

  1. 构建一个 windows 窗体应用程序,它将 4 个字段作为命令行参数(filepath1、label1、filepath2、label2)并返回两个文件的字符串统一差异(可能输出到富文本框或其他东西) .我有一个,但我相信使用 CodePlex 有点粗糙。有一些托管的 Diff 库。

  2. 将 Visual Studio 的源代码控制比较函数设置为指向您的差异应用程序。确保它正确打开和比较。

  3. 构建一个 Windows 窗体补丁应用程序,它将补丁应用到一个文件夹。应用程序还必须在修补时检查每个文件(有趣!)。

  4. 设置两个工作区,一个是常用的,一个是 MyWkSpace_PATCH。这是用来打补丁的。

我仍然需要完成第 3 点,但这会给我带来与 SubVersion 有点相似的功能。会让你知道第 3 点的进展情况!

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 2011-04-26
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2011-03-14
    相关资源
    最近更新 更多