<div class="autoscroll">
<table class="filecontent annotate syntaxhl">
<tbody>
- <% line_num = 1 %>
+ <% line_num = 1; previous_revision = nil %>
<% syntax_highlight_lines(@path, Redmine::CodesetUtil.to_utf8_by_setting(@annotate.content)).each do |line| %>
<% revision = @annotate.revisions[line_num - 1] %>
<tr class="bloc-<%= revision.nil? ? 0 : colors[revision.identifier || revision.revision] %>">
<th class="line-num" id="L<%= line_num %>"><a href="#L<%= line_num %>"><%= line_num %></a></th>
<td class="revision">
- <%= (revision.identifier ? link_to_revision(revision, @repository) : format_revision(revision)) if revision %></td>
- <td class="author"><%= h(revision.author.to_s.split('<').first) if revision %></td>
+ <%= (revision.identifier ? link_to_revision(revision, @repository) : format_revision(revision)) if revision && revision != previous_revision %></td>
+ <td class="author"><%= h(revision.author.to_s.split('<').first) if revision && revision != previous_revision %></td>
<td class="line-code"><pre><%= line.html_safe %></pre></td>
</tr>
- <% line_num += 1 %>
+ <% line_num += 1; previous_revision = revision %>
<% end %>
</tbody>
</table>
def format_identifier
self.identifier.to_s
end
+
+ def ==(other)
+ if other.nil?
+ false
+ elsif scmid.present?
+ scmid == other.scmid
+ elsif identifier.present?
+ identifier == other.identifier
+ elsif revision.present?
+ revision == other.revision
+ end
+ end
end
class Annotate
# 1.1 line
assert_tag :tag => 'th',
:attributes => { :class => 'line-num' },
- :content => '18',
+ :content => '21',
:sibling => {
:tag => 'td',
:attributes => { :class => 'revision' },
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
assert_template 'annotate'
- # Line 24, changeset 2f9c0091
- assert_tag :tag => 'th', :content => '24',
+ # Line 23, changeset 2f9c0091
+ assert_tag :tag => 'th', :content => '23',
:sibling => {
:tag => 'td',
:child => {
:content => /2f9c0091/
}
}
- assert_tag :tag => 'th', :content => '24',
+ assert_tag :tag => 'th', :content => '23',
:sibling => { :tag => 'td', :content => /jsmith/ }
- assert_tag :tag => 'th', :content => '24',
+ assert_tag :tag => 'th', :content => '23',
:sibling => {
:tag => 'td',
:child => {
:content => /2f9c0091/
}
}
- assert_tag :tag => 'th', :content => '24',
- :sibling => { :tag => 'td', :content => /watcher =/ }
+ assert_tag :tag => 'th', :content => '23',
+ :sibling => { :tag => 'td', :content => /remove_watcher/ }
end
def test_annotate_at_given_revision
:path => repository_path_hash(['sources', 'watchers_controller.rb'])[:param]
assert_response :success
assert_template 'annotate'
- # Line 23, revision 4:def6d2f1254a
+ # Line 22, revision 4:def6d2f1254a
assert_tag :tag => 'th',
- :content => '23',
+ :content => '22',
:attributes => { :class => 'line-num' },
:sibling =>
{
:child => { :tag => 'a', :content => '4:def6d2f1254a' }
}
assert_tag :tag => 'th',
- :content => '23',
+ :content => '22',
:attributes => { :class => 'line-num' },
:sibling =>
{
:attributes => { :class => 'author' },
}
assert_tag :tag => 'th',
- :content => '23',
+ :content => '22',
:attributes => { :class => 'line-num' },
- :sibling => { :tag => 'td', :content => /watcher =/ }
+ :sibling => { :tag => 'td', :content => /remove_watcher/ }
end
def test_annotate_not_in_tip