我需要生成补丁文件来恢复/撤消给定 SVN 提交的效果(不需要最后一个)。即如果某个字段被添加到类中,补丁需要删除这个字段,等等。
有没有自动生成这条路径的方法?还是我需要手动准备?
可能你需要像
svn diff -r 123:124 > your.patch
其中 124 是您要还原的版本。
这篇文章帮助了我:http ://blog.johang.se/2009/03/revert-commit-in-subversion.html 。
或者,我可以在 Tortoise SVN 日志中使用“Revert commit”选项(可能也是如此)。
比,在工作副本中恢复提交后,我可以轻松地从本地更改生成补丁,这将满足我的需要。
像这样的调用svn diff -r 124:123
会将补丁文件转储到标准输出,如果应用该补丁文件,则会将修订中记录的文件状态带到修订124
中记录的状态123
- 反转传递给-r
命令行参数的修订会svn diff
生成一个“反转”补丁。
另请注意,传统patch
程序和svn patch
命令都能够在被告知这样做时反向应用“正常”(“直接”)补丁——它们自己反转给定的补丁。
阅读svn help diff
,注意关于 diff 的第二种形式,-c -M
特别是选项
比较两个样本差异输出
直接差异
>svn diff -c 1264 ...
Index: Yarnet.ini
===================================================================
--- Yarnet.ini (revision 1263)
+++ Yarnet.ini (revision 1264)
@@ -8,5 +8,8 @@
Image=Yarnet.bmp
City=╨п╤А╨╛╤Б╨╗╨░╨▓╨╗╤М
+5.159.112.0-5.159.119.255
+37.1.80.0-37.1.87.255
46.229.176.0-46.229.191.255
+185.10.128.0-185.10.131.255
212.232.32.0-212.232.63.255
\ No newline at end of file
反向差异
>svn diff -c -1264 ...
Index: Yarnet.ini
===================================================================
--- Yarnet.ini (revision 1264)
+++ Yarnet.ini (revision 1263)
@@ -8,8 +8,5 @@
Image=Yarnet.bmp
City=╨п╤А╨╛╤Б╨╗╨░╨▓╨╗╤М
-5.159.112.0-5.159.119.255
-37.1.80.0-37.1.87.255
46.229.176.0-46.229.191.255
-185.10.128.0-185.10.131.255
212.232.32.0-212.232.63.255
\ No newline at end of file
简答
撤消修订 M 的差异是
svn diff -c -M