有没有简单的方法来生成SVN中的提交路径还原?

时间:2013-07-18 07:52:31

标签: svn

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

有没有自动生成此路径的方法?或者我需要手动准备它?

4 个答案:

答案 0 :(得分:1)

可能你需要像

那样的smth
svn diff -r 123:124 > your.patch

其中124是您要还原的修订版。

答案 1 :(得分:0)

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

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

然而,如果在工作副本中恢复提交,我可以轻松地从本地更改生成补丁,这将完全符合我的需要。

答案 2 :(得分:0)

svn diff -r 124:123这样的调用会将补丁文件转储到stdout,如果应用,它会将修订版124中记录的文件状态转换为修订版{{}中记录的状态。 1}} - 反转传递给123 -r命令行参数的修订版生成一个“反向”补丁。

另请注意,传统的svn diff程序和patch命令都可以在被告知时反向应用“正常”(“直接”)补丁 - 它们会反转给定的补丁自己。

答案 3 :(得分:0)

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