diff --git a/src/levels/remote/fetchArgs.js b/src/levels/remote/fetchArgs.js index 0bde230f..ce2e3a3d 100644 --- a/src/levels/remote/fetchArgs.js +++ b/src/levels/remote/fetchArgs.js @@ -894,7 +894,7 @@ exports.level = { "markdowns": [ "## Аргументы git fetch", "", - "Итак, мы только что изучили всё, касательно аргументов git push, мы узнали о параметре `<пункт назначения>`, и даже об аргументе, задающем отдельно исчтояник и получатель коммитов (`<источник>:<получатель>`). Можем ли мы применить все эти полученные знания для команды `git fetch` ?", + "Итак, мы только что изучили всё, касательно аргументов git push, мы узнали о параметре `<пункт назначения>`, и даже об аргументе, задающем отдельно источник и получатель коммитов (`<источник>:<получатель>`). Можем ли мы применить все эти полученные знания для команды `git fetch` ?", "", "Ещё бы! Аргументы для команды `git fetch` на самом деле *очень, очень* похожи на те, что мы использовали в `git push`. В данном случае используется тот же подход, только применяемый в противоположном направлении (так как теперь Вы скачиваете коммиты, а не закачиваете их).", "", diff --git a/src/levels/remote/pullArgs.js b/src/levels/remote/pullArgs.js index 3fee5ed8..640e62c3 100644 --- a/src/levels/remote/pullArgs.js +++ b/src/levels/remote/pullArgs.js @@ -10,7 +10,8 @@ exports.level = { "pt_BR": "Parâmetros do pull", "de_DE": "Optionen für Pull", "ja" : "Pullの引数", - "fr_FR": "Arguments de pull" + "fr_FR": "Arguments de pull", + "ru_RU": "Аргументы для pull" }, "hint": { "en_US": "Remember that you can create new local branches with fetch/pull arguments", @@ -20,7 +21,8 @@ exports.level = { "pt_BR": "Lembre-se que você pode criar novos ramos locais com parâmetros de fetch/pull", "de_DE": "Du kannst neue lokale Branches mittels fetch / pull erstellen", "ja" : "Fetchとpullの引数を利用してローカルで新規ブランチを作成できるのをお忘れなく", - "fr_FR": "Vous pouvez aussi créer une nouvelle branche locale avec les arguments de fetch/pull" + "fr_FR": "Vous pouvez aussi créer une nouvelle branche locale avec les arguments de fetch/pull", + "ru_RU": "Напоминаю, что новые ветки можно создавать и с помощью команд fetch/pull" }, "startDialog": { "en_US": { @@ -540,6 +542,80 @@ exports.level = { } } ] + }, + "ru_RU": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Аргументы для pull", + "", + "Аргументы для `git pull` не покажутся вам чем-то новым, учитывая, что Вы уже знакомы с аргументами для `git fetch` и `git push` :)", + "", + "Как мы помним `git pull` делает следующее: сначала выполняет `git fetch`, а следом сразу `git merge` с той веткой, в которую притянулись обновления командой fetch. Другими словами, это все равно, что выполнить git fetch с теми-же аргументами, которые Вы указали для pull, а затем выполнить git merge с веткой, указанной в аргументе <приемник> команды pull.", + "", + "Рассмотрим на примерах:" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Вот примеры абсолютно эквивалентных команд в git:", + "", + "`git pull origin foo` это то же самое, что сделать:", + "", + "`git fetch origin foo; git merge o/foo`", + "", + "И еще...", + "", + "`git pull origin bar~1:bugFix` то же, что:", + "", + "`git fetch origin bar~1:bugFix; git merge bugFix`", + "", + "Как видно, git pull используется, чтобы за одну команду выполнить fetch + merge.", + "", + "Посмотрим демонстрацию:" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Здесь, сначала выполнится fetch с аргументом указанным к pull, а merge выполняется с теми измененями которые будут скачаны командой fetch" + ], + "afterMarkdowns": [ + "Как видно, мы указали `master`, поэтому как обычно все обновления притянулись на ветку `o/master`. Затем мы слили(merge) обновленную ветку `o/master` с веткой на которой мы находимся." + ], + "command": "git pull origin master", + "beforeCommand": "git clone; go -b bar; git commit; git fakeTeamwork" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Будет ли это работать если указать `<источник>` и `<приемник>`? Проверим:" + ], + "afterMarkdowns": [ + "Ого, сколько всего выполнено всего одной командой!. Мы создали новую ветку `foo` в локальном репозитории, скачали на неё изменения с ветки master удаленного репозитория, а затем слили эту ветку с веткой `bar` на которой мы находились!" + ], + "command": "git pull origin master:foo", + "beforeCommand": "git clone; git fakeTeamwork; go -b bar; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "В последнем упражнении, необходимо привести дерево к аналогичному в примере. Нужно скачать несколько изменений, создать несколько новых веток, слить одни ветки в другие, но постарайтесь использовать как можно меньше команд. Удачи! :P" + ] + } + } + ] } } }; diff --git a/src/levels/remote/sourceNothing.js b/src/levels/remote/sourceNothing.js index 209136a3..23e732e3 100644 --- a/src/levels/remote/sourceNothing.js +++ b/src/levels/remote/sourceNothing.js @@ -10,7 +10,8 @@ exports.level = { "pt_BR": "Origem vazia", "de_DE": "Die Quelle des Nichts", "ja" : "無のsource", - "fr_FR": "Source de rien du tout" + "fr_FR": "Source de rien du tout", + "ru_RU": "Пустой источник" }, "hint": { "en_US": "The branch command is disabled for this level so you'll have to use fetch!", @@ -20,7 +21,8 @@ exports.level = { "pt_BR": "O comando branch está desabilitado para este nível, então você terá de usar o fetch!", "de_DE": "Der branch Befehl ist für diesen Level inaktiv, du musst also fetch benutzen", "ja" : "このレベルではbranchコマンドが無効になっているのでfetchを使うしかない!", - "fr_FR": "La commande branch est désactivée pour ce niveau, vous devrez donc utiliser fetch !" + "fr_FR": "La commande branch est désactivée pour ce niveau, vous devrez donc utiliser fetch !", + "ru_RU": "Команда branch недоступна на этом упражнении, пользуйтесь командой fetch!" }, "startDialog": { "en_US": { @@ -393,6 +395,59 @@ exports.level = { } } ] + }, + "ru_RU": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Странный `<источник>`", + "", + "Git использует параметр `<источник>` странным образом. Странность заключается в том, что Вы можете оставить пустым параметр `<источник>` для команд git push и git fetch:", + "", + "* `git push origin :side`", + "* `git fetch origin :bugFix`", + "", + "Посмотрим, что же из этого выйдет..." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Что же будет с веткой, на которую мы делаем git push с пустым аргументом `<источник>`? Она будет удалена!" + ], + "afterMarkdowns": [ + "Как видите, мы удалили ветку `foo` в удаленном репозитории, попытавшить протолкнуть(git push) в неё \"ничего\"." + ], + "command": "git push origin :foo", + "beforeCommand": "git clone; git push origin master:foo" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "Наконец, если мы попытаемся притянуть изменения(git fetch) из \"ничего\" к нам в локальный репозиторий, то это создаст у нас новую ветку" + ], + "afterMarkdowns": [ + "Вот такой вот чудной git!" + ], + "command": "git fetch origin :bar", + "beforeCommand": "git clone" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "Это легкое упражнение - нужно всего лишь удалить одну ветку в удаленном репозитории и создать новую ветку в локальном, с помощью команд `git push` и `git fetch` соответственно!" + ] + } + } + ] } } };