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.
v 7.9.0 (unreleased)
- Update documentation for object_kind field in Webhook push and tag push Webhooks (Stan Hu)
- 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)
- 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)
......
......@@ -329,7 +329,11 @@ namespace :gitlab do
if correct_options.all?
puts "yes".green
else
puts "no".red
print "Trying to fix Git error automatically. ..."
if auto_fix_git_config(options)
puts "Success".green
else
puts "Failed".red
try_fixing_it(
sudo_gitlab("\"#{Gitlab.config.git.bin_path}\" config --global user.name \"#{options["user.name"]}\""),
sudo_gitlab("\"#{Gitlab.config.git.bin_path}\" config --global user.email \"#{options["user.email"]}\""),
......@@ -338,7 +342,7 @@ namespace :gitlab do
for_more_information(
see_installation_guide_section "GitLab"
)
fix_and_rerun
end
end
end
end
......@@ -806,3 +810,4 @@ namespace :gitlab do
end
end
end
......@@ -112,4 +112,20 @@ namespace :gitlab do
@warned_user_not_gitlab = true
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
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