From ff42aba1b1ff8c4a5c6f278a7cd0ec0286abea26 Mon Sep 17 00:00:00 2001 From: Alexandr Borisov Date: Fri, 30 Jun 2017 00:01:03 +0300 Subject: [PATCH] Added correct russian translation. --- CHANGELOG.md | 1 + source/ru/1.0.0/index.html.haml | 420 ++++++++++++++++++++------------ 2 files changed, 264 insertions(+), 157 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cac12d1..75af7e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - French translation from @zapashcanon. - Brazilian Portugese translation from @aisamu. - Polish translation from @amielucha. +- Russian translation from @aishek. ### Changed - Start using "changelog" over "change log" since it's the common usage. diff --git a/source/ru/1.0.0/index.html.haml b/source/ru/1.0.0/index.html.haml index 1c6c2c6..47b612f 100644 --- a/source/ru/1.0.0/index.html.haml +++ b/source/ru/1.0.0/index.html.haml @@ -1,197 +1,303 @@ --- -description: Ведите Changelog -title: Ведите Changelog -language: en -version: 0.3.0 +description: Keep a Changelog +title: Keep a Changelog +language: ru +version: 1.0.0 --- -:markdown - # Ведите CHANGELOG +- changelog = "https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md" +- gemnasium = "https://gemnasium.com/" +- gh = "https://github.com/olivierlacan/keep-a-changelog" +- issues = "https://github.com/olivierlacan/keep-a-changelog/issues" +- semver = "http://semver.org/" +- shields = "http://shields.io/" +- thechangelog = "http://5by5.tv/changelog/127" +- vandamme = "https://github.com/tech-angels/vandamme/" +- iso = "http://www.iso.org/iso/home/standards/iso8601.htm" +- ghr = "https://help.github.com/articles/creating-releases/" - ## Не позволяйте друзьям сливать логи гита в CHANGELOG™ +.header + .title + %h1 Ведите CHANGELOG + %h2 Не позволяйте друзьям сливать логи гита в CHANGELOG™ - Version **#{current_page.metadata[:page][:version]}** + = link_to changelog do + Version + %strong= current_page.metadata[:page][:version] - ### Что такое лог изменений? - Лог изменений – это файл, который содержит поддерживаемый, хронологически упорядоченный - список изменений для каждой версии проекта. + %pre.changelog= File.read("CHANGELOG.md") -%pre.changelog= File.read("CHANGELOG.md") +.answers + %h3#what + %a.anchor{ href: "#what", aria_hidden: "true" } + Что такое лог изменений? -:markdown - ### Для чего нужен лог изменений? - Чтобы пользователи и контрибьюторы чётко понимали что поменялось в каждом релизе (или - версии) проекта. + %p + Лог изменений – это файл, который содержит поддерживаемый, хронологически + упорядоченный список изменений для каждой версии проекта. - ### Почему я вообще должен задумываться о таких вещах? - Потому, что инструменты программирования делаются для людей. Если вам пофигу, - зачем вы вообще занимаетесь программным обеспечением с открытым исходным - кодом? У вас обязательно в голове должен быть центр «не пофигу» :) + %h3#why + %a.anchor{ href: "#why", aria_hidden: "true" } + Зачем вести лог изменений? - Я [беседовал с Адамом Стаковиаком и с Джеродом Санто в подкасте The - Changelog][thechangelog] (в тему название, правда?) о том почему авторам - программного обеспечения с открытым исходным кодом и их коллегам должно быть - не пофигу, и о моих мотивах в создании этого проекта. Послушайте, если у вас - есть время (1:06). + %p + Чтобы пользователям и контрибьюторам было проще точно понять, + какие изменения были сделаны в каждом релизе (или версии) проекта - ### Что должно быть в хорошем логе изменений? - Я рад, что вы спросили. + %h3#who + %a.anchor{ href: "#who", aria_hidden: "true" } + Кому нужен лог изменений? - Хороший лог изменений построен на таких приниципах: + %p + Людям. Будь то клиенты или разработчики, конечные пользователи программного обеспечения + это люди, и им важно, с чем они работают. Когда программное обеспечение меняется, + люди хотят знать почему и что изменилось. - - Он сделан для людей, а не машин, так что понятность имеет решающее - значение. - - Легко сослаться на любой раздел (поэтому Markdown лучше обычного текста). - - Один подраздел на каждую версию. - - Релизы перечислены в обратном хронологическом порядке (самые новые – - сверху). - - Пишите все даты в формате `YYYY-MM-DD`. (Например: `2012-06-02` для даты `2 - июня 2012`.) Он международный, [рациональный](http://xkcd.com/1179/), и - независим от языка. - - Ясно указывает, использует ли проект [Семантическое - Версионирование][semver]. - - Каждая версия должна: - - Показывать дату релиза в формате, упомянутом выше. - - Группировать изменения согласно их влиянию на проект следующим образом: - - `Added` для новых функций. - - `Changed` для изменений в существующей функциональности. - - `Deprecated` для функциональности, которая будет удалена в следующих - версиях. - - `Removed` для функциональности, которая удалена в этой версии. - - `Fixed` для любых исправлений. - - `Security` для обновлений безопасности. +.good-practices + %h3#how + %a.anchor{ href: "#how", aria_hidden: "true" } + Как мне сделать хороший лог изменений? - ### Как минимизировать время, необходимое для ведения лога изменений? - Всегда ведите секцию `Unreleased` в начале файла, чтобы держать в ней не - выпущенные изменения. + %h4#principles + %a.anchor{ href: "#principles", aria_hidden: "true" } + Главные принципы - Это нужно для двух вещей: + %ul + %li + Лог изменений ведётся для людей, не для машин. + %li + Для каждой версии должен быть отдельный раздел. + %li + Одинаковые типы изменений должны быть сгруппированы. + %li + Должна быть возможность поставить ссылку на любую версию или раздел. + %li + Последняя версия должна идти в начале файла. + %li + У каждой версии указана дата выпуска. + %li + Уточните, следуете ли вы принципам #{link_to "Семантического версионирования", semver} - - Люди смогут видеть, какие изменения ожидаются в ближайших релизах - - В момент релиза вам нужно всего лишь заменить секцию `Unreleased` на номер - версии и добавить новую секцию `Unreleased` в начале файла. + %a.anchor{ href: "#types", aria_hidden: "true" } + %h4#types Типы изменений - ### Что заставляет плакать единорогов? - Хорошо… давайте разберёмся. + %ul + %li + %code Добавлено + для новых функций. + %li + %code Изменено + для изменений в существующей функциональности. + %li + %code Устарело + для функций, которы скоро будут удалены. + %li + %code Удалено + для удалённых функций. + %li + %code Исправлено + для любых исправлений. + %li + %code Безопасность + в случае уязвимостей. - - **Выгрузка изменений лога коммитов.** Просто не делайте так, это никому не - принесёт пользы. - - **Отсутствие отметок планируемой к удалению функциональности.** Когда люди - обновляются от одной версии к другой, им должно быть очевидно до боли, что - сломается. - - **Даты в местном формате.** В Соединённых Штатах, люди сначала пишут месяц - («06-02-2012» для даты 2 июня 2012, что не имеет *никакого* смысла), хотя - много людей в остальном мире пишет роботоподобное «2 июня 2012», всё ещё - произнося это по-другому. «2012-06-02» логично работает от самого большого - к самому маленькому, не пересекается с другими форматами дат, и является - [стандартом ISO](http://www.iso.org/iso/home/standards/iso8601.htm). Таким - образом, этот формат является рекомендуемым для логов изменений. +.effort - Существуют и другие. Помогите мне собрать слёзы единорогов, - [открыв тикет][issues] или пулл-реквест. + %h3#effort + %a.anchor{ href: "#effort", aria_hidden: "true" } + Как мне тратить меньше усилий на ведение лога изменений? - ### Существует стандарт формата лога изменений? - К сожалению, нет. Спокойней. Я знаю, что вы яростно бросились на поиски - ссылки на GNU-руководства по стилю лога изменений, или на поиски файла - «guideline» с парой параграфов в GNU NEWS. GNU-руководство по стилю неплохо - для начала, но оно наивно. В наивности нет ничего плохого, но когда людям - нужно руководство, она редко бывает полезна. Особенно, когда приходиться - сталкиваться со множеством краевых случаев. + %p + Ведите раздел Новое с изменениями для новой версии в начале файла. - Этот проект [содержит информацию, которая, я надеюсь, станет соглашением - получше о ведении файлов CHANGELOG][CHANGELOG] для всех проектов с открытым - исходным кодом. Может ли сообщество учиться на своих ошибках, а не просто - действовать согласно десяти записям, которые были написаны много лет назал, - и, якобы, без одной ошибки? Хорошо. Поэтому, пожалуйста, посмотрите вокруг, и - помните, что [обсуждения и предложения по улучшению приветствуются][issues]! + %p Это нужно для двух вещей: - ### Как можно назвать файл лога изменений? - Ну, если вы не не можете ответить на этот вопрос, глядя на пример выше, - `CHANGELOG.md` пока наилучший вариант. + %ul + %li + Люди смогут видеть, каких изменений им ожидать в ближайших релизах + %li + В момент релиза вы можете переместить изменения раздела Новое + в раздел нового релиза. - Некоторые проекты используют `HISTORY.txt`, `HISTORY.md`, `History.md`, - `NEWS.txt`, `NEWS.md`, `News.txt`, `RELEASES.txt`, `RELEASE.md`, - `releases.md`, и так далее. +.bad-practices + %h3#bad-practices + %a.anchor{ href: "#bad-practices", aria_hidden: "true" } + Бывают плохие логи изменений? - Это непорядок. Все эти имена только усложняют поиск нужного файла. + %p Да. Вот несколько способов чтобы сделать их не такими полезными. - ### Почему люди не могут использовать просто дифф команды `git log`? - Потому, что диффы логов по своей природе содержат слишком много «шума». С их - помощью невозможно сделать подходящий лог изменений даже в гипотетическом - проекте, который делается идеальными программистами, которые никогда не - делают опечаток, никогда не забывают коммитить новые файлы, никогда не - пропускают ни одну часть рефакторинга. Назначение коммита в том, чтобы - задокументировать один атомарный шаг в процессе развития кода от одного - состояния к другому. Назначение лога изменений – документировать значимые - различия между этими состояниями. + %h4#log-diffs + %a.anchor{ href: "#log-diffs", aria_hidden: "true" } + Диффы лога коммитов - Как отличаются хорошие комментарии к коду и сам код, также отличаются друг от - друга и лог изменений с логом коммитов: первые отвечают на вопрос - *почему*, а вторые на вопрос как. + %p + Использование диффов лога коммитов это плохая идея: они очень шумные. + Шумят мердж-коммиты, коммиты с непонятными названиями, изменения в документации + и тому подобное. - ### Могут ли логи изменений быть автоматически распарсены? - Это сложно из-за того, что люди следуют сильно отличающимся форматам и - соглашениям о именах файлов. + %p + Назначение коммита в том, чтобы задокументировать шаг в эволюции исходного + кода. В некоторых проектах следят за историей коммитов, в некоторых нет. - Гем для Руби [Vandamme][vandamme], который создали в команде - [Gemnasium][gemnasium], парсит многие (но не все) логи изменений проектов с - открытым исходным кодом. + %p + Назначение же раздела в логе изменений — задокументировать ключевые различия, + часто между несколькими коммитами, чтобы ясно донести их назначение + до конечных пользователей. - ### Почему вы пишите то «CHANGELOG», то «лог изменений»? - «CHANGELOG» – это имя файла. Оно несколько крикливо, но это историческое - соглашение, которому следуют многие проекты с открытым исходным кодом. В - качестве примеров подобных файлов можно привести [`README`][README], - [`LICENSE`][LICENSE], и [`CONTRIBUTING`][CONTRIBUTING]. - Верхний регистр в имени файла (который в старых операционных системах - заставляет эти файлы находиться наверху списков) используется для привлечения - внимания. Так как в этих файлах содержится важная метаинформация о проекте, - они могут быть полезны любому использующему или дорабатывющему проект, также - как [бейджи проектов с открытым исходным кодом][shields]. + %h4#ignoring-deprecations + %a.anchor{ href: "#ignoring-deprecations", aria_hidden: "true" } + Игнорирование устаревающих функций - Когда я упоминаю «лог изменений», я говорою о назначении этого файла: об - учёте изменений. + %p + Когда люди обновляются с одной версии на другую, должно быть до боли + очевидно, что сломается. Должна быть возможность обновиться до версии, которая + перечисляет устаревающие функции, удалить устаревшие данные, затем обновиться до версии, + в которой устаревающие функции становятся удалёнными. - ### Как насчёт yanked-релизов? - Yanked-релизы – это версии, которые изымаются из обращения из-за серьёзного - бага или проблемы безопасности в них. Часто такие версии даже не упоминаются - в логах изменений. А должны. И вот как вам следует их упоминать: + %p + Если вы не ведёте лог изменений, то хотя бы указывайте в нём устаревающие + и удалённые функции, а также все критичные изменения. - `## 0.0.5 - 2014-12-13 [YANKED]` + %h4#confusing-dates + %a.anchor{ href: "#confusing-dates", aria_hidden: "true" } + Непонятные даты - Тег `[YANKED]` такой «громкий» не просто так. Очень важно, чтобы люди его - заметили. А из-за того, что он окружён скобками, его легче определить - программно. + %p + В США сначала пишут месяц (06-02-2012 для 2 июня 2012), + в то время как большинство людей в остальном мире пишут роботоподобное + 2 июня 2012, произнося эту дата по-разному. Запись + 2012-06-02 логично идёт от большего к меньшему, не пересекается + с большинством других форматов дат, и является #{link_to "стандартом ISO", iso}. + Поэтому именно такой формат рекомендуется для логов изменений. - ### Стоит ли переписывать лог изменений? - Конечно. Всегда есть причины для улучшения лога изменений. Я регулярно - открываю пулл-реквесты в проекты с открытым исходным кодом с - неподдерживаемыми логами изменений для добавления недостающих релизов. + %aside + Есть и другие. Помогите мне собрать эти антипаттерны, + = link_to "создав тикет", "#issues" или пулл-реквест. - Также вы можете обнаружить что вы забыли адресовать критичное изменение в - описании версии. В этом случае очевидно, что нужно обновить лог - изменений. +.frequently-asked-questions + %h3#frequently-asked-questions + %a.anchor{ href: "#frequently-asked-questions", aria_hidden: "true" } + Часто задаваемые вопросы - ### Как я могу помочь вашему проекту? - Этот документ **не истина в последней инстанции**; это моё тщательно - сформулированное мнение вместе с информацией и примерами, которые я собрал. - Хотя я предоставил настоящий [CHANGELOG][] из [GitHub-репозитария][gh], я - специально избегал цели создать *стандарт* или чёткий список правил (как это - делает, например, [SemVer.org][semver]). + %h4#standard + %a.anchor{ href: "#standard", aria_hidden: "true" } + Существует ли стандарт формата логов изменений? - Я сделал это потому, что хочу, чтобы наше сообщество достигло консенсуса. Я - верю, что дискуссия также важна, как и её результат. + %p + На самом деле нет. Есть стайлгайд логов изменений GNU, + есть длиной-в-два-параграфа файл "guideline" GNU NEWS. + Оба или неадекватны или недостаточно полны. - Так что, пожалуйста, [**участвуйте**][gh]. + %p + Цель этого проекта — стать + = link_to "улучшенной версией соглашения о формате логов изменений.", changelog + Это приходит из-за сбора и следования хорошим практикам сообщества. - [CHANGELOG]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CHANGELOG.md - [CONTRIBUTING]: https://github.com/olivierlacan/keep-a-changelog/blob/master/CONTRIBUTING.md - [LICENSE]: https://github.com/olivierlacan/keep-a-changelog/blob/master/LICENSE - [README]: https://github.com/olivierlacan/keep-a-changelog/blob/master/README.md - [gemnasium]: https://gemnasium.com/ - [gh]: https://github.com/olivierlacan/keep-a-changelog - [issues]: https://github.com/olivierlacan/keep-a-changelog/issues - [semver]: http://semver.org/ - [shields]: http://shields.io/ - [thechangelog]: http://5by5.tv/changelog/127 - [vandamme]: https://github.com/tech-angels/vandamme/ + %p + Здоровая критика, дискуссии и предложения по улучшению + = link_to "приветствуются.", issues + + + %h4#filename + %a.anchor{ href: "#filename", aria_hidden: "true" } + Как назвать файл лога изменений? + + %p + Назовите его CHANGELOG.md. Некоторые проекты также используют + HISTORY, NEWS или RELEASES. + + %p + Хоть и легко подумать, что имя файла лога изменений не так уж и важно, + но зачем усложнять вашим конечным пользователям поиск места, + где описаны все ключевые изменения? + + %h4#github-releases + %a.anchor{ href: "#github-releases", aria_hidden: "true" } + Что насчёт функции "Релизы" на Гитхабе? + + %p + Это отличная инициатива. #{link_to "Релизы", ghr} могут использоваться + для превращения простых тегов в Git (наприме тег v1.0.0) + в подробные заметки к релизам с помощью их редактирования вручную, + или с помощью комментариев к таким тегам. + + %p + Релизы на Гитхабе создают непереносимый лог изменений, который может + быть показан пользователям только на самом Гитхабе. Возможно вести + их в формате, близком к формату проекта Keep a Changelog, но это требует + больших усилий. + + %p + Текущая версия Релизов на Гитхабе также возможно не так хорошо видна + для конечных пользователей, в отличии от обычных файлов с именами в верхнем + регистре (README, CONTRIBUTING, и так далее). + Другая небольшая проблема заключается в том, что интерфейс не предлагает + ссылок на логи коммитов между релизами. + + %h4#automatic + %a.anchor{ href: "#automatic", aria_hidden: "true" } + Могут ли логи изменений быть автоматически распарсены? + + %p + Это сложно, потому что люди следуют сильно различающимся форматам + и используют разные имена файлов. + + %p + #{link_to "Vandamme", vandamme} это гем для Руби, созданный командой + #{link_to "Gemnasium", gemnasium}, который парсит многие (но не все) + логи изменений проектов с открытым исходным кодом. + + + %h4#yanked + %a.anchor{ href: "#yanked", aria_hidden: "true" } + Что насчёт yanked-релизов? + + %p + Yanked-релизы – это версии, которые изымаются из обращения из-за серьёзного + бага или проблемы безопасности в них. Часто такие версии даже не упоминаются + в логах изменений. А должны. И вот как вам следует их упоминать: + + %p ## 0.0.5 - 2014-12-13 [YANKED] + + %p + Тег [YANKED] так бросается в глаза специально. Очень важно, + чтобы люди его заметели. Так как он обрамлён квадратными скобками, + его также проще распарсить программно. + + + %h4#rewrite + %a.anchor{ href: "#rewrite", aria_hidden: "true" } + Имеет ли смысл переписывать лог изменений? + + %p + Конечно. Всегда есть веские причины для улучшения лога изменений. + Я регулярно открываю пулл-реквесты по добавлению недостающих релизов + в проекты с открытым исходным кодом с брошенными логами изменений. + + %p + Также возможно вы можете обнаружить, что вы забыли указать критичное + изменение в замечаниям к версии. В этом случае очевидно вам важно + обновить ваш лог изменений. + + %h4#contribute + %a.anchor{ href: "#contribute", aria_hidden: "true" } + Как я могу помочь вашему проекту? + + %p + Этот документ не истина в последней инстанции; это моё + тщательно обдуманное мнение, вместе с информацией и примерами, которые я собрал. + + %p + Дело в том, что я хочу, чтобы наше сообщество достигло согласия в этом вопросе. + Я верю, что дискуссия также важна, как и конечный результат. + + %p + Так что, пожалуйста, #{link_to "участвуйте", gh}. + +.press + %h3 Обсуждения + %p + Я приходил в #{link_to "подкаст The Changelog", thechangelog}, + чтобы поговорить о том, почему мейнтейнеры и контрьбьюторы долны вести логи изменений, + а также о моей мотивации к созданию этого проекта.