Терминология
"ДЗ" может использоваться как для больших домашних заданий, так и для еженедельных, даже в одном предложении.
"Лабораторная" может использоваться только для недельных домашних заданий.
Процесс сдачи ДЗ
- Для каждой домашней работы должна быть создана отдельная папка в Subversion-репозитории. Точное имя директории, а также список и названия исходных файлов, которые необходимо использовать, будут указаны в формулировке задачи. Не кладите в репозиторий ненужные файлы (файлы проектов, настройки IDE, бинарники и т. д.).
- После реализации задачи и ее коммита в репозиторий в системе Trac (https://trac.compscicenter.ru/hse/) должен быть создан тикет (ticket) проверяющему преподавателю (owner). Логины преподавателей — lapshin, suvorov, sokolov, alferov, sviridkin, huletski. Логин в trac совпадает с логином в Subversion-репозитории.
- Этот тикет должен иметь тип «Ожидается проверка», компонент «HW #N» (домашнее задание) или «WW #N» (недельное задание) (N --- номер ДЗ) и версию «M» (M --- номер попытки). В ответ на этот тикет преподаватель проверит вашу работу и изменит тип на «Ожидаются исправления» с описанием проблем. Об этом вам должна прийти нотификация на почту (если вы еще не настроили ее в trac’e, сделайте это как можно скорее). После исправлений вы снова изменяете тип тикета и его версию. Всего допускается 3 попытки сдачи задачи (3 версии ДЗ).
- Результат сдачи задачи также будет указан в тикете (либо зачтена, либо нет с указанием причин).
- При систематическом или грубом невыполнении рекомендаций проверяющий преподаватель оставляет за собой право не проверять задачу и поставить незачет.
Уважайте, пожалуйста, труд проверяющего преподавателя.
Подробная инструкция к сдаче первого ДЗ
Если на любом этапе возникают проблемы — просите помощи (например, у своего преподавателя по практике). Если какая-то команда не работает, но вы догадались, как её исправить — пожалуйста, напишите Егору Суворову, чтобы инструкцию обновили. Даже если прочли инструкцию, прочитайте общие комментарии выше!
Инструкция верна только для первой лабораторной. Но даже первую лабораторную можно сдавать чуть другими командами.
- Убедитесь, что у вас установлен клиент для системы контроля версий Subversion (SVN): запустите в консоли команду
svn --version
. Она должна вывести строчку вродеsvn, version 1.8.13
(точная версия неважна).- Если команда
svn
не найдена, поставьте клиент. Под Ubuntu это можно сделать командойsudo apt-get install subversion
. Может потребоваться ввести пароль пользователя для запуска командыsudo
.
- Если команда
- Найдите в почте письмо с темой
[HSE] C++ SVN repository
, отправленное примерно 5 сентября 2019. Там должны быть:- Ваш логин и пароль — они совпадают для Trac (страница, на которой вы сейчас находитесь) и SVN. Логин вида
lastname.firstname
(ваши фамилия и имя латиницей, разделённые точкой). - Также там должна быть ссылка на ваш личный SVN-репозиторий вида
https://trac.compscicenter.ru/hse-svn/cpp19/ivanov.ivan
.
- Ваш логин и пароль — они совпадают для Trac (страница, на которой вы сейчас находитесь) и SVN. Логин вида
- Убедитесь, что пароль работает: зайдите на страницу логина Trac и введите логин с паролем.
- В домашней папке создаёте папку
cpp2019
. - В консоли зайдите в эту папку и выполните команду
svn checkout <адрес-вашего-репозитория>
, например,svn checkout https://trac.compscicenter.ru/hse-svn/cpp19/ivanov.ivan
. Введите свой логин и пароль от SVN.- Если у вас сразу спрашивают пароль для пользователя вроде
osboxes
(т.е. вашего пользователя в Ubuntu), просто нажмите Enter, ничего не набирая, после чегоsvn
спросит логин. - Теперь в текущей папке (
cpp2019
) появилась папка с названиемlastname.firstname
. Она будет называться корнем личного репозитория. Все файлы, положенные в эту папку (и только они) могут быть загружены в систему контроля версий. Сейчас в ней есть только скрытая папка с именем.svn
— это нормально (скрытые папки можно увидеть командойls -a
). В папку.svn
ничего класть не надо, там лежат внутренние файлы svn. Кладите рядом с.svn
, прямо в корень личного репозитория.
- Если у вас сразу спрашивают пароль для пользователя вроде
- Создайте внутри корня личного репозитория папку
lab_01
(регистр и нижние подчёркивания важны!). - Создайте внутри папки
lab_01
папкуcorrect
(это специфично для первой лабы, в остальных наверняка эта промежуточная папка не будет нужна). - Создайте внутри папки
correct
папкиinclude
,src
, а также файлMakefile
(регистр важен!). - Скопируйте файлы
*.c
из задания внутрь папкиsrc
. - Закрепите изменения в репозитории (см. ниже). Это можно сделать и потом, но если вы закрепите изменения сейчас, то будет удобнее отслеживать, что вы изменили.
- Допишите
Makefile
,*.c
-файлы, создайте нужные*.h
-файлы внутри папкиinclude
.- При запуске команды
make
под Linux в папкеlab_01/correct
без параметров в папкеlab_01/correct
должен появляться исполняемый файлlab1
. Под Windows можно создавать файлlab1.exe
— в правильно написанномMakefile
это получится автоматически, специально для Windows ничего делать не надо.
- При запуске команды
- Выполните оставшиеся пункты задания, создав папки
unresolved
иmultiple
внутри папкиlab_01
и наполнив их нужным содержимым. - Проверьте, что решение корректно.
- Закрепите изменения в репозитории (см. ниже).
- Перейдите на страницу https://trac.compscicenter.ru/hse/newticket и создайте новый тикет.
- В поле
Summary
впишитеWW #1
. - Поле
Reporter
оставьте без изменений, тут должен быть ваш логин в Trac и SVN. - В поле
Type
оставьтеожидается проверка
. - В поле
Component
выберитеWW_make
. - В поле
Version
выберите1.0
. - В группе
Action
выберитеassign to
и в поле справа впишите логин преподавателя (фамилия латиницей):sokolov
,sviridkin
,lapshin
,suvorov
,huletski
,alferov
. - Если хотите, можете написать комментарии по решению в поле
Description
. Вопросы лучше писать напрямую преподавателю. - Нажмите кнопку "Create ticket"
- В поле
- Ожидайте проверки. Если проверки нет в ожидаемый срок (по договорённости с преподавателем) — напишите преподавателю.
Исправление замечаний
Если вам пришли замечания, которые вы хотите исправить и попробовать сдать ещё раз:
- Исправьте в папке
lab_01
все замечания. - Проверьте, что решение корректно.
- Проверьте, что все замечания исправлены.
- Закрепите изменения в репозитории (см. ниже).
- Перейдите на страницу своего тикета. Если хотите, добавьте ответы на замечания в поле
Add comment
внизу. После этого откройте группуModify Ticket
и обновите свойства:- Смените
Version
на более старшую:1.0
на2.0
, а2.0
— на3.0
. Версия3.0
— это последняя попытка сдать. - Смените
Type
наожидается проверка
. - Выберите
Action
reassign to
и впишите туда логин своего преподавателя (фамилия маленькими латинскими буквами). После этого свойствоOwner
должно поменяться. - Остальные поля (в том числе
Description
) оставьте без изменений.
- Смените
Закрепление изменений в репозитории
Закрепление (commit) изменений в SVN происходит в две стадии, независимо от того, сдаёте вы домашнее задание в первый раз или исправляете.
- Сначала вы отмечаете файлы, которые надо добавить/удалить из репозитория. Подключение к интернету для этого не требуется. Отмечать файлы, которые в репозитории уже были, но поменялись, не требуется, они обнаружатся автоматически.
- После этого вы выполняете команду
svn commit
, которая просит указать комментарий к внесённым изменениям (опционально) и отправляет данные на сервер. Для этого требуется подключение к интернету.
Как отмечать файлы:
- Перейдите в корень личного репозитория.
- Командой
svn status
выясните текущее состояние файлов в репозитории. Каждый файл/папка в необычном состоянии будет выведен отдельной строкой.- Знаком
?
отмечены файлы или папки, которые не добавлены в репозиторий ни в каком виде. - Знаком
A
отмечены файлы или папки, которые будут добавлены в репозиторий в ближайшем коммите. - Знаком
D
отмечены файлы или папки, которые будут удалены из репозитория в ближайшем коммите. - Знаком
M
отмечены файлы или папки, которые изменились по сравнению с последним коммитом. Эти изменения будут закреплены в ближайшем коммите. - Знаком
!
отмечены файлы или папки, которые на диске отсутствуют, но которые были отмечены для добавления в репозиторий командойsvn add
.
- Знаком
- Если есть файлы, которые в репозиторий добавлять не требуется (например, исполняемый файл
lab1
), уберите их командойsvn rm --keep-local lab1
. Ключ--keep-local
означает "удалить файл из репозитория, но не с жёсткого диска". - Если есть папки или файлы, которые надо добавить (например,
bin
), добавьте их командойsvn add --non-recursive bin
. Ключ--non-recursive
означает "не отмечай рекурсивно все файлы и папки из добавляемой папки". - Командой
svn status
убедитесь, что в репозиторий отправляются только нужные файлы, а ненужные (объектные файлы, исполняемый файл, временные файлы для отладки) — не отправляются.- Вы также можете научить
svn
игнорировать файлы с определённым именем в произвольной папке, чтобы можно было обновлять всю папку рекурсивно — см. ниже (это не требуется для сдачи ДЗ).
- Вы также можете научить
- Выполните команду
svn commit
и введите комментарий к коммиту (опционально).
Игнорирование файлов
- Если вы уже добавили ненужные файлы по ошибке, уберите их командой
svn rm --keep-local
- Выполните команду
svn propedit svn:ignore .
в папке, для которой требуется настроить игнорирование. - В открывшемся текстовом редакторе напишите маски для имён файлов, которые надо игнорировать, по одной на строчку.
- Например:
lab1
или*.in
. - Скорее всего, у вас открылся редактор nano. В нём нельзя выделять текст, но можно его писать и стирать.
- Например:
- Сохраните файл и закройте редактор.
- Из редактора
nano
можно одновременно выйти и сохранить файл сочетанием клавишCtrl+X
. После этого сочетания надо либо согласиться сохранить файл (y
), либо отказаться (n
). Имя файла для сохранения оставьте без изменений.
- Из редактора
- Командой
svn status
убедитесь, что все ненужные файлы теперь игнорируются, а папка с обновлённым правилами игнорирования помечена буквойM
.
Прочие любопытные команды
svn log
, svn diff
, svn revert
— запустите их с ключом --help
и загуглите, чтобы узнать, что они делают.