Mercurial Eclipse插件中的菜单项rollback,backout和strip之间有什么区别?
我是否可以删除本地存储库中的提交而无需使用这3个命令之一修改工作区中的文件?
或者是否有另一种解决方案如何提交并推动修复项目的另一部分?我目前的工作尚未完成,我无法推动它.但我必须快速修复项目的另一部分.
我看到的唯一解决方案是创建第二个工作区.但这看起来对我来说太过分了.
Github for Windows将这两个命令描述为:
revert this commit - 创建一个新的提交,以恢复此提交的更改rollback this commit - 回滚此提交,保留在此工作目录中提交的所有更改以及稍后的提交你能解释一下这两个命令的确切含义以及如何使用它们.具体来说,我不明白第二个目的是什么.对我来说完全是无稽之谈.
有可能恢复到先前的提交检查它,如果我不喜欢它,回到最初的位置?
这个gui似乎只是git系统的一小部分,但使用它的适当工作流程是什么?
如果我在SQL中创建存储过程并EXEC spStoredProcedure在BEGIN/END TRANSACTION中调用它(),那么其他存储过程是否也属于事务?
我不知道它是否像C#中的try/catches一样工作.
我有一个Web服务器,它服务于一个git存储库的项目.当我对代码进行一些更改时,然后从服务器执行git pull.有时新代码崩溃,我希望能够回滚到最新的拉动,就在之前.我想用脚本做到这一点,而不必搜索最新的sha.我怎样才能做到这一点?
编辑:只是为了澄清,我只想做一个动作,比如按下一个按钮,说"哎呀!我刚刚做的最新拉动是一个错误,我希望我没有这样做".我不想在这种情况下寻找sha或标签或其他任何东西,它更像是一个'撤消'功能.然后我希望能够继续处理代码,并且服务器上的下一次拉动需要带来最新的更改.
我遇到了问题,我发现的所有文章或例子似乎都不关心它.
我想在事务中执行一些数据库操作.我想做的与大多数例子非常相似:
using (SqlConnection Conn = new SqlConnection(_ConnectionString))
{
try
{
Conn.Open();
SqlTransaction Trans = Conn.BeginTransaction();
using (SqlCommand Com = new SqlCommand(ComText, Conn))
{
/* DB work */
}
}
catch (Exception Ex)
{
Trans.Rollback();
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是SqlTransaction Trans在try块内声明了.所以它在catch()块中是不可访问的.大多数例子只是在阻止之前Conn.Open()和Conn.BeginTransaction()之前try,但我认为这有点风险,因为两者都可以抛出多个异常.
我错了,还是大多数人都忽略了这种风险?如果发生异常,什么是能够回滚的最佳解决方案?
如果在mysql命令列表上发生任何错误,是否可以自动回滚?
例如:
begin transaction;
insert into myTable values1 ...
insert into myTable values2 ...; -- will throw an error
commit;
Run Code Online (Sandbox Code Playgroud)
现在,在执行我希望整个交易失败,因此我应该不看到值1在myTable的.但不幸的是,即使事务有错误,表也会被值1傀儡.
我有什么想法让它回滚?(再次,任何错误)?
编辑 - 从DDL更改为标准SQL
我在EJB3无状态会话bean中使用CMT.我也创建了自己的Exception,其注释为"@ApplicationException(rollback = true)".
当我想要回滚事务时,是否必须使用"context.setRollbackOnly()"?
我可以通过在bean中的public方法中抛出异常来回滚事务吗?
如果是这样(Q#2的答案是肯定的)我是否必须通过在方法中声明异常来抛出异常,或者仅仅在方法内抛出异常并在同一方法中处理它就足够了本身?(我不想将异常传播到下一个级别.我只想回滚异常.)
提前致谢.;)
我有一张桌子
create table testtable(
testtable_rid serial not null,
data integer not null,
constraint pk_testtable primary key(testtable_rid)
);
Run Code Online (Sandbox Code Playgroud)
所以我要说这个代码约20次:
begin;
insert into testtable (data) values (0);
rollback;
Run Code Online (Sandbox Code Playgroud)
然后我做
begin;
insert into testtable (data) values (0);
commit;
Run Code Online (Sandbox Code Playgroud)
最后一个
select * from testtable
Run Code Online (Sandbox Code Playgroud)
Result: row0: testtable_rid=21 | data=0 Expected result: row0: testtable_rid=1 | data=0
如您所见,序列似乎不受事务回滚的影响.它们继续递增,就好像提交了事务一样,然后删除了该行.有没有办法防止序列以这种方式表现?
rollback ×10
transactions ×4
mysql ×3
sql ×3
ado.net ×1
c# ×1
eclipse ×1
ejb-3.0 ×1
git ×1
github ×1
java ×1
java-ee ×1
mercurial ×1
postgresql ×1
revert ×1
sql-delete ×1
sql-server ×1