SCM:
* add latest changesets for the current directory when browsing the repository and a link to the full log * ability to diff a directory (#3575) git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2849 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
71abeb5898
commit
5b97570693
|
@ -72,9 +72,7 @@ class RepositoriesController < ApplicationController
|
||||||
@entries ? render(:partial => 'dir_list_content') : render(:nothing => true)
|
@entries ? render(:partial => 'dir_list_content') : render(:nothing => true)
|
||||||
else
|
else
|
||||||
show_error_not_found and return unless @entries
|
show_error_not_found and return unless @entries
|
||||||
if @path.blank?
|
@changesets = @repository.latest_changesets(@path, @rev)
|
||||||
@changesets = @repository.latest_changesets(@path, @rev)
|
|
||||||
end
|
|
||||||
@properties = @repository.properties(@path, @rev)
|
@properties = @repository.properties(@path, @rev)
|
||||||
render :action => 'show'
|
render :action => 'show'
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
<% if @entry && @entry.kind == 'file' %>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<%= link_to_if action_name != 'changes', l(:label_history), {:action => 'changes', :id => @project, :path => to_path_param(@path), :rev => @rev } %> |
|
<%= link_to_if action_name != 'changes', l(:label_history), {:action => 'changes', :id => @project, :path => to_path_param(@path), :rev => @rev } %> |
|
||||||
<% if @repository.supports_cat? %>
|
<% if @repository.supports_cat? %>
|
||||||
|
@ -9,3 +11,5 @@
|
||||||
<%= link_to(l(:button_download), {:action => 'entry', :id => @project, :path => to_path_param(@path), :rev => @rev, :format => 'raw' }) if @repository.supports_cat? %>
|
<%= link_to(l(:button_download), {:action => 'entry', :id => @project, :path => to_path_param(@path), :rev => @rev, :format => 'raw' }) if @repository.supports_cat? %>
|
||||||
<%= "(#{number_to_human_size(@entry.size)})" if @entry.size %>
|
<%= "(#{number_to_human_size(@entry.size)})" if @entry.size %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<th><%= l(:field_comments) %></th>
|
<th><%= l(:field_comments) %></th>
|
||||||
</tr></thead>
|
</tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<% show_diff = entry && entry.is_file? && revisions.size > 1 %>
|
<% show_diff = revisions.size > 1 %>
|
||||||
<% line_num = 1 %>
|
<% line_num = 1 %>
|
||||||
<% revisions.each do |changeset| %>
|
<% revisions.each do |changeset| %>
|
||||||
<tr class="changeset <%= cycle 'odd', 'even' %>">
|
<tr class="changeset <%= cycle 'odd', 'even' %>">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<h2><%= l(:label_revision) %> <%= format_revision(@rev) %> <%= @path.gsub(/^.*\//, '') %></h2>
|
<h2><%= l(:label_revision) %> <%= format_revision(@rev_to) + ':' if @rev_to %><%= format_revision(@rev) %> <%=h @path %></h2>
|
||||||
|
|
||||||
<!-- Choose view type -->
|
<!-- Choose view type -->
|
||||||
<% form_tag({}, :method => 'get') do %>
|
<% form_tag({}, :method => 'get') do %>
|
||||||
|
|
|
@ -14,8 +14,14 @@
|
||||||
|
|
||||||
<% if @changesets && !@changesets.empty? && authorize_for('repositories', 'revisions') %>
|
<% if @changesets && !@changesets.empty? && authorize_for('repositories', 'revisions') %>
|
||||||
<h3><%= l(:label_latest_revision_plural) %></h3>
|
<h3><%= l(:label_latest_revision_plural) %></h3>
|
||||||
<%= render :partial => 'revisions', :locals => {:project => @project, :path => '', :revisions => @changesets, :entry => nil }%>
|
<%= render :partial => 'revisions', :locals => {:project => @project, :path => @path, :revisions => @changesets, :entry => nil }%>
|
||||||
<p><%= link_to l(:label_view_all_revisions), :action => 'revisions', :id => @project %></p>
|
|
||||||
|
<% if @path.blank? %>
|
||||||
|
<p><%= link_to l(:label_view_all_revisions), :action => 'revisions', :id => @project %></p>
|
||||||
|
<% else %>
|
||||||
|
<p><%= link_to l(:label_view_revisions), :action => 'changes', :path => to_path_param(@path), :id => @project %></p>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<% content_for :header_tags do %>
|
<% content_for :header_tags do %>
|
||||||
<%= auto_discovery_link_tag(:atom, params.merge({:format => 'atom', :action => 'revisions', :id => @project, :page => nil, :key => User.current.rss_key})) %>
|
<%= auto_discovery_link_tag(:atom, params.merge({:format => 'atom', :action => 'revisions', :id => @project, :page => nil, :key => User.current.rss_key})) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -833,7 +833,7 @@ fr:
|
||||||
enumeration_activities: Activités (suivi du temps)
|
enumeration_activities: Activités (suivi du temps)
|
||||||
label_greater_or_equal: ">="
|
label_greater_or_equal: ">="
|
||||||
label_less_or_equal: "<="
|
label_less_or_equal: "<="
|
||||||
label_view_all_revisions: View all revisions
|
label_view_all_revisions: Voir toutes les révisions
|
||||||
label_tag: Tag
|
label_tag: Tag
|
||||||
label_branch: Branch
|
label_branch: Branch
|
||||||
error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
|
error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
|
||||||
|
|
|
@ -75,7 +75,7 @@ class RepositoriesSubversionControllerTest < Test::Unit::TestCase
|
||||||
assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'], assigns(:entries).collect(&:name)
|
assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'], assigns(:entries).collect(&:name)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_changes
|
def test_file_changes
|
||||||
get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ]
|
get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ]
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'changes'
|
assert_template 'changes'
|
||||||
|
@ -94,6 +94,16 @@ class RepositoriesSubversionControllerTest < Test::Unit::TestCase
|
||||||
:child => { :tag => 'span', :content => 'native' } }
|
:child => { :tag => 'span', :content => 'native' } }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_directory_changes
|
||||||
|
get :changes, :id => 1, :path => ['subversion_test', 'folder' ]
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'changes'
|
||||||
|
|
||||||
|
changesets = assigns(:changesets)
|
||||||
|
assert_not_nil changesets
|
||||||
|
assert_equal %w(7 6 5 2), changesets.collect(&:revision)
|
||||||
|
end
|
||||||
|
|
||||||
def test_entry
|
def test_entry
|
||||||
get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
|
get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c']
|
||||||
|
@ -181,11 +191,22 @@ class RepositoriesSubversionControllerTest < Test::Unit::TestCase
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_diff
|
def test_revision_diff
|
||||||
get :diff, :id => 1, :rev => 3
|
get :diff, :id => 1, :rev => 3
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_template 'diff'
|
assert_template 'diff'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_directory_diff
|
||||||
|
get :diff, :id => 1, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder']
|
||||||
|
assert_response :success
|
||||||
|
assert_template 'diff'
|
||||||
|
|
||||||
|
diff = assigns(:diff)
|
||||||
|
assert_not_nil diff
|
||||||
|
# 2 files modified
|
||||||
|
assert_equal 2, Redmine::UnifiedDiff.new(diff).size
|
||||||
|
end
|
||||||
|
|
||||||
def test_annotate
|
def test_annotate
|
||||||
get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c']
|
get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c']
|
||||||
|
|
Loading…
Reference in New Issue