天儿真好,
编辑:我想提一下,这个有点长的问题现在已经解决了,感谢Adam Goode在下面的回答,如果你只是在经过时略读.
我已经获得了一个补丁添加到Apache 2.2.14,并且一个统一的差异根本没有修补文件.我正在使用GNU补丁2.5.4.
我必须忽略空格,因为原始补丁不能很好地完成,即许多差异似乎是用于制表符 - >空格转换.这些差异甚至不太有用,因为补丁文件已经在交付链的某处修改过,例如svn repository,Jira system,web interface等,所以所有选项卡都已转换为空格了!
我在Solaris 10上使用的命令是:
/usr/bin/gpatch --verbose --ignore-whitespace -p1 -d . \
<mod_cache.diff
Run Code Online (Sandbox Code Playgroud)
输出是:
...
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|Index: httpd/modules/cache/mod_cache.h
|===================================================================
|--- httpd/modules/cache/mod_cache.h
|+++ httpd/modules/cache/mod_cache.h
--------------------------
Patching file modules/cache/mod_cache.h using Plan A...
Hunk #1 succeeded at 24.
Hunk #2 succeeded at 86.
Hunk #3 succeeded at 138.
Hunk #4 succeeded at 163.
Hunk #5 succeeded at …Run Code Online (Sandbox Code Playgroud) 我对任何自动更新解决方案都不感兴趣,例如ClickOnce或MS Updater Block.对于任何想要问为什么不这样做的人:我已经在使用这些并且它们没有任何问题,我只想了解任何有效的替代方案.
我想发布补丁 =小差异,这些差异将修改具有最小可能增量的部署的现有文件.不仅需要修补代码,还需要修补资源文件.修补正在运行的代码可以通过维护部署的两个单独的同步副本来实现(不需要动态更改正在运行的可执行文件).
应用程序本身可以部署xcopy(以避免MSI自动更正已修改的文件或破坏ClickOnce签名).
我想学习如何处理不同版本的补丁(如存在发布了一个补丁,修复一个错误,后来另外一个补丁,修复另一个错误(在同一个文件) - 用户可能有它们的任意组合,并有来自第三补丁 - 在文本文件中,这可能很容易实现,但可执行文件怎么样?(本机Win32代码与.NET,有什么不同?)
如果第一个问题是太难以解决或无法解决的可执行文件,我想至少学习是否有实现与串行版本简单的打补丁的解决方案 - 为了安装第5版,用户必须安装,以确保所有以前的版本部署的有效性.
这些补丁可以作为网站上的可下载文件发布 - 无需直接从正在运行的应用程序进行自动补丁功能.
有没有现成的解决方案来实现这一目标?
注意:关于SO的一些问题可能看起来像重复,但没有一个有很好的答案.
这个问题是关于Windows平台,最好是.NET.
到目前为止,wyUpdate似乎最适合这个问题.仍然对替代品感兴趣.
我的应用程序最初将与Windows Installer一起部署.
我正在寻找的解决方案的主要特点包括:
在应用程序运行时支持静默更新(或自动重启客户端)
易于维护和管理包装过程
避免复杂的自定义或安装脚本
你有什么想法我怎么能实现这个目标?即使它意味着修改应用程序代码以支持任何想法.
应用程序是.net 2.0
我的项目有以下结构
/project/config.mk
/project/dir1/config.mk -> ../config.mk
/project/dir2/config.mk -> ../config.mk
Run Code Online (Sandbox Code Playgroud)
当我diff以前创建补丁文件时,/project/config.mk已正确完成,但两个符号链接出现了一些问题.它们都被视为新文件,差异部分是config.mk文件的全部内容.我试图找到一个diff禁用跟随符号链接的选项,但没有这样的选项可用.任何建议表示赞赏.
作为Overbose的建议,我创建了这个脚本.有用.感谢大家抽出时间回答.
#!/bin/sh -v
ori_dir=$1
new_dir=$2
patch_file=./patch_file
if [ -f ${patch_file} ]
then
rm ${patch_file}
fi
ori_files=`cd ${ori_dir} ; find ./ -type f ! -type l`
for i in ${ori_files} ; do
if [ -f ${ori_dir}/$i ]
then
if [ -f ${new_dir}/$i ]
then
diff -rup ${ori_dir}/$i ${new_dir}/$i >> ${patch_file}
fi
fi
done
Run Code Online (Sandbox Code Playgroud) 我的服务器管理员告诉我PHP 5.2已被EOLed,因此没有收到任何错误修复.显然就是这种情况.他还告诉我5.2没有安全补丁,这表明我们应该尽快升级到5.3.
但是,我尊重的程序员告诉我,虽然PHP 5.2已经被修复了错误,但是在安全漏洞方面仍然非常受支持 - 至少到2012年.
我已经搜索了stackoverflow和谷歌的高低,但没有找到这个基本问题的答案.
有人关心我的无知吗?
运行SQL Server 2005.一个软件与我们的数据库集成.不幸的是,他们选择直接进行SQL查询而不是使用存储过程.现在我们已经更改了我们的数据库方案,并且有问题的查询不再有效.
是否可以在SQL Server上运行时修补T-SQL?
例如,当SQL Server获取SELECT A FROM InvalidTable特定数据库时,查询将SELECT A FROM ValidTable在执行之前转换为.
编辑: 这是有问题的查询:
SELECT * FROM DataTable c JOIN Users u ON u.UserName = @P0 AND c.DepartmentID = b2.DepartmentID WHERE c.Status = 0哪里DepartmentID搬到了另一张桌子!
我在那里关注了很多文章,但我仍然不知道如何在Cygwin中使用diff和patch
这里我在Windows资源管理器中创建2个文件
origin.txt
one
two
three
Run Code Online (Sandbox Code Playgroud)
new.txt
one
four
five
Run Code Online (Sandbox Code Playgroud)
然后我diff -u origin.txt new.txt > file.patch结果这个
--- origin.txt 2013-03-21 15:53:20.062956800 +0700
+++ new.txt 2013-03-21 15:53:29.191869600 +0700
@@ -1,3 +1,3 @@
one
-two
-three
\ No newline at end of file
+four
+five
\ No newline at end of file
Run Code Online (Sandbox Code Playgroud)
然后我patch origin.txt < file.patch显示错误
patching file origin.txt
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file origin.txt.rej
Run Code Online (Sandbox Code Playgroud)
怎么克服这个?这与Unix和Windows文件格式有关吗?
P/S:我正在使用CYGWIN_NT-6.1-WOW64和Windows …
我在这里理解这个故事:
LDR r0, [pc, 0x5678]相当于这个"C代码"
r0 = *(pc + 0x5678)它是使用基本偏移量解引用的指针.
我的问题是:
我找到了这段代码
LDR PC, [PC,-4]
它被评论为猴子修补等.
我如何理解这段代码
pc = *(pc - 4)
在这种情况下,"pc"寄存器将取消引用前一条指令的地址,并将包含指令的"机器代码"(不是指令的地址),程序将跳转到该无效地址继续执行,可能我们将"分段故障".那么我缺少或不理解?
让我思考的是LDR指令中第二个操作数的括号.据我所知,x86架构上的括号已经取消引用指针,但我无法理解ARM架构中的含义.
mov r1, 0x5678 add r1, pc mov r0, [r1]
这段代码相当于?
LDR r0, [pc, 0x5678]
我一直在阅读,可以将补丁应用到您的Android内核以为其提供更多功能。
这是一个示例:https : //patchwork.kernel.org/patch/2254211/
但是我的问题是,我究竟如何从头开始开发补丁?我对修补程序的编码语言以及开发内核修补程序所需的文档在哪里感到困惑。我已经在XDA开发人员中问过这个问题,但是似乎没人知道,这就是为什么我在这里问这个问题。
git am我正在运行上面的错误.手工比较我没有看到任何问题.有人可以指出错误在哪里吗?
$ git am 0012-Do-not-die-when-something-nasty-happen-in-the-comman.patch --reject
Applying: Do not die when something nasty happen in the command
Checking patch lib/Devel/DebugHooks/CmdProcessor.pm...
error: while searching for:
return 0 unless $cmd && exists $DB::commands->{ $cmd };
# The command also should return defined value to keep interaction
if( defined (my $result = $DB::commands->{ $cmd }( $args_str )) ) {
return $result unless ref $result;
# Allow commands to evaluate $expr at a debugged script context
error: patch failed: lib/Devel/DebugHooks/CmdProcessor.pm:14
Applying patch …Run Code Online (Sandbox Code Playgroud)