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


Experimentally, I'll move GitHub sync from post-update hook to update hook, which blocks git push a little more. Still most of the behavior would be the same, but you might feel git push became slower.

----------------------------------------
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-80655

* Author: k0kubun (Takashi Kokubun)
* Status: Open
* 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>