diff --git a/src/levels/intro/branching.js b/src/levels/intro/branching.js index 58f1a04b..dc31495f 100644 --- a/src/levels/intro/branching.js +++ b/src/levels/intro/branching.js @@ -723,6 +723,84 @@ exports.level = { } } ] + }, + "ru_RU": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Ветвление в Git", + "", + "Ветки в Git как и коммиты невероятно легковесны. Это просто ссылки на определённый коммит -- ничего более. Вот почему многие фанаты Git повторяют мантру", + "", + "```", + "делай ветки сразу, делай ветки часто", + "```", + "", + "Так как создание множества веток никак не отражается на памяти или жестком диске, удобнее и проще разбивать свою работу на много маленьких веток, чем хранить все изменения в одной огромной ветке.", + "", + "Чуть позже мы попробуем использовать ветки и коммиты и вы увидите как две эти возможности сочетаются. Можно сказать, что создание ветка хранит изменения текущих коммитов и всех его родителей." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Посмотрим что такое ветки на практике", + "", + "Создадим здесь новую ветку с именем newImage" + ], + "afterMarkdowns": [ + "Вот и всё, ребята! Ветка newImage теперь указывает на коммит C1" + ], + "command": "git branch newImage", + "beforeCommand": "" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Теперь попробуем сделать некоторые изменения в этой ветке. Для этого нажми кнопку ниже." + ], + "afterMarkdowns": [ + "О-оу! Ветка master сдвинулся тогда как ветка newImage - нет! Всё из-за того, что мы не перешли на новую ветку, на что указывает звёздочка около ветки master" + ], + "command": "git commit", + "beforeCommand": "git branch newImage" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Сообщим Git, что хотим выбрать ветку", + "", + "```", + "git checkout [name]", + "```", + "", + "Эта команда перенесёт нас на новую ветку, в момент, когда мы ещё не коммитили изменения" + ], + "afterMarkdowns": [ + "Вот так! Наши изменения записаны уже в новую ветку" + ], + "command": "git checkout newImage; git commit", + "beforeCommand": "git branch newImage" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Ну что ж, теперь вы готовы к работе с ветками. Как только это окно закроется,", + "создай ветку с именем bugFix и переключись на неё" + ] + } + } + ] } } }; diff --git a/src/levels/intro/merging.js b/src/levels/intro/merging.js index e076144c..653f063a 100644 --- a/src/levels/intro/merging.js +++ b/src/levels/intro/merging.js @@ -10,7 +10,8 @@ exports.level = { "ko": "Git에서 브랜치 합치기(Merge)", "ja": "ブランチとマージ", "zh_CN": "分支与合并", - "zh_TW": "git 中的 merge" + "zh_TW": "git 中的 merge", + "ru_RU": "Слияния веток в Git" }, "hint": { "en_US": "Remember to commit in the order specified (bugFix before master)", @@ -21,7 +22,8 @@ exports.level = { "fr_FR": "Pensez à faire des commits dans l'ordre indiqué (bugFix avant master)", "zh_CN": "记住按指定的顺序提交(bugFix先于master)", "zh_TW": "記住按指定的順序 commit(bugFix 比 master 優先)", - "ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 master에 커밋)" + "ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 master에 커밋)", + "ru_RU": "Не забудь делать коммиты в правильном порядке (сначала bugFix, потом master)" }, "disabledMap": { "git revert": true @@ -647,6 +649,77 @@ exports.level = { } } ] + }, + "ru_RU": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Branches and Merging", + "## Ветки и слияния", + "", + "Ок! Теперь мы знаем как создавать ветки и коммитить наши изменения. Теперь надо понять как объединять изменения из двух разных ветко. Очень удобно создать ветку, сделать свою часть работы в ней и потом объединить изменения из своей ветки с общими.", + "", + "Первый способ объединения изменений, который мы рассмотрим - это `git merge` - слияние или просто мердж. Слияния в Git создают особый вид коммита, который имеет сразу двух родителей. Коммит с двумя родителями обычно означает, что мы хотим объединить изменения из одного коммита, с другим коммитом и всеми их родителскими коммитами.", + "", + "Слишком запутанно =) На схеме всё проще и понятнее." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Вот у нас две ветки, каждая содержит по одному уникальному коммиту. Это означает, что ни одна из веток не содержит полный набор \"работ\", выполненных в этом репозитории. Можно исправить эту ситуацию, выполнив слияние.", + "", + "Мы сделаем `merge` ветки `bugFix` в ветку `master`" + ], + "afterMarkdowns": [ + "Что мы видим? Во-первых, ветка master теперь указывает на коммит, у которого два родителя. Если проследовать по стрелкам от этого коммита, вы пройдёте через каждый коммит в дереве прямиком к началу. Это означает, что теперь в ветке `master` содержатся все изменения репозитория.", + "", + "Во-вторых, обрати внимание как изменились цвета коммитов. Мы ввели цветовую дифференциацию, чтобы помочь помниманию. Каждая ветка своего цвета. Каждый коммит становится того цвета, какого его ветка. Если в нём изменения сразу двух веток - он становится цветом, смешанным из цветов родительских веток.", + "", + "И вот мы видим, что цвет ветки `master` подмешан к каждому коммиту, а ветки `bugFix` - нет. Это можно попроавить." + ], + "command": "git merge bugFix", + "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Смерджим ветку `master` в ветку `bugFix`" + ], + "afterMarkdowns": [ + "Так как ветка `bugFix` была предшественницей `master`, Git не делал ничего, только сдвинул `bugFix` на тот же коммит, где находится `master`", + "", + "Теперь все коммиты одного цвета, что означает, что каждая ветка содержит все изменения репозитория! Поздравляем!" + ], + "command": "git checkout bugFix; git merge master", + "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit; git merge bugFix" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Чтобы пройти этот уровень сделай следующее:", + "", + "* Создай новыю ветку под названием `bugFix`", + "* Переключись на новую ветку `bugFix` командой `git checkout bugFix`", + "* Сделай один коммит", + "* Вернись на ветку `master` при помощи `git checkout`", + "* Сделай ещё один коммит", + "* Слей ветку `bugFix` с веткой `master` при помощи `git merge`", + "", + "* Если что-то пошло не так - можешь подглядеть в жту шпаргалку командой \"objective\"!*" + "* Если что-то пошло не так - можешь подглядеть в жту шпаргалку командой \"objective\"!*" + ] + } + } + ] } } };