Task #2. Git: main rules, commands, branching, merging∗
Description∗
Написать bash-скрипт, который реализует игру Угадай число.
References∗
- Shell Functions.
- Bash Variables - RANDOM.
- Git Merge: Resolving Conflicts.
- Using Meld as your git difftool and mergetool.
Guidance∗
В директории клонированного ранее репозитория, соответствующего Вашей фамилии, создать директорию проекта:
task02
.Для каждого последующего шага выполнять не менее одного коммита в соответствии с требованиями; для реализации новой функциональности обязательно использовать отдельные ветки.
Периодически отправлять изменения в удаленный репозиторий.
-
Создать пустой файл
readme.md
. -
Добавить в
readme.md
одну строку с общей формулировкой задачи, например:Task: write a Guess the Number game using the Bash script.
-
Добавить в
readme.md
одну строку с формулировкой подзадачи, например:Subtask: create a random number generator script.
-
В новой ветке написать скрипт, который генерирует и выводит случайное число в диапазоне от 0 до 5.
- В файл
readme.md
добавить заголовки всех выполненных в данной ветви коммитов. - В ветке master, в файл
readme.md
добавить строку:Subtask completed.
- В ранее созданной ветке выполнить merge с веткой master, разрешить конфликты с учётом хронологии выполненных действий, а затем выполнить merge в master.
- В файл
-
В ветке master, в файл
readme.md
добавить строку с формулировкой следующей подзадачи, например:Subtask: Extract Function refactoring.
-
В новой ветке выполнить рефакторинг: реализовать генерацию случайного числа в указанном диапазоне в виде отдельной функции.
- В файл
readme.md
добавить заголовки всех выполненных в данной ветви коммитов. - В ветке master, в файл
readme.md
добавить строкуSubtask completed.
. - В ранее созданной ветке выполнить merge с веткой master, разрешить конфликты с учётом хронологии выполненных действий, а затем выполнить merge в master.
- В файл
-
В ветке master, в файл
readme.md
добавить строку с формулировкой следующей подзадачи. -
В новой ветке реализовать сравнение сгенерированного случайно числа X с числом Y, которое задано первым параметром командной строки и вывести соответствующее сообщение: Y is less than X, Y is greater than X или Y is equal to X.
- В файл
readme.md
добавить заголовки всех выполненных в данной ветви коммитов. - В ветке master, в файл
readme.md
добавить строкуSubtask completed.
. - В ранее созданной ветке выполнить merge с веткой master, разрешить конфликты с учётом хронологии выполненных действий, а затем выполнить merge в master.
- В файл
-
В ветке master, в файл
readme.md
добавить строку с формулировкой следующей подзадачи. Далее файлreadme.md
изменять по наработанному сценарию. -
Реализовать ввод с подсказкой числа, если оно не задано параметром командной строки.
-
Реализовать возможность задания значения верхней границы диапазона случайных чисел вторым параметром командной строки в виде целого числа от 1 до 100.
-
Реализовать ввод с подсказкой значения верхней границы, если не задан второй параметр командной строки.
-
Реализовать возможность указания числа попыток угадывания третьим параметра командной строки.
-
Реализовать ввод с подсказкой числа попыток угадывания, если не задан третий параметр командной строки.
-
Выполнить рефакторинг, добавить комментарии для основных действий скрипта.
-
Реализовать возможность повторной игры с теми же параметрами при успешном отгадывания числа.
Extra∗
- Реализовать задание значения верхней границы и числа попыток в виде соответствующих ключей. Например:
--upper 9 --retries 3
или-r 2 -u 5
. - Реализовать меню:
- играть;
- параметры;
- количество попыток;
- наибольшее число.
- выход.
Notes∗
Resolving merge conflicts
- Merge the master branch with another branch:
git checkout <another_branch> git merge master
- Edit conflicting files to resolve the conflict manually.
- Make a commit of conflict resolution:
git add <edited_files> git commit -m "Merged master: Fix conflict"
Removing local untracked files
- Show which files will be deleted:
git clean -n
- Remove untracked files from the working tree:
git clean -f
- Remove files and directories:
git clean -fd