wiki:WikiStart

Version 46 (modified by Egor Suvorov, 5 years ago) (diff)

--

Терминология

"ДЗ" может использоваться как для больших домашних заданий, так и для еженедельных, даже в одном предложении.

"Лабораторная" может использоваться только для недельных домашних заданий.

Процесс сдачи ДЗ

  1. Для каждой домашней работы должна быть создана отдельная папка в Subversion-репозитории. Точное имя директории, а также список и названия исходных файлов, которые необходимо использовать, будут указаны в формулировке задачи. Не кладите в репозиторий ненужные файлы (файлы проектов, настройки IDE, бинарники и т. д.).
  1. После реализации задачи и ее коммита в репозиторий в системе Trac (https://trac.compscicenter.ru/hse/) должен быть создан тикет (ticket) проверяющему преподавателю (owner). Логины преподавателей — lapshin, suvorov, sokolov, alferov, sviridkin, huletski. Логин в trac совпадает с логином в Subversion-репозитории.
  1. Этот тикет должен иметь тип «Ожидается проверка», компонент «HW #N» (домашнее задание) или «WW #N» (недельное задание) (N --- номер ДЗ) и версию «M» (M --- номер попытки). В ответ на этот тикет преподаватель проверит вашу работу и изменит тип на «Ожидаются исправления» с описанием проблем. Об этом вам должна прийти нотификация на почту (если вы еще не настроили ее в trac’e, сделайте это как можно скорее). После исправлений вы снова изменяете тип тикета и его версию. Всего допускается 3 попытки сдачи задачи (3 версии ДЗ).
  1. Результат сдачи задачи также будет указан в тикете (либо зачтена, либо нет с указанием причин).
  1. При систематическом или грубом невыполнении рекомендаций проверяющий преподаватель оставляет за собой право не проверять задачу и поставить незачет.

Уважайте, пожалуйста, труд проверяющего преподавателя.

Подробная инструкция к сдаче первого ДЗ

Если на любом этапе возникают проблемы — просите помощи (например, у своего преподавателя по практике). Если какая-то команда не работает, но вы догадались, как её исправить — пожалуйста, напишите Егору Суворову, чтобы инструкцию обновили. Даже если прочли инструкцию, прочитайте общие комментарии выше!

Инструкция верна только для первой лабораторной. Но даже первую лабораторную можно сдавать чуть другими командами.

  1. Убедитесь, что у вас установлен клиент для системы контроля версий Subversion (SVN): запустите в консоли команду svn --version. Она должна вывести строчку вроде svn, version 1.8.13 (точная версия неважна).
    • Если команда svn не найдена, поставьте клиент. Под Ubuntu это можно сделать командой sudo apt-get install subversion. Может потребоваться ввести пароль пользователя для запуска команды sudo.
  2. Найдите в почте письмо с темой [HSE] C++ SVN repository, отправленное примерно 5 сентября 2019. Там должны быть:
    • Ваш логин и пароль — они совпадают для Trac (страница, на которой вы сейчас находитесь) и SVN. Логин вида lastname.firstname (ваши фамилия и имя латиницей, разделённые точкой).
    • Также там должна быть ссылка на ваш личный SVN-репозиторий вида https://trac.compscicenter.ru/hse-svn/cpp19/ivanov.ivan.
  3. Убедитесь, что пароль работает: зайдите на страницу логина Trac и введите логин с паролем.
  4. В домашней папке создаёте папку cpp2019.
  5. В консоли зайдите в эту папку и выполните команду svn checkout <адрес-вашего-репозитория>, например, svn checkout https://trac.compscicenter.ru/hse-svn/cpp19/ivanov.ivan. Введите свой логин и пароль от SVN.
    • Если у вас сразу спрашивают пароль для пользователя вроде osboxes (т.е. вашего пользователя в Ubuntu), просто нажмите Enter, ничего не набирая, после чего svn спросит логин.
    • Теперь в текущей папке (cpp2019) появилась папка с названием lastname.firstname. В ней есть только скрытая папка с именем .svn — это нормально (скрытые папки можно увидеть командой ls -a). Все файлы, положенные в эту папку (и только они) могут быть загружены в систему контроля версий. Она будет называться корнем личного репозитория.
  6. Создайте внутри корня личного репозитория папку lab_01 (регистр и нижние подчёркивания важны!).
  7. Создайте внутри папки lab_01 папки bin, include, src, а также файл Makefile (регистр важен!).
  8. Скопируйте файлы *.c из задания внутрь папки src.
  9. Закрепите изменения в репозитории (см. ниже). Это можно сделать и потом, но если вы закрепите изменения сейчас, то будет удобнее отслеживать, что вы изменили.
  10. Допишите Makefile, *.c-файлы, создайте нужные *.h-файлы внутри папки include.
    • При запуске команды make под Linux в папке lab_01 без параметров в папке lab_01 должен появляться исполняемый файл lab1. Под Windows можно создавать файл lab1.exe — в правильно написанном Makefile это получится автоматически, специально для Windows ничего делать не надо.
  11. Проверьте, что решение корректно.
  12. Закрепите изменения в репозитории (см. ниже).
  13. Перейдите на страницу https://trac.compscicenter.ru/hse/newticket и создайте новый тикет.
    1. В поле Summary впишите WW #1.
    2. Поле Reporter оставьте без изменений, тут должен быть ваш логин в Trac и SVN.
    3. В поле Type оставьте ожидается проверка. 1 В поле Component выберите WW_make.
    4. В поле Version выберите 1.0.
    5. В группе Action выберите assign to и в поле справа впишите логин преподавателя (фамилия латиницей): sokolov, sviridkin, lapshin, suvorov, huletski, alferov.
    6. Если хотите, можете написать комментарии по решению в поле Description. Вопросы лучше писать напрямую преподавателю.
    7. Нажмите кнопку "Create ticket"

Исправление замечаний

Если вам пришли замечания, которые вы хотите исправить и попробовать сдать ещё раз:

  1. Исправьте в папке lab_01 все замечания.
  2. Проверьте, что решение корректно.
  3. Проверьте, что все замечания исправлены.
  4. Закрепите изменения в репозитории (см. ниже).
  5. Перейдите на страницу своего тикета. Если хотите, добавьте ответы на замечания в поле Add comment внизу. После этого откройте группу Modify Ticket и обновите свойства:
    1. Смените Version на более старшую: 1.0 на 2.0, а 2.0 — на 3.0. Версия 3.0 — это последняя попытка сдать.
    2. Смените Type на ожидается проверка.
    3. Остальные поля (в том числе Description) оставьте без изменений.

Закрепление изменений в репозитории

Закрепление (commit) изменений в SVN происходит в две стадии, независимо от того, сдаёте вы домашнее задание в первый раз или исправляете.

  1. Сначала вы отмечаете файлы, которые надо добавить/удалить из репозитория. Подключение к интернету для этого не требуется.
  2. После этого вы выполняете команду svn commit, которая просит указать комментарий к внесённым изменениям (опционально) и отправляет данные на сервер. Для этого требуется подключение к интернету.

Как отмечать файлы:

  1. Перейдите в корень личного репозитория.
  2. Командой svn status выясните текущее состояние файлов в репозитории. Каждый файл/папка в необычном состоянии будет выведен отдельной строкой.
    • Знаком ? отмечены файлы или папки, которые не добавлены в репозиторий ни в каком виде.
    • Знаком A отмечены файлы или папки, которые будут добавлены в репозиторий в ближайшем коммите.
    • Знаком D отмечены файлы или папки, которые будут удалены из репозитория в ближайшем коммите.
    • Знаком M отмечены файлы или папки, которые изменились по сравнению с последним коммитом. Эти изменения будут закреплены в ближайшем коммите.
    • Знаком ! отмечены файлы или папки, которые на диске отсутствуют, но которые были отмечены для добавления в репозиторий командой svn add.
  3. Если есть файлы, которые в репозиторий добавлять не требуется (например, исполняемый файл lab1), уберите их командой svn rm --keep-local lab1. Ключ --keep-local означает "удалить файл из репозитория, но не с жёсткого диска".
  4. Если есть папки или файлы, которые надо добавить (например, bin), добавьте их командой svn add --non-recursive bin. Ключ --non-recursive означает "не отмечай рекурсивно все файлы и папки из добавляемой папки".
  5. Командой svn status убедитесь, что в репозиторий отправляются только нужные файлы, а ненужные (объектные файлы, исполняемый файл, временные файлы для отладки) — не отправляются.
    • Вы также можете научить svn игнорировать файлы с определённым именем в произвольной папке, чтобы можно было обновлять всю папку рекурсивно — см. ниже (это не требуется для сдачи ДЗ).
  6. Выполните команду svn commit и введите комментарий к коммиту (опционально).

Игнорирование файлов

  1. Если вы уже добавили ненужные файлы по ошибке, уберите их командой svn rm --keep-local
  2. Выполните команду svn propedit svn:ignore в папке, для которой требуется настроить игнорирование.
  3. В открывшемся текстовом редакторе напишите маски для имён файлов, которые надо игнорировать, по одной на строчку.
    • Например: lab1 или *.in.
  4. Сохраните файл и закройте редактор.
  5. Командой svn status убедитесь, что все ненужные файлы теперь игнорируются, а папка с обновлённым правилами игнорирования помечена буквой M.

Прочие любопытные команды

svn log, svn diff, svn revert — запустите их с ключом --help и загуглите, чтобы узнать, что они делают.