0

我需要生成补丁文件来恢复/撤消给定 SVN 提交的效果(不需要最后一个)。即如果某个字段被添加到类中,补丁需要删除这个字段,等等。

有没有自动生成这条路径的方法?还是我需要手动准备?

4

4 回答 4

1

可能你需要像

svn diff -r 123:124 > your.patch

其中 124 是您要还原的版本。

于 2013-07-18T08:11:02.327 回答
0

这篇文章帮助了我:http ://blog.johang.se/2009/03/revert-commit-in-subversion.html 。

或者,我可以在 Tortoise SVN 日志中使用“Revert commit”选项(可能也是如此)。

比,在工作副本中恢复提交后,我可以轻松地从本地更改生成补丁,这将满足我的需要。

于 2013-07-18T09:24:54.143 回答
0

像这样的调用svn diff -r 124:123会将补丁文件转储到标准输出,如果应用该补丁文件,则会将修订中记录的文件状态带到修订124中记录的状态123- 反转传递给-r命令行参数的修订会svn diff生成一个“反转”补丁。

另请注意,传统patch程序和svn patch命令都能够在被告知这样做时反向应用“正常”(“直接”)补丁——它们自己反转给定的补丁。

于 2013-07-18T09:53:12.447 回答
0

阅读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

于 2013-07-18T10:17:46.370 回答