diff --git a/lib/redmine/scm/adapters/abstract_adapter.rb b/lib/redmine/scm/adapters/abstract_adapter.rb index 720a4e9d9..c93fc6350 100644 --- a/lib/redmine/scm/adapters/abstract_adapter.rb +++ b/lib/redmine/scm/adapters/abstract_adapter.rb @@ -112,9 +112,15 @@ module Redmine def shellout(cmd, &block) logger.debug "Shelling out: #{cmd}" if logger && logger.debug? - IO.popen(cmd, "r+") do |io| - io.close_write - block.call(io) if block_given? + begin + IO.popen(cmd, "r+") do |io| + io.close_write + block.call(io) if block_given? + end + rescue Errno::ENOENT => e + # The command failed, log it and re-raise + log.error("SCM command failed: #{cmd}\n with: #{e.message}") + raise CommandFailed end end end diff --git a/lib/redmine/scm/adapters/bazaar_adapter.rb b/lib/redmine/scm/adapters/bazaar_adapter.rb index 4d7afeacc..11a44b7cf 100644 --- a/lib/redmine/scm/adapters/bazaar_adapter.rb +++ b/lib/redmine/scm/adapters/bazaar_adapter.rb @@ -40,7 +40,7 @@ module Redmine end return nil if $? && $?.exitstatus != 0 info - rescue Errno::ENOENT => e + rescue CommandFailed return nil end @@ -81,8 +81,6 @@ module Redmine return nil if $? && $?.exitstatus != 0 logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? entries.sort_by_name - rescue Errno::ENOENT => e - raise CommandFailed end def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) @@ -144,8 +142,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 revisions - rescue Errno::ENOENT => e - raise CommandFailed end def diff(path, identifier_from, identifier_to=nil, type="inline") @@ -163,9 +159,7 @@ module Redmine end end #return nil if $? && $?.exitstatus != 0 - DiffTableList.new diff, type - rescue Errno::ENOENT => e - raise CommandFailed + DiffTableList.new diff, type end def cat(path, identifier=nil) @@ -179,8 +173,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 cat - rescue Errno::ENOENT => e - raise CommandFailed end def annotate(path, identifier=nil) @@ -198,8 +190,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 blame - rescue Errno::ENOENT => e - raise CommandFailed end end end diff --git a/lib/redmine/scm/adapters/cvs_adapter.rb b/lib/redmine/scm/adapters/cvs_adapter.rb index 5c6c1775b..73dc9b6c4 100644 --- a/lib/redmine/scm/adapters/cvs_adapter.rb +++ b/lib/redmine/scm/adapters/cvs_adapter.rb @@ -103,8 +103,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 entries.sort_by_name - rescue Errno::ENOENT => e - raise CommandFailed end STARTLOG="----------------------------" @@ -234,8 +232,6 @@ module Redmine end end end - rescue Errno::ENOENT => e - raise CommandFailed end def diff(path, identifier_from, identifier_to=nil, type="inline") @@ -250,8 +246,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 DiffTableList.new diff, type - rescue Errno::ENOENT => e - raise CommandFailed end def cat(path, identifier=nil) @@ -265,8 +259,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 cat - rescue Errno::ENOENT => e - raise CommandFailed end def annotate(path, identifier=nil) @@ -283,8 +275,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 blame - rescue Errno::ENOENT => e - raise CommandFailed end private diff --git a/lib/redmine/scm/adapters/darcs_adapter.rb b/lib/redmine/scm/adapters/darcs_adapter.rb index 34b36202b..2955b26dc 100644 --- a/lib/redmine/scm/adapters/darcs_adapter.rb +++ b/lib/redmine/scm/adapters/darcs_adapter.rb @@ -70,8 +70,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 entries.sort_by_name - rescue Errno::ENOENT => e - raise CommandFailed end def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) @@ -99,8 +97,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 revisions - rescue Errno::ENOENT => e - raise CommandFailed end def diff(path, identifier_from, identifier_to=nil, type="inline") @@ -117,8 +113,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 DiffTableList.new diff, type - rescue Errno::ENOENT => e - raise CommandFailed end private @@ -154,7 +148,7 @@ module Redmine end end paths - rescue Errno::ENOENT => e + rescue CommandFailed paths end end diff --git a/lib/redmine/scm/adapters/mercurial_adapter.rb b/lib/redmine/scm/adapters/mercurial_adapter.rb index 3cbf01f91..1b9cab47c 100644 --- a/lib/redmine/scm/adapters/mercurial_adapter.rb +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb @@ -36,7 +36,7 @@ module Redmine :lastrev => revisions(nil,nil,nil,{:limit => 1}).last }) info - rescue Errno::ENOENT => e + rescue CommandFailed return nil end @@ -58,8 +58,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 entries.sort_by_name - rescue Errno::ENOENT => e - raise CommandFailed end def entry(path=nil, identifier=nil) @@ -119,8 +117,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 revisions - rescue Errno::ENOENT => e - raise CommandFailed end def diff(path, identifier_from, identifier_to=nil, type="inline") @@ -140,9 +136,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 DiffTableList.new diff, type - - rescue Errno::ENOENT => e - raise CommandFailed end def cat(path, identifier=nil) @@ -154,8 +147,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 cat - rescue Errno::ENOENT => e - raise CommandFailed end def annotate(path, identifier=nil) @@ -173,8 +164,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 blame - rescue Errno::ENOENT => e - raise CommandFailed end end end diff --git a/lib/redmine/scm/adapters/subversion_adapter.rb b/lib/redmine/scm/adapters/subversion_adapter.rb index d55b8712e..f698f4a62 100644 --- a/lib/redmine/scm/adapters/subversion_adapter.rb +++ b/lib/redmine/scm/adapters/subversion_adapter.rb @@ -47,7 +47,7 @@ module Redmine end return nil if $? && $?.exitstatus != 0 info - rescue Errno::ENOENT => e + rescue CommandFailed return nil end @@ -91,8 +91,6 @@ module Redmine return nil if $? && $?.exitstatus != 0 logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? entries.sort_by_name - rescue Errno::ENOENT => e - raise CommandFailed end def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) @@ -130,8 +128,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 revisions - rescue Errno::ENOENT => e - raise CommandFailed end def diff(path, identifier_from, identifier_to=nil, type="inline") @@ -154,8 +150,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 DiffTableList.new diff, type - rescue Errno::ENOENT => e - raise CommandFailed end def cat(path, identifier=nil) @@ -169,8 +163,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 cat - rescue Errno::ENOENT => e - raise CommandFailed end def annotate(path, identifier=nil) @@ -186,8 +178,6 @@ module Redmine end return nil if $? && $?.exitstatus != 0 blame - rescue Errno::ENOENT => e - raise CommandFailed end private