From 1722e96bb01feb13139e4be095c034e90dfadbbe Mon Sep 17 00:00:00 2001 From: Justin Geibel Date: Sat, 3 Dec 2011 17:01:01 -0500 Subject: [PATCH] Change default branch behaviour for git repos #749 If git repository HEAD points to a branch, use that as the default branch. Otherwise fall back to previous method. --- lib/redmine/scm/adapters/git_adapter.rb | 7 +++++++ test/unit/lib/redmine/scm/adapters/git_adapter_test.rb | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/lib/redmine/scm/adapters/git_adapter.rb b/lib/redmine/scm/adapters/git_adapter.rb index 8f3008df..e1932da7 100644 --- a/lib/redmine/scm/adapters/git_adapter.rb +++ b/lib/redmine/scm/adapters/git_adapter.rb @@ -100,6 +100,13 @@ module Redmine def default_branch bras = self.branches return nil if bras.nil? + head = nil + scm_cmd('symbolic-ref', 'HEAD') do |io| + head = io.readline + end + /^refs\/heads\/(.*)$/.match(head) + bras.include?($1) ? $1 : bras.first + rescue ScmCommandAborted, EOFError bras.include?('master') ? 'master' : bras.first end diff --git a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb index acee7b90..15724417 100644 --- a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb +++ b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb @@ -231,6 +231,13 @@ begin end end + def test_default_branch + @adapter.send :scm_cmd, 'branch', '-m', 'master', 'non-master-default-branch' + assert_equal 'non-master-default-branch', @adapter.default_branch + ensure + @adapter.send :scm_cmd, 'branch', '-m', 'non-master-default-branch', 'master' + end + private def test_scm_version_for(scm_command_version, version)