/git-2023-zharov-max

git-2023-zharov-max created by GitHub Classroom

Review Assignment Due Date

Зачёт по git

Вам представляется задание на проверку знаний системы контроля версий git.

git успешно применяется для совместной работы над большими проектам, в работе над которыми задействованы тысячи программистов, как например ядро Linux, поэтому в этом задании и вам нужно работать сообща. Обратите внимание, что, в отличии от домашних заданий, на этот раз репозиторий один на всех. Это означает, что каждый может и загружать свои изменения на GitHub, и получать все изменения с GitHub.

В начале работы в ветке master репозитория есть файл students.txt, ваша задача состоит в том, чтобы к концу зачета в репозитории оказался граф коммитов, составленный по определенным правилам, указанным ниже. Каждый из вас должен создать отдельную ветку (branch), название которой совпадает с вашим логином на GitHub, и производить все манипуляции только в этой ветке. Для успешного выполнения задания в последнем коммите вашей ветке в файле students.txt должно находиться не менее 70 процентов имен студентов, принявших участие в зачете, включая ваше собственное имя. Каждая строка должна содержать только одно имя.

В вашей ветке вам разрешается изменять только файл students.txt и только следующим образом:

  1. Можно добавлять (и с помощью команды git commit зафиксировать изменения) в файл строку со своим и только со своим именем.

Ваше имя должно быть укзаанно в таком же формате, в котором оно указано в поле Author в метаинформации к вашим коммитам: Имя <e-mail>, например Ivan Ivanov <ivan@example.ru>. Эту строку вы можете посмотреть с помощью git log в других ваших репозиториях или напечать с помощью команды

echo $(git config user.name)" <"$(git config user.email)">"

Для удобства, в исходном файле students.txt размещен пример формата записи, удалять его не нужно.

  1. Чтобы получить коммиты содержащие имена товарищей действует второе правило. Разрешается получать (git pull) и сливать (git merge) изменения из веток других студентов, чтобы получить недостающие коммиты содержащие строки с чужими для вас именами (каждое такое имя для кого-то будет являться своим, а значит будет добавлено и загружено на GitHub по правилу 1).

  2. При разрешении конфликтов слияния допускается переставлять существующие строки в произвольном порядке и убирать дубликаты.

  3. Запрещается использовать git rebase, git cherry-pick и другие средства редактирования истории ;-)

Рекомендации

  • Рекомендуется чаще отправлять изменения на GitHub.
  • Не забудьте добавить своё собственное имя в файл.
  • Обратите внимание, что слияние с веткой студента X позволяет получить коммиты со всеми записями которые там хранились на момент слияния, включая те, которые сам студент X успел подобрать у своих товарищей.
    • Отсюда следует, что при идеальной кооперации каждому потребуется выполнить порядка log(N) слияний (N = всего людей на зачете). Тогда можно предполагать что всеми студентами суммарно будет выполнено не более O(NlogN) операций слияний.
    • Обратите внимание, что существует стратегия, предполагающая, что суммарное число слияний выполненных всеми студентами линейно по количеству людей на зачете.