aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/packages_controller.rb2
-rw-r--r--app/helpers/links_helper.rb17
-rw-r--r--app/models/commit.rb9
-rw-r--r--app/repositories/commit_repository.rb9
-rw-r--r--app/views/feeds/packages.atom.builder2
-rw-r--r--app/views/packages/_changelog.html.erb2
-rw-r--r--app/views/packages/_changelog_entry.html.erb19
-rw-r--r--lib/portage/util/history.rb23
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&amp;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&nbsp;<%= 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 %> &lt;<%= changelog.author_email %>&gt;</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%> &lt;<%= changelog.committer_email %>&gt;</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