diff --git a/src/levels/rampup/relativeRefs.js b/src/levels/rampup/relativeRefs.js index 2dc501cf..fb9c3817 100644 --- a/src/levels/rampup/relativeRefs.js +++ b/src/levels/rampup/relativeRefs.js @@ -10,7 +10,8 @@ exports.level = { "zh_TW": "相對引用(^)", "es_AR": "Referencias relativas (^)", "pt_BR": "Referências relativas (^)", - "de_DE": "Relative Referenzen (^)" + "de_DE": "Relative Referenzen (^)", + "ru_RU": "Относительные ссылки (^)" }, "hint": { "en_US": "Remember the Caret (^) operator!", @@ -19,7 +20,8 @@ exports.level = { "es_AR": "¡No te olvides del operador ^!", "pt_BR": "Não se esqueça do operador circunflexo (^)", "zh_CN": "记住插入(^)操作符!", - "zh_TW": "不要忘記插入(^)符號!" + "zh_TW": "不要忘記插入(^)符號!", + "ru_RU": "Не забудь оператор `^`" }, "startDialog": { "en_US": { @@ -621,6 +623,82 @@ exports.level = { } } ] + }, + "ru_RU": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Относительные ссылки", + "", + "Передвигаться по дерево Git при помощи указания хешей коммитов немного неудоно. В реальной ситуации у вас вряд ли будет красивая визуализация дерева в терминале, так что придётся каждый раз использовать `git log`, чтобы найти хеш нужного коммита", + "", + "Более того, хеши в реальном репозитории Git сильно более длинные. Например, хеш для коммита, который приведён в предыдущем уровне - `fed2da64c0efc5293610bdd892f82a58e8cbc5d8`. Не очень просто для произношения =)", + "", + "Хорошая новость в том, что Git достаточно умён в работе хешей. Ему нужно лишь первые несколько символов для того, чтобы идентифицировать конкретный коммит. Так что можно написать просто `fed2` вместо колбасы выше." + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Как мы уже говорили, указание на коммит при помощи его хеша - не самый удобный способ, поэтому Git поддерживает относительные ссылки и они прекрасны!", + "", + "С относительными ссылками можно начать с какого-либо удобновго места (например с ветки `bugFix` или от HEAD) и двигаться о него", + "", + "Относительные ссылки - мощный инструмент, но мы покажем два простых способа использования:", + "", + "* Перемещение на один коммит назад `^`", + "* Перемещение на коммитов назад `~`" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Для начала рассмотрим оператор каретки (^). Когда мы добавляем его к имени ссылки, Git поспринимает это как указание найти родителя указанного коммита.", + "", + "So saying `master^` is equivalent to \"the first parent of `master`\".", + "Так что `master^` означает \"первый предок ветки `master`\".", + "", + "`master^^` означает предок предка ветки `master`", + "", + "Получим предка ветки master на практике" + ], + "afterMarkdowns": [ + "Опачки! Готово. Сильно проще, чем поиск и указание хеша." + ], + "command": "git checkout master^", + "beforeCommand": "git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Можно также использовать `HEAD` как относительную ссылку. Попробуем пройти несколько раз назад по дереву коммитов" + ], + "afterMarkdowns": [ + "Изи! Мы можем путешествовать во времени при помощи `HEAD^`" + ], + "command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^", + "beforeCommand": "git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Чтобы пройти этот уровень, переместись на первого родителя ветки `bugFix`. Это отделит `HEAD` от ветки.", + "", + "Конечно, можно указать хеш, но надо попробовать использовать относительные ссылки!" + ] + } + } + ] } } };