Feature #8875 » 8875-manually-fetching-changesets.patch
app/controllers/repositories_controller.rb | ||
---|---|---|
100 | 100 | |
101 | 101 |
alias_method :browse, :show |
102 | 102 | |
103 |
def fetch_changesets |
|
104 |
@repository.fetch_changesets if @project.active? && @path.empty? && !Setting.autofetch_changesets? |
|
105 |
show |
|
106 |
end |
|
107 | ||
103 | 108 |
def changes |
104 | 109 |
@entry = @repository.entry(@path, @rev) |
105 | 110 |
(show_error_not_found; return) unless @entry |
app/views/repositories/_navigation.html.erb | ||
---|---|---|
19 | 19 |
<%= link_to_if_authorized l(:label_settings), |
20 | 20 |
{:controller => 'projects', :action => 'settings', :id => @project, :tab => 'repositories'}, |
21 | 21 |
:class => 'icon icon-settings' if User.current.allowed_to?(:manage_repository, @project) %> |
22 |
<%= link_to l(:label_fetch_changesets), |
|
23 |
{:action => :fetch_changesets, :id => @project, :repository_id => @repository.identifier_param}, |
|
24 |
:class => 'icon icon-reload' if User.current.allowed_to?(:browse_repository, @project) && !Setting.autofetch_changesets? %> |
|
22 | 25 |
<% end %> |
23 | 26 | |
24 | 27 |
<%= form_tag({:action => controller.action_name, |
config/locales/en.yml | ||
---|---|---|
802 | 802 |
label_repository: Repository |
803 | 803 |
label_repository_new: New repository |
804 | 804 |
label_repository_plural: Repositories |
805 |
label_fetch_changesets: Fetch changesets |
|
805 | 806 |
label_browse: Browse |
806 | 807 |
label_branch: Branch |
807 | 808 |
label_tag: Tag |
config/routes.rb | ||
---|---|---|
262 | 262 |
# repositories routes |
263 | 263 |
get 'projects/:id/repository/:repository_id/statistics', :to => 'repositories#stats' |
264 | 264 |
get 'projects/:id/repository/:repository_id/graph', :to => 'repositories#graph' |
265 |
get 'projects/:id/repository/:repository_id/fetch_changesets', :to => 'repositories#fetch_changesets' |
|
265 | 266 | |
266 | 267 |
get 'projects/:id/repository/:repository_id/revisions/:rev', :to => 'repositories#revision' |
267 | 268 |
get 'projects/:id/repository/:repository_id/revision', :to => 'repositories#revision' |
lib/redmine.rb | ||
---|---|---|
175 | 175 | |
176 | 176 |
map.project_module :repository do |map| |
177 | 177 |
map.permission :view_changesets, {:repositories => [:show, :revisions, :revision]}, :read => true |
178 |
map.permission :browse_repository, {:repositories => [:show, :browse, :entry, :raw, :annotate, :changes, :diff, :stats, :graph]}, :read => true |
|
178 |
map.permission :browse_repository, {:repositories => [:show, :browse, :entry, :raw, :annotate, :changes, :diff, :stats, :graph, :fetch_changesets]}, :read => true
|
|
179 | 179 |
map.permission :commit_access, {} |
180 | 180 |
map.permission :manage_related_issues, {:repositories => [:add_related_issue, :remove_related_issue]} |
181 | 181 |
map.permission :manage_repository, {:projects => :settings, :repositories => [:new, :create, :edit, :update, :committers, :destroy]}, :require => :member |
test/functional/repositories_controller_test.rb | ||
---|---|---|
205 | 205 |
end |
206 | 206 |
end |
207 | 207 | |
208 |
def test_fetch_changesets_with_autofetch_changesets_disabled_and_browse_repository_permission_should_fetch_changesets |
|
209 |
@request.session[:user_id] = 2 |
|
210 |
role = Role.find(1) |
|
211 | ||
212 |
with_settings :autofetch_changesets => '0' do |
|
213 |
role.add_permission! :browse_repository |
|
214 |
Repository::Subversion.any_instance.expects(:fetch_changesets).once |
|
215 |
get(:fetch_changesets, :params => {:id => 1, :repository_id => 10}) |
|
216 |
assert_response :success |
|
217 | ||
218 |
role.remove_permission! :browse_repository |
|
219 |
Repository::Subversion.any_instance.expects(:fetch_changesets).never |
|
220 |
get(:fetch_changesets, :params => {:id => 1, :repository_id => 10}) |
|
221 |
assert_response :forbidden |
|
222 |
end |
|
223 |
end |
|
224 | ||
208 | 225 |
def test_revisions |
209 | 226 |
get( |
210 | 227 |
:revisions, |