and send a pull request to it if it exists.
+
+### Git
+
+* Since April 23, 2019, we mainly use Git for Ruby's version control
+ * `master` and `ruby_2_7` (and future stable branches) are only managed by Git.
+ * `ruby_2_6` and older branches are managed by SVN, but they're synced to Git.
+* Branching
+ * `master` is for development.
+ * `ruby_*_*` branches are for stable versions. Branch maintainers backport `master` commits to them.
+* Git repositories
+ * Mirror (fetch *and merge pull requests*): https://github.com/ruby/ruby.git
+ * To avoid overloading the master server, it's strongly recommended to use this for `git fetch` or `git clone`.
+ * **You may not directly push commits to `master` branch on GitHub, but you can merge pull requests** and they'll be automatically synced to the master repository.
+ * You need to be in ruby organization's ruby-committers team on GitHub to have access to merge pull requests. Ask @hsbt to get invited.
+ * Even if you have access to, you may not create a topic branch on GitHub ruby/ruby . Use your own fork to create a pull request.
+ * Both "Squash and merge" and "Rebase and merge" are allowed. Feel free to use what you prefer.
+ * Master (for committer's push): https://git.ruby-lang.org/ruby.git
+ * You need to have your git commit's email address on [git.ruby-lang.org/config/email.yml](https://github.com/ruby/git.ruby-lang.org/blob/master/config/email.yml) to push commits to this repository.
+* Setup:
+ For committing, push to git@git.ruby-lang.org:ruby.git
+
+ ```
+ $ git clone --depth=1000 https://github.com/ruby/ruby # use a favorite depth
+ Cloning into 'ruby'...
+ ...
+ $ cd ruby
+ $ git config --add remote.origin.fetch '+refs/notes/commits:refs/notes/commits'
+ $ git fetch
+ ..
+ From https://github.com/ruby/ruby
+ * [new ref] refs/notes/commits -> refs/notes/commits
+ ```
+
+* Configuration for ssh
+ * Learn how to use ssh-agent. Don't repeat yourself.
+ * Read ssh_config(5).
+* Never commit two or more changesets as one commit.
+* Commit log
+ * Referencing related tickets is a good idea. Redmine automatically updates the tickets with a reference to the commit.
+ Example is like following:
+ * filename.c (rb_xxx_yyy): short description of this commit.
+ fixes [Bug #XXXX] [ruby-core:XXXX].
+ (rb_zzz_aaa): yet another part.
+
+ * filename.h (MACRO_NAME): value changed. see [Feature #XXXX]
+ * Include the original revision hash in case of a backport
+ * Write as fix https://github.com/ruby/ruby/pull/XXXX
to refer tickets in Github. Do not write as [Github fixes #XXXX]
, it confuses with redmine's ticket.
+ * Write as [skip ci]
to skip Travis CI, if the commit only changes documents and you are sure.
+ * Fold by 80 columns
+ * You can command the Redmine in a commit message.
+ * [[redmine:VersionControlSystem]]
+ * `make change` will write change.log which you can fill in and copy to commit message.
+
+## Continuous Integration (CI)
+
+After you commit, check that CI stays green. [List of CI servers used for Ruby](https://bugs.ruby-lang.org/projects/ruby/wiki/CIServers)
+
+* https://github.com/ruby/ruby/actions
+* https://rubyci.org/
+* http://ci.rvm.jp/
+
+## Documentation
+
+### RDoc
+
+Writing RDocs is preferred: see [Documentation Guide](https://docs.ruby-lang.org/en/master/contributing/documentation_guide_md.html)
+
+### Reference manual
+
+* [Object oriented scripting language Ruby - Reference manual](https://docs.ruby-lang.org/)
+
+## Redmine
+
+* You can edit any wiki page. (login required)
+* Feature request or bug report on [redmine](http://redmine.ruby-lang.org/projects/show/redmine)
+* Send an email to <its-admin AT ruby-lang.org> for administration request.
+* You can incorporate mails in ruby-core and ruby-dev ML by Mail to issue
.
+
+### Statuses
+
+* Open: a new ticket
+* Assigned: some people are considered qualified (this doesn't mean they are working on the ticket; you can take over it)
+* Feedback: waiting a reaction of the reporter (or someone who can solve deadlock)
+* Third Party's Issue: the ticket is completed because the issue is not Ruby's; Ruby itself is not changed
+* Rejected: the ticket is completed because the issue is invalid or some reason; Ruby itself is not changed
+* Closed: the ticket is completed; Ruby is fixed and maybe it needs to be backported
+
+### Backport field
+
+This is advanced field.
+If you want to know the detail, see [[HowToBackport]].
+
+## Misc
+
+* Tools for compilation
+ * autoconf (2.60 or later)
+ * bison
+ * ruby (building ruby from source needs ruby)
+* Test cases
+ * Adding test cases (bootstraptest / test)
+ * Testing test cases
+ * make test
+ * make test-all
+ * "make check" executes both test and test-all.
+* Integration with [ruby/spec](https://github.com/ruby/spec/)
+ * `make test-spec MSPECOPT='-j'` for running specs
+ * Feel free to add and modify specs under `spec/ruby` (see `spec/README.md`).
+ * Specs are synchronized ~monthly by eregon
+* diff format
+ * unified diff (-u)
+ * -p
+* GitHub: https://github.com/ruby/ruby
+* cgit: https://git.ruby-lang.org/ruby.git
+* ML : ruby-dev, ruby-list, ruby-core, ruby-talk
+* commit mail (ruby-cvs)
+* NEWS
+ * Add an entry when you add a feature or change a spec.
+
+## See also
+
+* [[DeveloperHowTo]]
+* [[Maintainers]]