-
Notifications
You must be signed in to change notification settings - Fork 135
Open
Description
project.repo.object(revision) throws when it can't find the commit (the commit happened after the last time the repo was fetched).
E, [2017-03-13T09:01:24.885656 #27338] ERROR -- : -- ERROR IN OccurrencesWorker 49810320 --
E, [2017-03-13T09:01:24.885739 #27338] ERROR -- : git cat-file "-t" "6e96b806e7ba214246c08bf2c32618af2b261df3" 2>&1:error: unable to find 6e96b806e7ba214246c08bf2c32618af2b261df3
fatal: git cat-file 6e96b806e7ba214246c08bf2c32618af2b261df3: bad file
E, [2017-03-13T09:01:24.886029 #27338] ERROR -- : /home/web/.rvm/gems/ruby-2.3.0@squash/bundler/gems/ruby-git-eeab421f5ca7/lib/git/lib.rb:724:in `command'
/home/web/.rvm/gems/ruby-2.3.0@squash/bundler/gems/ruby-git-eeab421f5ca7/lib/git/lib.rb:136:in `object_type'
/home/web/.rvm/gems/ruby-2.3.0@squash/bundler/gems/ruby-git-eeab421f5ca7/lib/git/object.rb:262:in `new'
/home/web/.rvm/gems/ruby-2.3.0@squash/bundler/gems/ruby-git-eeab421f5ca7/lib/git/base.rb:153:in `object'
/var/www/apps/squash_20170319/lib/blamer/recency.rb:61:in `resolve_revision'
/var/www/apps/squash_20170319/lib/workers/occurrences_worker.rb:189:in `set_deploy_and_commit'
/var/www/apps/squash_20170319/lib/workers/occurrences_worker.rb:77:in `perform'
/var/www/apps/squash_20170319/lib/workers/occurrences_worker.rb:45:in `perform'
/var/www/apps/squash_20170319/lib/background_runner/multithread.rb:31:in `block in run'
/var/www/apps/squash_20170319/lib/multithread.rb:64:in `spinoff'
/var/www/apps/squash_20170319/lib/background_runner/multithread.rb:31:in `run'
/var/www/apps/squash_20170319/lib/background_runner.rb:38:in `run'
/var/www/apps/squash_20170319/app/controllers/api/v1_controller.rb:63:in `notify'
The code seems to expect it to return nil, when in fact it raises an exception. The fix:
diff --git a/lib/blamer/recency.rb b/lib/blamer/recency.rb
index 23a211f..d5ef0e4 100644
--- a/lib/blamer/recency.rb
+++ b/lib/blamer/recency.rb
@@ -58,7 +58,12 @@ module Blamer
class Recency < Base
def self.resolve_revision(project, revision)
- commit = project.repo.object(revision)
+ begin
+ commit = project.repo.object(revision)
+ rescue Git::GitExecuteError
+ # Try fetching
+ commit = nil
+ end
if commit.nil?
project.repo(&:fetch)
commit = project.repo.object(revision)
Metadata
Metadata
Assignees
Labels
No labels