From ca789bb2e82d4d2f9f574ccf5f968835ed6a74f4 Mon Sep 17 00:00:00 2001 From: Jens Kraemer Date: Thu, 12 May 2016 08:31:24 +0800 Subject: [PATCH] filter list of previous git heads to exclude those that don't exist any more --- app/models/repository/git.rb | 1 + lib/redmine/scm/adapters/git_adapter.rb | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/app/models/repository/git.rb b/app/models/repository/git.rb index 0873904..a8dcc75 100644 --- a/app/models/repository/git.rb +++ b/app/models/repository/git.rb @@ -150,6 +150,7 @@ class Repository::Git < Repository merge_extra_info(h) self.save end + prev_db_heads = scm.filter_heads prev_db_heads save_revisions(prev_db_heads, repo_heads) end diff --git a/lib/redmine/scm/adapters/git_adapter.rb b/lib/redmine/scm/adapters/git_adapter.rb index 52ecf69..f1ca826 100644 --- a/lib/redmine/scm/adapters/git_adapter.rb +++ b/lib/redmine/scm/adapters/git_adapter.rb @@ -191,6 +191,11 @@ module Redmine nil end + # returns a new heads array with non-existant revisions removed + def filter_heads(heads) + heads.reject{ |h| cat('', h).nil? } + end + def revisions(path, identifier_from, identifier_to, options={}) revs = Revisions.new cmd_args = %w|log --no-color --encoding=UTF-8 --raw --date=iso --pretty=fuller --parents --stdin| -- 2.1.4