Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 78 additions & 116 deletions ru/community/ruby-core/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,167 +5,129 @@ lang: ru
---

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

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

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

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

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

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

{% highlight sh %}
$ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby
$ git clone https://github.com/ruby/ruby.git
{% endhighlight %}

Папка `ruby` теперь будет содержать последние исходники
development-версии Ruby (ruby-trunk). Патчи, применяемые к ruby-trunk
так же портируются в стабильные
{{ site.svn.stable.version }}, {{ site.svn.previous.version }},
и {{ site.svn.old.version }} ветки (смотри ниже).

Если вы хотите следить за патчингом Ruby {{ site.svn.stable.version }}, вы можете переключится
на `{{ site.svn.stable.branch }}` ветку:
Директория `ruby` теперь будет содержать последнюю версию исходного
кода разрабатываемой версии Ruby (ruby-trunk).

{% highlight sh %}
$ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.stable.branch }}
{% endhighlight %}
Смотрите также [Руководство для не-коммиттеров по присоединению к нашей разработке][noncommitterhowto].

То же самое для Ruby {{ site.svn.previous.version }}:
Если у вас есть доступ на коммит, и вы хотите запушить что-то,
вам следует использовать основной репозиторий.

{% highlight sh %}
$ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.previous.branch }}
$ git clone git@git.ruby-lang.org:ruby.git
{% endhighlight %}

Эти команды скачают соответствующее дерево разработки в папку
`{{ site.svn.stable.branch }}` или `{{ site.svn.previous.branch }}`.
Разработчики, работающие над поддерживаемыми ветками,
ожидают применения их изменений в ruby-trunk, так что зачастую обе ветки
очень похожи, за исключением изменений, сделанных Matz'ем и Nobu в языке
в целом.

Если вы предпочитаете, вы можете открыть [Subversion репозиторий Ruby в
браузере][2].

Для информации по поводу Subversion, пожалуйста смотрите [the Subversion FAQ][3]
и книгу [the Subversion book][4]. Еще вы можете найти полезной для начала
изучения Subversion книгу [Pragmatic Version Control with Subversion][5].

### Как использовать Git для работы с главным репозиторием Ruby
{: #git-ruby}

Для тех, кто предпочитает использовать [Git][6] вместо Subversion,
инструкции могут найдены в [зеркале репозитория на GitHub][7]. Их две,
одна для [тех, кто имеет право коммитить][8] и другая – для [всех
остальных][9].

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

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

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

Пожалуйста, посмотрите [Patch Writer's Guide][11]. Вы найдете там
некоторые подсказки и приемы непосредственно от Matz'а о том, как
сделать так, чтоб ваши патчи приняли.
Подводя итог, шаги для создания патча:

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

1. Скачайте копию исходного кода Ruby из Subversion. Обычно, патчи
которые исправляют баги или добавляют новые конструкции, должны быть
применены к trunk ветке исходного кода Ruby. Даже если вы хотите
добавить конструкцию к {{ site.svn.previous.version }}, это должно быть сначала проверено в
trunk.
$ git clone https://github.com/ruby/ruby.git

$ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby
Если вы исправляете ошибку, специфичную только для одной поддерживаемой ветки,
переключитесь на соответствующую ветку.

Если вы исправляете баг, который специфичен для одной из
поддерживаемых веток, выберите эту ветку, например, `{{ site.svn.previous.version }}`.
$ git checkout ruby_X_X

$ svn co https://svn.ruby-lang.org/repos/ruby/branches/{{ site.svn.previous.branch }}
`X_X` следует заменить на версию, на которую вы хотите переключиться.

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

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

$ svn diff > ruby-changes.patch
$ git diff > ruby-changes.patch

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

5. Если с патчем не возникнет никаких проблем, программисты имеющие
права на добавление кода в репозитории, добавят ваш патч.
5. Если к патчу не будет вопросов, коммиттеры получат одобрение на его применение.

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

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

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

### Правила для разработчиков ядра
{: #coding-standards}
### Заметка о ветках
{: #branches-ruby}

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

* Все добавления должны быть описаны в `ChangeLog` файле, следуя [GNU
конвенции][14]. (Многие разработчики ядра используют режим Emacs'а
`add-log`, который может быть включен командой `C-x 4 a`.)
* Даты изменений должны быть представлены в формате Japan Standard Time
(UTC+9).
* Буллиты из вашего ChangeLog должны также быть представлены в
комментарии к вашему коммиту в Subversion. Сообщение будет
автоматически выслано в рассылку Ruby-CVS после вашего коммита.
* Прототипы функций используются в исходном коде Ruby и его расширениях.
* Пожалуйста, не используйте C++ комментарии (`//`), разработчики ядра
предпочитают стиль многострочных комментариев C (`/* .. */`).
* [<URL:https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?root=ruby>][svn-viewvc]

Также, для большей информации читайте [Ruby's issue tracker][10]
Однако вам не нужно об этом беспокоиться (если вы не мейнтейнер ветки).
Вы можете переключаться на ветки в вашей рабочей копии Git.
Например, выполните следующую команду:

{% highlight sh %}
$ git checkout ruby_X_X
{% endhighlight %}

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

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

[gitrlo]: https://git.ruby-lang.org/ruby.git
[mailing-lists]: /ru/community/mailing-lists/
[1]: http://subversion.apache.org/
[2]: https://svn.ruby-lang.org/cgi-bin/viewvc.cgi/
[3]: http://subversion.apache.org/faq.html
[4]: http://svnbook.org
[5]: http://www.pragmaticprogrammer.com/titles/svn/
[6]: http://git-scm.com/
[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
[8]: https://github.com/shyouhei/ruby/wiki/committerhowto
[9]: https://github.com/shyouhei/ruby/wiki/noncommitterhowto
[10]: https://bugs.ruby-lang.org/
[11]: https://blade.ruby-lang.org/ruby-core/25139
[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
[14]: http://www.gnu.org/prep/standards/standards.html#Change-Logs