wiki:WikiStart

Процесс проверки ДЗ

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

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

Примерный алгоритм сдачи

  1. Проверяете, что ваше решение компилируется, работает и удовлетворяет описанию конкретного домашнего задания и ​общим рекомендациям (см. документ на вики и текст ДЗ).
  1. Делаете commit в репозиторий.
  1. Создаёте ticket с просьбой о проверке. В поле владельца тикета должно быть makarov.
  1. В тикете указываете milestone, к которому вы сдаёте, а также тип тикета ожидается проверка (текущее состояние тикета).
  1. Ждёте ответа =) Не забудьте указать свой email в настройках для получения уведомлений.
  1. Преподаватель проверяет вашу работу и выписывает замечания в тикете.
  1. Если задача зачтена, тикет закрывается со статусом задача сдана. Конец.
  1. Если задача не зачтена и время последней проверки истекло, тикет закрывается со статусом задача НЕ зачтена. Конец.
  1. Если задача не зачтена, но время последней проверки не истекло, у тикета меняется тип на ожидаются исправления и указывается milestone после которого будет производится проверка.
  1. Вы исправляете ошибки и замечания, делаете commit в репозиторий.
  1. Если есть вопросы по решению или проверке, их необходимо задать в комментарии к тикету.
  1. Когда вы считаете, что ваше решение можно проверять, меняете тип тикета на ожидается проверка. Переходите к шагу 5.
  1. Каждая задача сдаётся в отдельном тикете. Все исправления, вопросы и замечания по одной и той же задаче оформляются в одном и том же тикете.

Краткое описание того, как пользоваться Subversion:

Предположим, что вы получили следующие данные для авторизации в Subversion:

Для того, чтобы загрузить туда своё домашнее задание, совершенно бесполезно открывать соответствующую ссылку в браузере. Для работы с Subversion нужно поставить и использовать клиент.

О Subversion и используемых в нём сущностях и понятиях можно прочитать в ​данной книге http://svnbook.red-bean.com/nightly/ru/index.html.

Примерная последовательность команд

  1. При помощи клиента нужно выгрузить (checkout) репозиторий - у Вас создастся папка на компьютере.
  1. После этого нужно создать внутри папку для домашнего задания.
  1. Положить в неё свои файлы. Добавить (add) папку к репозиторию.
  1. Сделать коммит (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, которая просит указать комментарий к внесённым изменениям (опционально) и отправляет данные на сервер. Для этого требуется подключение к интернету.

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

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

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

Если вы уже добавили ненужные файлы по ошибке, уберите их командой svn rm --keep-local.

Выполните команду svn propedit svn:ignore . в папке, для которой требуется настроить игнорирование.

В открывшемся текстовом редакторе напишите маски для имён файлов, которые надо игнорировать, по одной на строчку. Например: *.obj или .in.

Скорее всего, у вас открылся редактор nano. В нём нельзя выделять текст, но можно его писать и стирать. Сохраните файл и закройте редактор.

Из редактора nano можно одновременно выйти и сохранить файл сочетанием клавиш Ctrl+X. После этого сочетания надо либо согласиться сохранить файл (y), либо отказаться (n). Имя файла для сохранения оставьте без изменений.

Командой svn status убедитесь, что все ненужные файлы теперь игнорируются, а папка с обновлённым правилами игнорирования помечена буквой M.

Last modified 3 years ago Last modified on 09/16/21 20:51:08