]> source.dussan.org Git - redmine.git/commitdiff
Don't repeat revision on annotate view.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 28 Jul 2012 18:11:03 +0000 (18:11 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 28 Jul 2012 18:11:03 +0000 (18:11 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10105 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/repositories/annotate.html.erb
lib/redmine/scm/adapters/abstract_adapter.rb
test/functional/repositories_cvs_controller_test.rb
test/functional/repositories_git_controller_test.rb
test/functional/repositories_mercurial_controller_test.rb

index b09299ba86050c69ffc03ea36c6c6e45b5ef5cc2..1c4df65c4e384230c6c00b7c158dbb95d274c5b3 100644 (file)
 <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>
index feda1b3452b739f6c4fc637ba8c4ec08c50366f6..429d0f17c116cd2ea1b297cce588f894c69119c4 100644 (file)
@@ -366,6 +366,18 @@ module Redmine
         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
index e817cc5c6c2ffeca92ed875c21821907c69cf383..9a685754ef438d73428f2c95fb15a690a2a41613 100644 (file)
@@ -220,7 +220,7 @@ class RepositoriesCvsControllerTest < ActionController::TestCase
       # 1.1 line
       assert_tag :tag => 'th',
                  :attributes => { :class => 'line-num' },
-                 :content => '18',
+                 :content => '21',
                  :sibling => {
                    :tag => 'td',
                    :attributes => { :class => 'revision' },
index 35f65419ec5203f27ddc3dbd8421cdd5b52a40b9..786238493bea50ab7f1432411d1964d61ca7f023 100644 (file)
@@ -383,8 +383,8 @@ class RepositoriesGitControllerTest < ActionController::TestCase
           :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 => {
@@ -392,9 +392,9 @@ class RepositoriesGitControllerTest < ActionController::TestCase
                        :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 => {
@@ -402,8 +402,8 @@ class RepositoriesGitControllerTest < ActionController::TestCase
                        :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
index 78c20e053999915174c07e1428c5cf9e215cf1ea..42e3f589749b221a25e5cb1d6277f0e108e3d8f8 100644 (file)
@@ -376,9 +376,9 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
           :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 =>
                        {
@@ -387,7 +387,7 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
                          :child => { :tag => 'a', :content => '4:def6d2f1254a' }
                        }
       assert_tag :tag => 'th',
-                 :content => '23',
+                 :content => '22',
                  :attributes => { :class => 'line-num' },
                  :sibling =>
                        {
@@ -396,9 +396,9 @@ class RepositoriesMercurialControllerTest < ActionController::TestCase
                           :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