Сейчас отличное время, чтобы участвовать в разработке Ruby. С повышенным
вниманием, которое получил Ruby в последние несколько лет, возрастает
потребность в талантах для улучшения Ruby и его документации.
Итак, с чего начать?
{: .summary}

Темы, относящиеся к разработке Ruby, рассмотренные здесь:

* [Использование Git для отслеживания разработки Ruby](#following-ruby)
* [Улучшаем Ruby, патч за патчем](#patching-ruby)
* [Заметка о ветках](#branches-ruby)

### Использование Git для отслеживания разработки Ruby
{: #following-ruby}

Текущий основной репозиторий с самым свежим исходным кодом Ruby —
[git.ruby-lang.org/ruby.git][gitrlo].
Также существует [зеркало на GitHub][7]. Обычно следует использовать это зеркало.

Вы можете получить последнюю версию исходного кода Ruby с помощью Git.
Из командной строки:

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>git clone https://github.com/ruby/ruby.git</code></pre></figure>

Директория `ruby` теперь будет содержать последнюю версию исходного
кода разрабатываемой версии Ruby (ruby-trunk).

Смотрите также [Руководство для не-коммиттеров по присоединению к нашей разработке][noncommitterhowto].

Если у вас есть доступ на коммит, и вы хотите запушить что-то,
вам следует использовать основной репозиторий.

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>git clone git@git.ruby-lang.org:ruby.git</code></pre></figure>

### Улучшаем Ruby, патч за патчем
{: #patching-ruby}

Команда разработчиков ядра использует [систему отслеживания задач][10] для приема патчей и
сообщений об ошибках для Matz и остальной команды. Эти отчеты также отправляются в
[почтовую рассылку Ruby-Core][mailing-lists] для обсуждения,
так что вы можете быть уверены, что ваш запрос не останется незамеченным. Вы также
можете отправлять свои патчи прямиком в почтовую рассылку. В любом случае, мы
призываем вас принять участие в последующем обсуждении.

Пожалуйста, просмотрите [Руководство по написанию патчей][writing-patches],
чтобы получить несколько советов от самого Matz о том, как добиться рассмотрения ваших патчей.

Подводя итог, шаги для создания патча:

1.  Клонируйте копию исходного кода Ruby с GitHub.
    Обычно патчи для исправления ошибок или новые функции должны отправляться
    для trunk (основной ветки) исходного кода Ruby.

        $ git clone https://github.com/ruby/ruby.git

    Если вы исправляете ошибку, специфичную только для одной поддерживаемой ветки,
    переключитесь на соответствующую ветку.

        $ git checkout ruby_X_X

    `X_X` следует заменить на версию, на которую вы хотите переключиться.

2.  Добавьте ваши улучшения в код.

3.  Создайте патч.

        $ git diff > ruby-changes.patch

4.  Создайте тикет в [системе отслеживания задач][10] или отправьте ваш патч на
    [почтовую рассылку Ruby-Core][mailing-lists] вместе с записью ChangeLog,
    описывающей патч.

5.  Если к патчу не будет вопросов, коммиттеры получат одобрение на его применение.

**Пожалуйста, обратите внимание:** патчи должны предоставляться в формате [unified diff][12].
Для получения дополнительной информации о том, как объединяются патчи, см. [справочник diffutils][13].

Обсуждение разработки Ruby происходит в
[почтовой рассылке Ruby-Core][mailing-lists]. Так что, если вам интересно,
стоит ли ваш патч внимания, или вы хотите начать обсуждение
будущего Ruby, не стесняйтесь присоединиться. Учтите, что
обсуждения не по теме не допускаются в этой рассылке, уровень шума
должен быть очень низким, темы должны быть конкретными, хорошо продуманными и
грамотно написанными. Поскольку мы обращаемся к создателю Ruby, давайте проявим
уважение.

Имейте в виду, что многие из основных разработчиков Ruby живут в Японии, и, хотя многие
из них очень хорошо говорят по-английски, существует значительная разница в часовых поясах.
У них также есть целый набор японских списков разработчиков, которые существуют
параллельно с английскими аналогами. Будьте терпеливы; если ваша заявка не
рассмотрена, будьте настойчивы — попробуйте еще раз через несколько дней.

### Заметка о ветках
{: #branches-ruby}

Исходный код Ruby управлялся в репозитории Subversion до 22 апреля 2019 года.
Таким образом, некоторые ветки всё ещё могут управляться в Subversion.
Вы можете посмотреть репозиторий SVN.

* [&lt;URL:https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?root=ruby&gt;][svn-viewvc]

Однако вам не нужно об этом беспокоиться (если вы не мейнтейнер ветки).
Вы можете переключаться на ветки в вашей рабочей копии Git.
Например, выполните следующую команду:

<figure class="highlight"><pre><code class="language-sh" data-lang="sh"><span class="nv">$ </span>git checkout ruby_X_X</code></pre></figure>

`X_X` следует заменить на версию, на которую вы хотите переключиться.

Если вы хотите изменить ветки, пожалуйста, откройте задачу в нашей [системе отслеживания задач][10].
Смотрите также следующий раздел.

[gitrlo]: https://git.ruby-lang.org/ruby.git
[mailing-lists]: /ru/community/mailing-lists/
[writing-patches]: /ru/community/ruby-core/writing-patches/
[noncommitterhowto]: https://github.com/shyouhei/ruby/wiki/noncommitterhowto
[svn-viewvc]: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?root=ruby
[7]: https://github.com/ruby/ruby
[10]: https://bugs.ruby-lang.org/
[12]: http://www.gnu.org/software/diffutils/manual/html_node/Unified-Format.html
[13]: http://www.gnu.org/software/diffutils/manual/html_node/Merging-with-patch.html#Merging%20with%20patch
