Процесс проверки ДЗ
- Для каждой домашней работы должна быть создана отдельная папка в Subversion-репозитории. Точное имя директории, а также список и названия исходных файлов, которые необходимо использовать, будут указаны в формулировке задачи. Не кладите в репозиторий ненужные файлы (файлы проектов, настройки IDE, бинарники и т. д.).
- После реализации задачи и ее коммита в репозиторий в системе Trac (https://trac.compscicenter.ru/itmo/) должен быть создан тикет (ticket) проверяющему преподавателю (owner). Логин преподавателя — makarov. Логин в trac совпадает с логином в Subversion-репозитории.
- Этот тикет должен иметь тип «Ожидается проверка», компонент «HW #N» (домашнее задание) или «WW #N» (недельное задание) (N --- номер ДЗ) и версию «M» (M --- номер попытки). В ответ на этот тикет преподаватель проверит вашу работу и изменит тип на «Ожидаются исправления» с описанием проблем. Об этом вам должна прийти нотификация на почту (если вы еще не настроили ее в trac’e, сделайте это как можно скорее). После исправлений вы снова изменяете тип тикета и его версию. Всего допускается 3 попытки сдачи задачи (3 версии ДЗ).
- Результат сдачи задачи также будет указан в тикете (либо зачтена, либо нет с указанием причин).
- При систематическом или грубом невыполнении рекомендаций проверяющий преподаватель оставляет за собой право не проверять задачу и поставить незачет.
Уважайте, пожалуйста, труд проверяющего преподавателя.
Примерный алгоритм сдачи
- Проверяете, что ваше решение компилируется, работает и удовлетворяет описанию конкретного домашнего задания и общим рекомендациям (см. документ на вики и текст ДЗ).
- Делаете commit в репозиторий.
- Создаёте ticket с просьбой о проверке. В поле владельца тикета должно быть makarov.
- В тикете указываете
milestone
, к которому вы сдаёте, а также тип тикета ожидается проверка (текущее состояние тикета).
- Ждёте ответа =) Не забудьте указать свой
email
в настройках для получения уведомлений.
- Преподаватель проверяет вашу работу и выписывает замечания в тикете.
- Если задача зачтена, тикет закрывается со статусом задача сдана. Конец.
- Если задача не зачтена и время последней проверки истекло, тикет закрывается со статусом задача НЕ зачтена. Конец.
- Если задача не зачтена, но время последней проверки не истекло, у тикета меняется тип на ожидаются исправления и указывается
milestone
после которого будет производится проверка.
- Вы исправляете ошибки и замечания, делаете commit в репозиторий.
- Если есть вопросы по решению или проверке, их необходимо задать в комментарии к тикету.
- Когда вы считаете, что ваше решение можно проверять, меняете тип тикета на ожидается проверка. Переходите к шагу 5.
- Каждая задача сдаётся в отдельном тикете. Все исправления, вопросы и замечания по одной и той же задаче оформляются в одном и том же тикете.
Краткое описание того, как пользоваться Subversion:
Предположим, что вы получили следующие данные для авторизации в Subversion:
- Логин: ilya.makarov
- Пароль: 123qwe!
- Адрес репозитория будет такой: https://trac.compscicenter.ru/itmo-svn/cpp21/ilya.makarov/ (это адрес вашей папки в репозитории).
Для того, чтобы загрузить туда своё домашнее задание, совершенно бесполезно открывать соответствующую ссылку в браузере. Для работы с Subversion нужно поставить и использовать клиент.
О Subversion и используемых в нём сущностях и понятиях можно прочитать в данной книге http://svnbook.red-bean.com/nightly/ru/index.html.
- Самый простой способ для Windows пользователей - поставить графический клиент TortoiseSVN, с которым всё просто и приятно. Для него доступна документация на русском языке, в которой описаны основные концепции Subversion, как сделать выгрузку, как добавить файлы и закоммитить в репозиторий, как понять текущее состояние репозитория.
- Если у Вас не Windows или вы хотите всё делать из консоли, то смело ставьте консольный клиент (например, sudo apt-get install subversion на Debian-based дистрибутиве Linux). Для консольного клиента доступно руководство по использованию на русском языке, в котором описаны фундаментальные понятия, как сделать выгрузку, как добавить файлы, закоммитить в репозиторий, понять текущее состояние репозитория.
Примерная последовательность команд
- При помощи клиента нужно выгрузить (checkout) репозиторий - у Вас создастся папка на компьютере.
- После этого нужно создать внутри папку для домашнего задания.
- Положить в неё свои файлы. Добавить (add) папку к репозиторию.
- Сделать коммит (commit) изменений на сервер.
ВНИМАНИЕ: не стоит добавлять в репозиторий лишние файлы, такие как бинарные файлы или служебные файлы вашей IDE.
Пример работы из консоли
Для консольных пользователей последовательность команд должна быть примерно такой:
$ svn checkout https://trac.compscicenter.ru/itmo-svn/cpp21/ilya.makarov/ --username ilya.makarov [ вводите пароль ] $ cd ilya.makarov $ mkdir ha1 [ кладёте в ha1 свои .cpp и .hpp файлы + Makefile ] $ svn add ha1 $ svn commit -m "Home assignment #1" [ теперь добавленные файлы доступны на сервере ] [ предположим, теперь нужно исправить ошибку в ha1/main.cpp ] [ вносите исправления в ha1/main.cpp ] $ svn add ha1/main.cpp $ svn commit -m "Fix main function" [ исправления отправлены на сервер ]
Закрепление изменений в репозитории
Закрепление (commit) изменений в SVN происходит в две стадии, независимо от того, сдаёте вы домашнее задание в первый раз или исправляете.
Сначала вы отмечаете файлы, которые надо добавить/удалить из репозитория. Подключение к интернету для этого не требуется. Отмечать файлы, которые в репозитории уже были, но поменялись, не требуется, они обнаружатся автоматически.
После этого вы выполняете команду svn commit
, которая просит указать комментарий к внесённым изменениям (опционально) и отправляет данные на сервер. Для этого требуется подключение к интернету.
Как отмечать файлы:
- Перейдите в корень личного репозитория.
- Командой
svn status
выясните текущее состояние файлов в репозитории. Каждый файл/папка в необычном состоянии будет выведен отдельной строкой.- Знаком ? отмечены файлы или папки, которые не добавлены в репозиторий ни в каком виде.
- Знаком A отмечены файлы или папки, которые будут добавлены в репозиторий в ближайшем коммите.
- Знаком D отмечены файлы или папки, которые будут удалены из репозитория в ближайшем коммите.
- Знаком M отмечены файлы или папки, которые изменились по сравнению с последним коммитом. Эти изменения будут закреплены в ближайшем коммите.
- Знаком ! отмечены файлы или папки, которые на диске отсутствуют, но которые были отмечены для добавления в репозиторий командой
svn add
.
- Если есть файлы, которые в репозиторий добавлять не требуется (например, исполняемые файлы), уберите их командой
svn rm --keep-local lab1
. Ключ--keep-local
означает "удалить файл из репозитория, но не с жёсткого диска".
- Командой
svn status
убедитесь, что в репозиторий отправляются только нужные файлы, а ненужные (объектные файлы, исполняемый файл, временные файлы для отладки) — не отправляются.
- Вы также можете научить svn игнорировать файлы с определённым именем в произвольной папке, чтобы можно было обновлять всю папку рекурсивно — см. ниже (это не требуется для сдачи ДЗ).
- Выполните команду
svn commit
и введите комментарий к коммиту.
Игнорирование файлов
Если вы уже добавили ненужные файлы по ошибке, уберите их командой svn rm --keep-local
.
Выполните команду svn propedit svn:ignore .
в папке, для которой требуется настроить игнорирование.
В открывшемся текстовом редакторе напишите маски для имён файлов, которые надо игнорировать, по одной на строчку. Например: *.obj
или .in
.
Скорее всего, у вас открылся редактор nano. В нём нельзя выделять текст, но можно его писать и стирать. Сохраните файл и закройте редактор.
Из редактора nano можно одновременно выйти и сохранить файл сочетанием клавиш Ctrl+X. После этого сочетания надо либо согласиться сохранить файл (y), либо отказаться (n). Имя файла для сохранения оставьте без изменений.
Командой svn status
убедитесь, что все ненужные файлы теперь игнорируются, а папка с обновлённым правилами игнорирования помечена буквой M.