From d97beec1d4cc773dd8fb8a5245efb040235f86b1 Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Sun, 30 Apr 2023 04:00:57 +0000 Subject: Add "View annotation prior to this change" button in the annotate view of Git (#35432). Patch by Takenori TAKAKI. git-svn-id: https://svn.redmine.org/redmine/trunk@22217 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/scm/adapters/abstract_adapter.rb | 6 ++++-- lib/redmine/scm/adapters/git_adapter.rb | 6 +++++- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'lib/redmine/scm') diff --git a/lib/redmine/scm/adapters/abstract_adapter.rb b/lib/redmine/scm/adapters/abstract_adapter.rb index 88a62fd6d..8e74086c5 100644 --- a/lib/redmine/scm/adapters/abstract_adapter.rb +++ b/lib/redmine/scm/adapters/abstract_adapter.rb @@ -423,16 +423,18 @@ module Redmine end class Annotate - attr_reader :lines, :revisions + attr_reader :lines, :revisions, :previous_annotations def initialize @lines = [] @revisions = [] + @previous_annotations = [] end - def add_line(line, revision) + def add_line(line, revision, previous=nil) @lines << line @revisions << revision + @previous_annotations << previous end def content diff --git a/lib/redmine/scm/adapters/git_adapter.rb b/lib/redmine/scm/adapters/git_adapter.rb index 0c916c283..f4c3902e2 100644 --- a/lib/redmine/scm/adapters/git_adapter.rb +++ b/lib/redmine/scm/adapters/git_adapter.rb @@ -376,11 +376,14 @@ module Redmine identifier = '' # git shows commit author on the first occurrence only authors_by_commit = {} + prev_blames_by_commit = {} content.split("\n").each do |line| if line =~ /^([0-9a-f]{39,40})\s.*/ identifier = $1 elsif line =~ /^author (.+)/ authors_by_commit[identifier] = $1.strip + elsif line =~ /^previous (.+)/ + prev_blames_by_commit[identifier] = $1.strip elsif line =~ /^\t(.*)/ blame.add_line( $1, @@ -389,7 +392,8 @@ module Redmine :revision => identifier, :scmid => identifier, :author => authors_by_commit[identifier] - ) + ), + prev_blames_by_commit[identifier] ) identifier = '' author = '' -- cgit v1.2.3