diff --git a/ru/community/ruby-core/index.md b/ru/community/ruby-core/index.md index 4a3d79b60d..ea4ce70b4a 100644 --- a/ru/community/ruby-core/index.md +++ b/ru/community/ruby-core/index.md @@ -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