Issue #16094 has been updated by k0kubun (Takashi Kokubun).

Status changed from Open to Assigned

This is almost implemented. It's still under testing and only available for admin now, but you may see some usages for testing. I'll add one more guard and then enable "write" to merge pull requests for ruby-committers team.

I also noticed that I cannot choose either "Rebase and merge" or "Squash and merge" as the default merge behavior. When enabling both, "Squash and merge" is made always default. So it's shown by default. Of course, "Create a merge commit" mode is disabled as we discussed [Misc #16093].

----------------------------------------
Misc #16094: Allow only "Rebase and merge" or "Squash and merge" on GitHub, and sync it on git.ruby-lang.org pre-receive hook
https://bugs.ruby-lang.org/issues/16094#change-80656

* Author: k0kubun (Takashi Kokubun)
* Status: Assigned
* Priority: Normal
* Assignee: k0kubun (Takashi Kokubun)
----------------------------------------
## Problem
* Our pull request merge strategy confuses contributors, as described in [Misc #16093].
* In [Misc #16093], some committers did not like accepting a merge commit.

## Solution
* Allow using GitHub's "Rebase and merge" (suggested by @marcandre) and "Squash and merge" (for editing a commit message as needed) to committers
  * Disable "Create a merge commit" in GitHub repository settings, to avoid concerns found in [Misc #16093].
  * Also prohibit pushes to the master branch which are not coming from a pull request by requiring CI in GitHub repository settings.
  * To allow looking up an associated GitHub pull request from git commands, add `git notes` to "Rebase and merge"d commits in git.ruby-lang.org post-receive hook. (suggested by @nobu)
* Perform GitHub bidirectional sync on git.ruby-lang.org pre-receive hook, and accept a push if it does not conflict with "Rebase and merge" on GitHub.

## Notes
* Even after implementing this ticket, the Ruby's canonical Git repository will continue to be git.ruby-lang.org as is.
* All committers must push non-pull-request commits to git.ruby-lang.org. Direct pushes to GitHub will continue to be disabled.
* This approach has one drawback; `git push` to git.ruby-lang.org might block longer than now.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>