Можно рассматривать другой репозиторий мерзавца в той же файловой системе как удаленный repo.
В первом, сделайте следующее:
git remote add <name> /path/to/other/repo/.git
git fetch <name>
git branch <name> <name>/master #optional
Теперь они - оба ответвления в едином репозитории. Можно переключиться между ними с контролем мерзавца, слиянием со слиянием мерзавца, и т.д.
См. ПОПРОБОВАТЬ ... CATCH (Transact-SQL)
CREATE PROCEDURE [dbo].[PL_GEN_PROVN_NO1]
@GAD_COMP_CODE VARCHAR(2) =NULL,
@@voucher_no numeric =null output
AS
BEGIN
begin try
-- your proc code
end try
begin catch
-- what you want to do in catch
end catch
END -- proc end
Transact-SQL немного сложнее, чем блоки try / catch в C # или C ++, из-за дополнительной сложности транзакций. Блок CATCH должен проверить функцию xact_state () и решить, может ли он выполнить фиксацию или должен выполнить откат. Я осветил эту тему в своем блоге, и у меня есть статья, в которой показано, как правильно обрабатывать транзакции в блоке try catch, включая возможные вложенные транзакции: Обработка исключений и вложенные транзакции.
create procedure [usp_my_procedure_name]
as
begin
set nocount on;
declare @trancount int;
set @trancount = @@trancount;
begin try
if @trancount = 0
begin transaction
else
save transaction usp_my_procedure_name;
-- Do the actual work here
lbexit:
if @trancount = 0
commit;
end try
begin catch
declare @error int, @message varchar(4000), @xstate int;
select @error = ERROR_NUMBER(),
@message = ERROR_MESSAGE(), @xstate = XACT_STATE();
if @xstate = -1
rollback;
if @xstate = 1 and @trancount = 0
rollback
if @xstate = 1 and @trancount > 0
rollback transaction usp_my_procedure_name;
raiserror ('usp_my_procedure_name: %d: %s', 16, 1, @error, @message) ;
return;
end catch
end