gpt4 book ai didi

tfs 统一 diff 文件生成。标题行与 patch 命令不匹配

转载 作者:行者123 更新时间:2023-12-03 00:32:13 24 4
gpt4 key购买 nike

我正在尝试生成 diff 文件(补丁文件)并将此补丁应用到某些已部署的文件夹。我正在运行以下命令来生成 diff 文件:

tf diff version.asp/format:unified > C:\patch.diff

它会生成如下内容:

将本地版本与最新版本进行比较:C:\dev\folder\version.asp
文件:版本.asp
=================================================== =================

--- version.asp (本地) 2011-06-17 09:18 文件名后面的文本不应出现在此处

+++ version.asp;958(服务器)2011-09-19 14:27 这里相同

@@ -13,7 +13,7 @@
'============================================================
Dim APP_VERSION, APP_BUILD, APP_DATE
APP_VERSION = 6
-APP_BUILD = 45
+APP_BUILD = 52
%>
\ No newline at end of file
============================================================

问题出现在粗体行上。 UNIX patch 应用程序无法识别文件名,因为这些行应仅包含文件名,而不包含任何附加信息。如果我删除这些行中文件名后面的文本,补丁将成功运行。所以我的问题是:是否可以从 tf diff 生成 diff 文件而不在 header 中包含此类信息,以便它与 patch 兼容?

还有一种替代方法,例如应用正则表达式并替换此类行,但这将是使其工作的最后一次尝试。

谢谢

更新

最后我得到了regex,它从行中删除了那些不必要的信息,使用Unix sed实用程序运行它,我从MinGW获得了Windows版本

sed "s/^\(+++\|---\)\(.*\)\(\.[A-Za-z0-9]\{1,4\}\)\(.*\)$/\1\2\3/"C:\patch.diff > C:\patch.new

patch.diff 是从 tfs 生成的格式错误的文件,输出上 patch.new 是正确的统一 diff 文件并与 兼容>补丁实用程序

更新2

经过几个小时的头撞墙后,我发现在从 tfs 生成的 diff 文件中,Unicode 扩展字符被简单地转义或替换为其最接近的 ASCII 表示形式。

例如,如果代码有 ä 字母,在输出 diff 文件中它将被替换为简单的 a 字母。

这使得从 tfs 实用程序生成的 diff 文件变得无用。

这显然是一个错误。

仅供引用:我正在使用 vs2010 和 Team Foundation Server 2010。

最佳答案

对于它的值(value),我也无法弄清楚。 TFS 使用/unified 创建格式错误的文件。

我使用本地 git 安装解决了这个问题:

(shelve change set)
tfpt scorch
git init
git add .
git commit -a -m "Original"
git checkout -b "New"
(checkout shelf in tfs)
git add .
git commit -a -m "Change"
git format-patch master

:/

关于tfs 统一 diff 文件生成。标题行与 patch 命令不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11620345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com