Merge pull request #40254 from prateekkish/default-main

Change default branch for new Rails projects and plugins to main
This commit is contained in:
Rafael França 2021-02-05 15:23:40 -05:00 committed by GitHub
commit abff811725
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 78 additions and 0 deletions

@ -1,3 +1,7 @@
* Change default branch for new Rails projects and plugins to `main`
*Prateek Choudhary*
* Add benchmark method that can be called from anywhere.
This method is used as a quick way to measure & log the speed of some code.

@ -73,6 +73,9 @@ def gitattributes
def version_control
if !options[:skip_git] && !options[:pretend]
run "git init", capture: options[:quiet], abort_on_failure: false
if user_default_branch.strip.empty?
`git symbolic-ref HEAD refs/heads/main`
end
end
end
@ -265,6 +268,11 @@ def vendor
def config_target_version
defined?(@config_target_version) ? @config_target_version : Rails::VERSION::STRING.to_f
end
private
def user_default_branch
@user_default_branch ||= `git config init.defaultbranch`
end
end
module Generators

@ -65,6 +65,9 @@ def gitignore
def version_control
if !options[:skip_git] && !options[:pretend]
run "git init", capture: options[:quiet], abort_on_failure: false
if user_default_branch.strip.empty?
`git symbolic-ref HEAD refs/heads/main`
end
end
end
@ -178,6 +181,11 @@ def gemfile_entry
append_file gemfile_in_app_path, entry
end
end
private
def user_default_branch
@user_default_branch ||= `git config init.defaultbranch`
end
end
module Generators

@ -1077,6 +1077,35 @@ def test_version_control_initializes_git_repo
assert_directory ".git"
end
def test_default_branch_main_without_user_default
current_default_branch = `git config --global init.defaultBranch`
`git config --global --unset init.defaultBranch`
run_generator [destination_root]
assert_file ".git/HEAD", /main/
ensure
if !current_default_branch.strip.empty?
`git config --global init.defaultBranch #{current_default_branch}`
end
end
def test_version_control_initializes_git_repo_with_user_default_branch
git_version = `git --version`[/\d+.\d+.\d+/]
return if Gem::Version.new(git_version) < Gem::Version.new("2.28.0")
current_default_branch = `git config --global init.defaultBranch`
`git config --global init.defaultBranch master`
run_generator [destination_root]
assert_file ".git/HEAD", /master/
ensure
if current_default_branch && current_default_branch.strip.empty?
`git config --global --unset init.defaultBranch`
elsif current_default_branch
`git config --global init.defaultBranch #{current_default_branch}`
end
end
def test_create_keeps
run_generator
folders_with_keep = %w(

@ -91,6 +91,35 @@ def test_initializes_git_repo
assert_directory ".git"
end
def test_initializes_git_repo_with_main_branch_without_user_default
current_default_branch = `git config --global init.defaultBranch`
`git config --global --unset init.defaultBranch`
run_generator
assert_file ".git/HEAD", /main/
ensure
if !current_default_branch.strip.empty?
`git config --global init.defaultBranch #{current_default_branch}`
end
end
def test_version_control_initializes_git_repo_with_user_default_branch
git_version = `git --version`[/\d+.\d+.\d+/]
return if Gem::Version.new(git_version) < Gem::Version.new("2.28.0")
current_default_branch = `git config --global init.defaultBranch`
`git config --global init.defaultBranch master`
run_generator
assert_file ".git/HEAD", /master/
ensure
if current_default_branch && current_default_branch.strip.empty?
`git config --global --unset init.defaultBranch`
elsif current_default_branch
`git config --global init.defaultBranch #{current_default_branch}`
end
end
def test_generating_in_full_mode_with_almost_of_all_skip_options
run_generator [destination_root, "--full", "-M", "-O", "-C", "-S", "-T", "--skip-active-storage"]
assert_file "bin/rails" do |content|