diff options
-rw-r--r-- | app/controllers/packages_controller.rb | 2 | ||||
-rw-r--r-- | app/helpers/links_helper.rb | 17 | ||||
-rw-r--r-- | app/models/commit.rb | 9 | ||||
-rw-r--r-- | app/repositories/commit_repository.rb | 9 | ||||
-rw-r--r-- | app/views/feeds/packages.atom.builder | 2 | ||||
-rw-r--r-- | app/views/packages/_changelog.html.erb | 2 | ||||
-rw-r--r-- | app/views/packages/_changelog_entry.html.erb | 19 | ||||
-rw-r--r-- | lib/portage/util/history.rb | 23 |
8 files changed, 63 insertions, 20 deletions
diff --git a/app/controllers/packages_controller.rb b/app/controllers/packages_controller.rb index 3a4779a..905f9f1 100644 --- a/app/controllers/packages_controller.rb +++ b/app/controllers/packages_controller.rb @@ -42,7 +42,7 @@ class PackagesController < ApplicationController if stale?(etag: @package.updated_at, last_modified: @package.updated_at, public: true) @changelog = Rails.cache.fetch("changelog/#{@package.atom}") do - CommitRepository.find_sorted_by('packages', @package.category + '/' + @package.name, 'date', 'desc', 5) + CommitRepository.find_sorted_by('packages', @package.category + '/' + @package.name, 'committer_date', 'desc', 5) end respond_to do |wants| diff --git a/app/helpers/links_helper.rb b/app/helpers/links_helper.rb index bcdad83..afed16f 100644 --- a/app/helpers/links_helper.rb +++ b/app/helpers/links_helper.rb @@ -1,3 +1,5 @@ +require 'digest/md5' + module LinksHelper # Slash-in-Link-Fix # Replaces the URLencoded slash with a proper slash @@ -12,6 +14,21 @@ module LinksHelper class: 'kk-commit' end + def full_link_to_gitweb_commit(commitid) + link_to commitid, + gitweb_commit_url(commitid), + title: commitid, + class: 'kk-commit' + end + + def gitweb_patch_url(commitid) + 'https://gitweb.gentoo.org/repo/gentoo.git/patch/?id=%s' % commitid + end + + def gravatar_url(email) + 'https://www.gravatar.com/avatar/' + Digest::MD5.hexdigest(email.downcase).to_s + '?s=13&d=retro' + end + def gitweb_commit_url(commitid) 'https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=%s' % commitid end diff --git a/app/models/commit.rb b/app/models/commit.rb index 7989236..0809846 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -3,9 +3,12 @@ class Commit include ActiveModel::Validations ATTRIBUTES = %i[id - author - email - date + author_name + author_email + author_date + committer_name + committer_email + committer_date message files packages diff --git a/app/repositories/commit_repository.rb b/app/repositories/commit_repository.rb index a6e0b33..dc46b71 100644 --- a/app/repositories/commit_repository.rb +++ b/app/repositories/commit_repository.rb @@ -11,9 +11,12 @@ class CommitRepository < BaseRepository mapping dynamic: 'strict' do indexes :id, type: 'keyword' - indexes :author, type: 'keyword' - indexes :email, type: 'keyword' - indexes :date, type: 'date' + indexes :author_name, type: 'keyword' + indexes :author_email, type: 'keyword' + indexes :author_date, type: 'date' + indexes :committer_name, type: 'keyword' + indexes :committer_email, type: 'keyword' + indexes :committer_date, type: 'date' indexes :message, type: 'text' indexes :files do indexes :modified, type: 'keyword' diff --git a/app/views/feeds/packages.atom.builder b/app/views/feeds/packages.atom.builder index ad617b9..776510c 100644 --- a/app/views/feeds/packages.atom.builder +++ b/app/views/feeds/packages.atom.builder @@ -28,7 +28,7 @@ atom_feed(id: atom_id(@feed_type, @feed_id, 'feed')) do |feed| id: atom_id(@feed_type, @feed_id, id), url: absolute_link_to_package(atom) ) do |entry| - entry.updated commit ? commit.date.to_datetime.rfc3339 : Time.now.to_datetime.rfc3339 + entry.updated commit ? commit.author_date.to_datetime.rfc3339 : Time.now.to_datetime.rfc3339 entry.title(t(:feed_keyworded_title, atom: atom, diff --git a/app/views/packages/_changelog.html.erb b/app/views/packages/_changelog.html.erb index b08e2c6..afc10dd 100644 --- a/app/views/packages/_changelog.html.erb +++ b/app/views/packages/_changelog.html.erb @@ -1,4 +1,4 @@ -<div class="card"> +<div class="card mb-4"> <div class="card-header"> <h4 class="mb-0">Changelog</h4> </div> diff --git a/app/views/packages/_changelog_entry.html.erb b/app/views/packages/_changelog_entry.html.erb index b3c1442..c6a2e32 100644 --- a/app/views/packages/_changelog_entry.html.erb +++ b/app/views/packages/_changelog_entry.html.erb @@ -1,9 +1,22 @@ <li class="list-group-item"> <strong><%= annotate_bugs changelog.message.lines.first %></strong> <div class="kk-byline"> - <%= mail_to changelog.email, changelog.author %>, - <%= i18n_date(changelog.date) %>, - commit <%= link_to_gitweb_commit changelog.id%> + <table> + <tr> + <td class="pr-3">author </td> + <td class="pr-3"><img class="rounded-sm inline" src="<%= gravatar_url changelog.author_email %>"> <%= changelog.author_name %> <<%= changelog.author_email %>></td> + <td><%= i18n_date(changelog.author_date) %></td> + </tr> + <tr> + <td class="pr-3">committer </td> + <td class="pr-3"><img class="rounded-sm inline" src="<%= gravatar_url changelog.committer_email %>"> <%= changelog.committer_name%> <<%= changelog.committer_email %>></td> + <td><%= i18n_date(changelog.committer_date) %></td> + </tr> + <tr> + <td class="pr-3">commit </td> + <td colspan="2"><%= full_link_to_gitweb_commit changelog.id%> (<a href="<%= gitweb_patch_url changelog.id%>">patch</a>)</td> + </tr> + </table> </div> <table class="table table-condensed kk-changelog-diffstat"> diff --git a/lib/portage/util/history.rb b/lib/portage/util/history.rb index c6f7111..1e158ff 100644 --- a/lib/portage/util/history.rb +++ b/lib/portage/util/history.rb @@ -6,7 +6,7 @@ class Portage::Util::History return [] if KKULEOMI_DISABLE_GIT == true latest_commit_id = KKULEOMI_FIRST_COMMIT - latest_commit = CommitRepository.n_sorted_by(1, 'date', 'desc').first + latest_commit = CommitRepository.n_sorted_by(1, 'committer_date', 'desc').first latest_commit_id = latest_commit.id unless latest_commit.nil? @@ -14,7 +14,7 @@ class Portage::Util::History .cmd(KKULEOMI_GIT) .in(KKULEOMI_RUNTIME_PORTDIR) .args( - 'log', '--name-status', '--no-merges', '--date=iso8601', '--reverse', + 'log', '--name-status', '--no-merges', '--date=iso8601', '--format=fuller', '--reverse', "#{latest_commit_id}..HEAD") .run @@ -35,10 +35,14 @@ class Portage::Util::History _id = commit_lines.shift.gsub('commit ', '').strip commit_lines.shift =~ /^Author:\s+(.*) <([^>]*)>$/ - _author = $1 - _email = $2 + _author_name = $1 + _author_email = $2 + _author_date = Time.parse(commit_lines.shift[/^AuthorDate:\s+(.*)$/, 1]).utc - _date = Time.parse(commit_lines.shift[/^Date:\s+(.*)$/, 1]).utc + commit_lines.shift =~ /^Commit:\s+(.*) <([^>]*)>$/ + _committer_name = $1 + _committer_email = $2 + _committer_date = Time.parse(commit_lines.shift[/^CommitDate:\s+(.*)$/, 1]).utc commit_lines.shift _raw_message = [] @@ -66,9 +70,12 @@ class Portage::Util::History commit = Commit.new commit.id = _id - commit.author = _author - commit.email = _email - commit.date = _date + commit.author_name = _author_name + commit.author_email = _author_email + commit.author_date = _author_date + commit.committer_name = _committer_name + commit.committer_email = _committer_email + commit.committer_date = _committer_date commit.message = _raw_message.map { |l| l.strip }.join("\n") commit.files = _files commit.packages = _packages.to_set |