svn上想回滚代码怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn上想回滚代码怎么办相关的知识,希望对你有一定的参考价值。

右键项目->TortoiseSVN->Show log->找到你要回滚到的文件版本,右键它->Revert to this version,这样,本地的这个文件就回滚了,然后就可以进行提交了 参考技术A 1. 在同一个 URL 上做 merge

3. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]

前面的例子其实是第 3 种用法,我们先看这个。假设 shell 里面当前路径就对应着 svn 上代码最上层目录,要实现上面的例子,可以直接这么写:

svn merge -r r2:r1 .

注意结尾有个“.”,表示将 diff 生效到当前路径。然后提交代码即可。

svn ci -m "rollback r2 -> r1"

2. 在不同的 URL 上做 merge

前面的例子要求远程代码 URL 跟本地代码对应的 URL 必须一致,即都在 trunk 上,或者都在同一个 branch 或者 tag
上。一般情况需要回滚代码、撤销某次修改,上面的命令足矣。而如果涉及到多个 branch 合并到 trunk 之类的问题,还需要继续往下看 :)

如何知道何时提交或回滚事务

【中文标题】如何知道何时提交或回滚事务【英文标题】:How to know when to Commit or Rollback a Transaction 【发布时间】:2018-05-27 18:19:53 【问题描述】:

我正在尝试了解如何以及何时提交 /rollback 事务。 我正在使用IF 条件来测试代码是否产生错误,如果是,我想回滚。

测试代码的最佳方法是什么,以便您知道何时提交或回滚。

我试过下面的代码,但我得到了这个错误

消息 102,级别 15,状态 1,第 5 行 '*' 附近的语法不正确。

Begin Transaction DBChallenge1Setup
 Create Table EmployeeRecords(
                            EmployeeID varchar(50) PRIMARY KEY
                            PpsNo varchar(8),
                            FirstName varchar(50),
                            LastName varchar(50),
                            Department varchar(50),
                            SupervisorId varchar(50),
                            PhoneNo varchar(50),
                            EmailAddress varchar(50),
                            DateOfBirth date);
Insert Into EmployeeRecords
                    Values(1, '5686213Q', 'Dan', 'Roche', 'IT',232, '012323232', 'danroche@itsolutions.com', '1970-04-10'),
                            (2, '6534223Q', 'Nicholas', 'Martin', 'IT',233, '012323233', 'nicholasmartin@itsolutions.com', '1974-12-01'),
                            (232, '9514223W', 'Jane', 'Donnelly', 'IT',999, '012323234', 'janedonnelly@itsolutions.com', '1960-02-12'),
                            (233, '4212223S', 'Amy', 'Smythe', 'IT',999, '012323235', 'amysmythe@itsolutions.com', '1967-09-11');

Select * From EmployeeRecords
Select @@Rowcount As RecordsEntered, @@ERROR As Errors
if @@Error > 0 ROLLBACK Transaction DBChallenge1Setup
if @@Error = 0 Commit Transaction DBChallenge1Setup;

【问题讨论】:

您使用的是什么关系型数据库?此外,* 给你一个错误。去掉它。并且您的 create 语句中的列之间没有 , 如何使用Try Catch 块。 我正在使用 SSMS。我已经添加了逗号。我需要 * 因为我想返回所有列。我不熟悉 Try Catch。但会查一下。我尝试先正确使用 Commit/Rollback。 CREATE 语句中 PRIMARY KEY 旁边的 * 就是我所说的删除。 对不起。我见过。我从 word doc 中复制了虚拟数据。 【参考方案1】:

我建议使用try/catch 来处理意外错误;

begin try
Begin Transaction DBChallenge1Setup
 Create Table EmployeeRecords(
                            EmployeeID varchar(50,) PRIMARY KEY
                            PpsNo varchar(8),
                            FirstName varchar(50),
                            LastName varchar(50),
                            Department varchar(50),
                            SupervisorId varchar(50),
                            PhoneNo varchar(50),
                            EmailAddress varchar(50),
                            DateOfBirth date)
Insert Into EmployeeRecords
                    Values(1, '5686213Q', 'Dan', 'Roche', 'IT',232, '012323232', 'danroche@itsolutions.com', '1970-04-10'),
                            (2, '6534223Q', 'Nicholas', 'Martin', 'IT',233, '012323233', 'nicholasmartin@itsolutions.com', '1974-12-01'),
                            (232, '9514223W', 'Jane', 'Donnelly', 'IT',999, '012323234', 'janedonnelly@itsolutions.com', '1960-02-12'),
                            (233, '4212223S', 'Amy', 'Smythe', 'IT',999, '012323235', 'amysmythe@itsolutions.com', '1967-09-11');
Commit Transaction DBChallenge1Setup;
end try
begin catch
   ROLLBACK Transaction DBChallenge1Setup
end catch

您应该在 catch 块内回滚事务。此外,最好使用 ERROR_MESSAGE() ERROR_SEVERITY() 等在 catch 块中记录发生的错误详细信息。

【讨论】:

在使用commit之前怎么知道tran是成功的 TRY 将控制是commit 还是转到CatchTRY 表示试试看,如果不行就去Catch 我的意思是尝试可能有效,但可能无法正常工作。在提交之前你怎么知道输入的数据是正确的 "输入的数据是正确的"什么意思?您想从 SQL Server 检查您的特定逻辑吗? 假设我在尝试中运行更新。更新可能会工作,但我怎么知道它工作正常。是否应该包含检查约束以在提交之前验证更新

以上是关于svn上想回滚代码怎么办的主要内容,如果未能解决你的问题,请参考以下文章

svn 被回滚的代码怎么重新提交

在eclipse里面使用SVN,怎么实现版本回滚

svn怎么版本还原?

在eclipse里面使用SVN,怎么实现版本回滚

在eclipse里面使用SVN,怎么实现版本回滚

在eclipse里面使用SVN,怎么实现版本回滚