Skip to content

Commit f294e1f

Browse files
author
root
committed
Add feature from #338
1 parent 0a744a0 commit f294e1f

File tree

3 files changed

+67
-0
lines changed

3 files changed

+67
-0
lines changed

Diff for: app/services/gitolite_accessor.rb

+12
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,18 @@ def flush_settings_cache
8585
end
8686

8787

88+
def enable_readme_creation
89+
logger.info('Enable README creation for repositories')
90+
resync_gitolite(:enable_readme_creation, 'enable_readme_creation')
91+
end
92+
93+
94+
def disable_readme_creation
95+
logger.info('Disable README creation for repositories')
96+
resync_gitolite(:disable_readme_creation, 'disable_readme_creation')
97+
end
98+
99+
88100
private
89101

90102

Diff for: app/use_cases/apply_settings.rb

+6
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def apply_settings
4141
do_resync_ssh_keys
4242
do_flush_cache
4343
do_delete_trash_repo
44+
do_enable_readme_creation
4445
end
4546

4647

@@ -134,4 +135,9 @@ def do_delete_trash_repo
134135
GitoliteAccessor.purge_trash_bin(delete_trash_repo) if !delete_trash_repo.empty?
135136
end
136137

138+
139+
def do_enable_readme_creation
140+
valuehash[:init_repositories_on_create] == 'true' ? GitoliteAccessor.enable_readme_creation : GitoliteAccessor.disable_readme_creation
141+
end
142+
137143
end

Diff for: lib/redmine_git_hosting/gitolite_wrapper/projects.rb

+49
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,40 @@ def move_repositories_tree
5050
end
5151

5252

53+
def enable_readme_creation
54+
repo_conf = gitolite_config.repos['@all']
55+
if !repo_conf.nil?
56+
logger.info('README file creation already enabled.')
57+
return
58+
end
59+
60+
# Repository '@all' doesn't exist, create it.
61+
# TODO: update it if already exists (in case Administrator has modified it from another place)
62+
#
63+
admin.transaction do
64+
gitolite_config.add_repo(create_readme_config)
65+
gitolite_admin_repo_commit("Enable README file creation for repositories")
66+
end
67+
end
68+
69+
70+
def disable_readme_creation
71+
repo_conf = gitolite_config.repos['@all']
72+
if repo_conf.nil?
73+
logger.info('README file creation already disabled.')
74+
return
75+
end
76+
77+
# Repository '@all' exists, delete it.
78+
# TODO: remove only redmine_gitolite_admin_id_rsa key from repository permissions
79+
#
80+
admin.transaction do
81+
gitolite_config.rm_repo('@all')
82+
gitolite_admin_repo_commit("Disable README file creation for repositories")
83+
end
84+
end
85+
86+
5387
private
5488

5589

@@ -101,6 +135,21 @@ def clean_path(path_list)
101135
end
102136
end
103137

138+
139+
def create_readme_config
140+
repo_conf = ::Gitolite::Config::Repo.new('@all')
141+
repo_conf.permissions = create_readme_perms
142+
repo_conf
143+
end
144+
145+
146+
def create_readme_perms
147+
permissions = {}
148+
permissions['RW+'] = {}
149+
permissions['RW+'][''] = ['redmine_gitolite_admin_id_rsa']
150+
[permissions]
151+
end
152+
104153
end
105154
end
106155
end

0 commit comments

Comments
 (0)