Commit d500a79d authored by Hannes Rosenögger's avatar Hannes Rosenögger

Merge branch 'auto-config-git' into 'master'

Auto config git if user forgot

If git is not configured properly, let gitlab:check try to fix it by executing the commands itself instead of outputing how the user could fix it.

If this fails the error is still displayed.

Edit;
Not yet added to the CHANGELOG as;
* Im not really sure this fits in the scope of a test
* No clue how to test this properly

See merge request !383
parents bacb05c5 67f55d9b
...@@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date. ...@@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date.
v 7.9.0 (unreleased) v 7.9.0 (unreleased)
- Update documentation for object_kind field in Webhook push and tag push Webhooks (Stan Hu) - Update documentation for object_kind field in Webhook push and tag push Webhooks (Stan Hu)
- Fix broken email images (Hannes Rosenögger) - Fix broken email images (Hannes Rosenögger)
- Automaticly config git if user forgot, where possible
- Fix mass SQL statements on initial push (Hannes Rosenögger) - Fix mass SQL statements on initial push (Hannes Rosenögger)
- Add tag push notifications and normalize HipChat and Slack messages to be consistent (Stan Hu) - Add tag push notifications and normalize HipChat and Slack messages to be consistent (Stan Hu)
- Add comment notification events to HipChat and Slack services (Stan Hu) - Add comment notification events to HipChat and Slack services (Stan Hu)
......
...@@ -329,16 +329,20 @@ namespace :gitlab do ...@@ -329,16 +329,20 @@ namespace :gitlab do
if correct_options.all? if correct_options.all?
puts "yes".green puts "yes".green
else else
puts "no".red print "Trying to fix Git error automatically. ..."
try_fixing_it( if auto_fix_git_config(options)
sudo_gitlab("\"#{Gitlab.config.git.bin_path}\" config --global user.name \"#{options["user.name"]}\""), puts "Success".green
sudo_gitlab("\"#{Gitlab.config.git.bin_path}\" config --global user.email \"#{options["user.email"]}\""), else
sudo_gitlab("\"#{Gitlab.config.git.bin_path}\" config --global core.autocrlf \"#{options["core.autocrlf"]}\"") puts "Failed".red
) try_fixing_it(
for_more_information( sudo_gitlab("\"#{Gitlab.config.git.bin_path}\" config --global user.name \"#{options["user.name"]}\""),
see_installation_guide_section "GitLab" sudo_gitlab("\"#{Gitlab.config.git.bin_path}\" config --global user.email \"#{options["user.email"]}\""),
) sudo_gitlab("\"#{Gitlab.config.git.bin_path}\" config --global core.autocrlf \"#{options["core.autocrlf"]}\"")
fix_and_rerun )
for_more_information(
see_installation_guide_section "GitLab"
)
end
end end
end end
end end
...@@ -806,3 +810,4 @@ namespace :gitlab do ...@@ -806,3 +810,4 @@ namespace :gitlab do
end end
end end
end end
...@@ -112,4 +112,20 @@ namespace :gitlab do ...@@ -112,4 +112,20 @@ namespace :gitlab do
@warned_user_not_gitlab = true @warned_user_not_gitlab = true
end end
end end
# Tries to configure git itself
#
# Returns true if all subcommands were successfull (according to their exit code)
# Returns false if any or all subcommands failed.
def auto_fix_git_config(options)
if !@warned_user_not_gitlab && options['user.email'] != 'example@example.com' # default email should be overridden?
command_success = options.map do |name, value|
system(%W(#{Gitlab.config.git.bin_path} config --global #{name} #{value}))
end
command_success.all?
else
false
end
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment