SVN回滚

    xiaoxiao2021-04-11  31

    有的时候(如给客户进行特殊的部署),需要我们把代码回滚某一个版本,再给客户进行编译部署或客户端打包。SVN上和回滚相关的操作有好几个,在这里一一进行说明。

    SVN回滚的第一步往往都是show log

    然后选中某一个版本(以下代称为“目标版本”),右键,有如下几个选项

    1) Update item to revision 更新到此版本

    临时回滚。在给客户回滚代码打包时,常用这种方式。效果类似于在目标版本刚刚提交的当天你进行了SVN的正常更新,然后到今天为止一直没有再更新过代码,也没有在本地修改过代码。

    此时svn info,会显示目标版本版本号;

    此时在代码根目录选择svn commit,会发现没有任何代码需要提交;

    此时选择svn update,会更新到最新代码。

    2) Revert to this revision 回滚到此版本

    正式回滚。在最近连续1~N次提交都有问题时,常用这种方式。实现为将目标版本之后的所有提交,按时间顺序的逆序依次回滚,并将回滚的结果在本地生成更新。效果为SVN帮你在本地改了代码。要真正应用还需要进行提交,svn commit

    此时svn info,会显示最新版本版本号;

    此时在代码根目录选择svn commit,会发现有代码需要提交;

    此时选择svn update,一般没有代码更新。

    3) Revert changes from this revision 回滚此版本的修改

    正式回滚。在以往的某一次提交有问题时,常用这种方式。实现为将目标版本本身的那一次修改回滚,并将回滚的结果在本地生成更新。效果为SVN帮你在本地改了代码。要真正应用还需要进行提交,svn commit

    此时svn info,会显示最新版本版本号;

    此时在代码根目录选择svn commit,会发现有代码需要提交;

    此时选择svn update,一般没有代码更新。

    下面让我们举例说明。

    假设我们有一段代码:原始版本(版本1)如下:

    int a = 0;

    int b = 0;

    int c = 0;

    然后我们分别进行了3次修改和提交,分别是(红字表示变化的部分):

    版本2

    int a = 1;

    int b = 0;

    int c = 0;

    版本3

    int a = 1;

    int b = 1;

    int c = 0;

    版本4

    int a = 1;

    int b = 1;

    int c = 1;

    本地代码已经更新到最新(版本4),然后我们svn show log,选择版本2,右键,分别进行上述3种选择,结果是:

    1) Update item to revision 更新到此版本

    本地变为:

    int a = 1;

    int b = 0;

    int c = 0;

    svn commit不能提交。svn update会变回最新。

    2) Revert to this revision 回滚到此版本

    本地变为(同1):

    int a = 1;

    int b = 0;

    int c = 0;

    svn commit将更新到服务器。svn update不会修改本地。

    3) Revert changes from this revision 回滚此版本的修改

    本地变为:

    int a = 0;

    int b = 1;

    int c = 1;

    svn commit将更新到服务器。svn update不会修改本地。

    注意:如果代码有外链,则外链也需要回滚。如XtTradeClient的外链XtPlatform,在XtTradeClient根目录下回滚,XtPlatform不受影响,因此往往需要进入XtPlatform目录同步回滚。

     

    转载请注明原文地址: https://ju.6miu.com/read-666827.html

    最新回复(0)