From 443e21ed92aee684ce7b6581ac30566787e091a8 Mon Sep 17 00:00:00 2001 From: Cedric Gatay Date: Mon, 26 Dec 2011 21:35:25 +0100 Subject: [PATCH] Autolinks to issues in commit message (see #155) It matches #[0-9]+ in commit messages. For example * Fix for #12 * Code review for #56 * Test for #15, Review on #54, Fix for #42 It only links to valid issues (existing and belonging to the current project) It does not add any link to the commit in the issue page, it only consists in parsing the commit message when displayed. This can be considere as a primary work for the issue #155 on gitlabhq/gitlabhq. --- app/helpers/commits_helper.rb | 19 +++++++++++++++++++ app/views/commits/show.html.haml | 3 +-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb index 98ec9936..a18db9df 100644 --- a/app/helpers/commits_helper.rb +++ b/app/helpers/commits_helper.rb @@ -23,4 +23,23 @@ module CommitsHelper link_to "More", project_commits_path(@project, :offset => offset.to_i + limit.to_i, :limit => limit), :remote => true, :class => "lite_button vm", :style => "text-align:center; width:930px; ", :id => "more-commits-link" end + + def commit_msg_with_link_to_issues + out = "" + @commit.safe_message.split(/(#[0-9]+)/m).each do |m| + if m =~ /(#([0-9]+))/m + begin + issue = Issue.find($2) + raise Exception('Issue not belonging to current project, not creating link !') unless issue.project_id == @project.id + out+=link_to($1, project_issue_path(@project, $2)) + rescue + out+=$1 + end + else + out+= m + end + end + out + end + end diff --git a/app/views/commits/show.html.haml b/app/views/commits/show.html.haml index 57ada2df..8e97c857 100644 --- a/app/views/commits/show.html.haml +++ b/app/views/commits/show.html.haml @@ -18,8 +18,7 @@ %hr %pre.commit_message - = preserve @commit.safe_message - + = preserve get_commit_message_with_link_to_issues .clear %br