From 4d6f012f104c32d227e627ce6aa36761159227dd Mon Sep 17 00:00:00 2001 From: MAEDA Go Date: Thu, 24 Sep 2026 16:42:08 +0900 Subject: [PATCH 2/2] Improve readability of GitAdapter#branches --- lib/redmine/scm/adapters/git_adapter.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/redmine/scm/adapters/git_adapter.rb b/lib/redmine/scm/adapters/git_adapter.rb index d6dec455f..fbdbe8eec 100644 --- a/lib/redmine/scm/adapters/git_adapter.rb +++ b/lib/redmine/scm/adapters/git_adapter.rb @@ -79,14 +79,16 @@ module Redmine cmd_args = %w|branch --no-color --verbose --no-abbrev| git_cmd(cmd_args) do |io| io.each_line do |line| - branch_rev = line.match('\s*(\*?)\s*(.*?)\s+([0-9a-f]{40}).*$') - next unless branch_rev - - bran = GitBranch.new(scm_iconv('UTF-8', @path_encoding, branch_rev[2])) - bran.revision = branch_rev[3] - bran.scmid = branch_rev[3] - bran.is_default = (branch_rev[1] == '*') - @branches << bran + # e.g. "* main 2a682156a3b6e77a8bf9cd4590e8db757f3c6c78 Add foo.txt" + # ("*" marks the current branch; the columns are padded with spaces) + m = line.match(/\s*(?\*?)\s*(?.*?)\s+(?[0-9a-f]{40}).*$/) + next unless m + + branch = GitBranch.new(scm_iconv('UTF-8', @path_encoding, m[:name])) + branch.revision = m[:rev] + branch.scmid = m[:rev] + branch.is_default = (m[:current] == '*') + @branches << branch end end @branches.sort! -- 2.55.0