Получаване и изпращане на домашни


За домашните в курса Функционално програмиране с Elixir се използва Github Classroom. Използвайки тази платформа, за да получите и предадете домашно, трябва да направите следните стъпки:

  • Да имате профил в Github.
  • Да посетите сайта на курса, където ще бъде публикуван линк към домашното.
  • Когато посетите този линк и натиснете бутона Accept this assignment, ще бъде създадено специално хранилище, до което достъп имате само Вие, в следната Github организация.
  • В хранилището ще намерите условието и инструкциите за изпълнение на домашното.
  • Преди да изтече крайният срок, Вашето решение трябва да бъде добавено в хранилището.

Работа с Github

Използвайки графичния интерфейс

Най-лесният начин за работа с Github е с помощта на графичния интерфейс. Може да добавяте нови файлове с бутона Add files. Създадени файлове може да редактирате като ги отворите и натиснете бутона Edit (с иконка на молив/химикалка), направите желаните промени чрез предоставения редактор и натиснете бутона Commit changes.

Не ви препоръчваме да използвате графичния интерфейс. Уменията за работа с git от командния ред са необходими умения за всеки програмист.

Използвайки командния ред

Github CLI

Най-лесният начин за интеракция с Github от командния ред е с помощта на Github CLI. След като сте го инсталирали Github CLI, може да преминете към автентикацията.

Автентикация

Отворете терминал и изпълнете следната команда:

$ gh auth login

Ще видите следното:

? What account do you want to log into?  [Use arrows to move, type to filter]
> GitHub.com
  GitHub Enterprise Server

Изберете Github.com. След това ще бъдете помолени да изберете начин за автентикация:

? What is your preferred protocol for Git operations?  [Use arrows to move, type to filter]
> HTTPS
  SSH

Изберете HTTPS. На следващата стъпка ще бъдете помолени да се съгласите да използвате Github за удостоверяване. Съгласете се.

Authenticate Git with your GitHub credentials?  [Y/n] y

На следащата стъпка изберете автентикация чрез уеб браузър. Ще ви бъде показан код (например ABCD-1234), който трябва да въведете в браузъра.

? How would you like to authenticate GitHub CLI?  [Use arrows to move, type to filter]
> Login with a web browser
  Paste an authentication token

При правилно въвеждане на кода и следване на останалите стъпки в браузъра, във Вашия терминал трябва да видите следното:

✓ Authentication complete.
- gh config set -h github.com git_protocol https
✓ Configured git protocol
✓ Logged in as IvanIvanoff

Това означава, че автентикацията е успешна. Ако желаете да смените протокола, може да изпълните:

gh config set -h github.com git_protocol ssh

Работа с Github CLI

След като сте настроили Github CLI, за да клониранете вашето хранилище може да изпълните: следната команда, използвайки Вашето хранилище:

$ gh repo clone ElixirCourseHW/homework-1-year-2023-IvanIvanoff

Преди да започнем работа, трябва да създадем нов клон в нашето хранилище, което ще съдържа промените:

$ cd homework-1-year-2023-IvanIvanoff
$ git checkout -b  my-solution

Нека да добавим файл hello.txt в хранилището:

$ touch hello.txt
$ echo "Hello, world!" > hello.txt

След това може да изпълним следната команда, за да съхраним файла в нашето локално хранилище:

$ git add hello.txt
$ git commit -m "Adding hello.txt"

За да качим промените в Github хранилището, може да изпълним следната команда:

$ gh pr create
➜  homework-1-year-2023-IvanIvanoff git:(my-solution) gh pr create
? Where should we push the 'my-solution' branch?  [Use arrows to move, type to filter]
> ElixirCourseHW/homework-1-year-2023-IvanIvanoff
  Create a fork of ElixirCourseHW/homework-1-year-2023-IvanIvanoff
  Skip pushing the branch
  Cancel

Изберете първата възможност, въведете заглавие, не въвежайте допълнително описание (или въведете, ако искате) и натиснете Enter.

Creating pull request for my-solution into main in ElixirCourseHW/homework-1-year-2023-IvanIvanoff

? Title my solution
? Body <Received>
? What's next?  [Use arrows to move, type to filter]
  Submit
  Submit as draft
> Continue in browser
  Add metadata
  Cancel

В показаното меню изберете Continue in browser, което ще отвори нова страница в браузъра, където можете да видите Вашите промени, да промените заглавието или описанието и да създадете Pull Request.

След създаването на този Pull Request, може да натиснете бутона Merge pull request и вашите промени ще бъдат добавени към main клона. С извършването на тази стъпка се счита, че Вашето домашно е предадено успешно. Може да правите промени неограничен брой пъти преди изтичането на крайния срок. Когато крайният срок изтече, правата за писане в това хранилище Ви се отнемат автоматично.

За да синхронизирате локалното хранилище с хранилището в Github, може да изпълните следната команда:

$ gh repo sync

и ще видите следното:

✓ Synced the "main" branch from ElixirCourseHW/homework-1-year-2023-IvanIvanoff to local repository

За да започнете работа върху нова задача, върнете се обратно в main клона и създайте нов клон и изпълнете стъпките отново. Нужно е да го направите от main клона, за да започнете новата задача от състоянието, което съдържа последните промени.

$ git checkout main
$ git checkout -b fix-known-bugs-in-solution

Забележка: Това не е единственият начин за работа с git и Github, но е един от най-лесните. При добро познаване на git, работният процес може да протече по различен начин.

SSH автентикация

Настройването на SSH автентикация е една идея по-сложно от използването на Github CLI и няма да го описваме подробно тук. Инструкции може да намерите тук