Информация по II Турниру юных инженеров-исследователей НГУ

Уважаемые участники II Турнира юных инженеров-исследователей НГУ!

Продолжается работа над задачами Турнира и появилось несколько общих объявлений:

1.

Для задач по программированию (№1 «Буратино», №2 «Лабиринт», №3 «Тренер») пришла пора следующего этапа: регистрация команд на SVN-сервере, освоение технологии работы с SVN-сервером и использование SVN-сервера в командной работе над задачами ТЮИИ.

Для этого в срок до 31 января 2016 года на адрес school.fit@nsu.ru  необходимо выслать:

  • название команды;
  • список логинов (можно с паролями) на каждого участника команды (если пароли не будут указаны, то они чуть позже будут сгенерированы автоматически и высланы тренеру команды);
  • электронный адрес команды, на который будут отправляться уведомления SVN-сервера обо всех изменениях в репозитории. Командам надо будет так настроить этот ящик, чтобы он пересылал все письма на адреса всех участников (потому что все должны видеть эти уведомления).

(все английскими буквами):

После регистрации команд на SVN-сервере, необходимо потренироваться со школьниками коллективной работе с ним. Для этого в приложении 1 дана краткая инструкция, разъясняющая основные приемы.

Ожидаем, что первоначально (пока работа не отрепетирована и не настроена) могут возникнуть сложности и непонимание каких-то моментов. Готовы консультировать и отвечать на вопросы по адресу school.fit@nsu.ru.

Уверены, что преодоление трудностей при работе с SVN-сервером, выведет процесс программирования на новый качественный уровень и повысит компетенции всех участников Турнира.

2.

Для тех, кто выбрал задачу №2 «Лабиринт» необходимо сообщить язык, на котором ведется программирование, чтобы получить среду, в которой можно будет тестировать своего робота.

 

 

Приложение 1

Краткая информация об SVN-сервере и основные этапы работы с ним

Обзор

Subversion — это программное обеспечение, которое позволяет организовать централизованное хранение данных, обеспечивает авторизованный доступ к ним и сохраняет историю их изменения. Данные хранятся в виде файлов на сервере, в специально отведённом месте (репозитории). Доступ к данным осуществляется с помощью программы-клиента (svn), базовыми процедурами которой является выгрузка данных из репозитория (checkout) и сохранение изменений (commit).

Выгрузка

Выгрузка данных осуществляется с помощью команды “svn checkout URL”, где URL — это адрес репозитория. В результате файлы данных скачиваются с сервера на компьютер разработчика, после чего разработчик может приступить к их редактированию. Скорее всего, каждому разработчику в вашей команде придётся выполнить это лишь один раз на своём компьютере — чтобы создать каталог для работы.

Сохранение изменений

После того как все необходимые изменения выполнены, разработчик может сохранить их на сервере (“залить изменения”). Для этого необходимо выполнить команду “svn commit” из каталога с изменёнными файлами. При выполнении этой команды потребуется написать комментарий, в котором следует кратко описать характер изменений. После этого все изменения будут сохранены на сервере вместе с комментарием и информацией об авторе.

Обновление локальной копии

Если кто-то в команде внёс изменения в проект (а об этом будут приходить уведомления на почту), то их стоит скорее забрать к себе на компьютер, чтобы работать далее с самой свежей версией файлов. Для этого необходимо выполнить команду “svn up” из каталога проекта.

Как начать работать?

Наш сервер имеет адрес https://dio.ledas.com

Поэтому адреса всех репозиториев команд имеют вид https://dio.ledas.com/svn/commandName (где commandName — это название вашей команды). По этому же адресу можно заходить в репозиторий с помощью браузера, чтобы увидеть текущую версию файлов (используйте свои логин и пароль для получения доступа к файлам).

 

Для начала работы установите на свой компьютер программу svn (версия для Windows доступна по адресу http://sourceforge.net/projects/win32svn/files/latest/download ). Далее выполните выгрузку данных из репозитория:

svn checkout https://dio.ledas.com/svn/commandName c:\project

(здесь вместо “c:\project” можно указать любой другой путь к каталогу, где вы планируете вести разработку проекта).

 

Теперь создайте тестовый файл, например, “file1.txt”. Чтобы поместить его на сервер, требуется сначала добавить его в svn:

svn add file1.txt

А потом “залить изменения”:

svn commit

(откроется текстовый редактор, в котором можно будет указать комментарий “test” или любой другой текст)

 

После этого любой другой участник вашей команды может проделать первый пункт (выгрузку данных из репозитория) на другом компьютере:

svn checkout https://dio.ledas.com/svn/commandName c:\project

 

У него в каталоге c:\project уже сразу будет ваш файл 1.txt. Давайте теперь он создаст файл 2.txt и добавит его в проект:

svn add 2.txt

svn commit

 

Затем возвращаемся на наш первый компьютер и выполняем команду “забрать себе изменения, сделанные другими” (это одна из самых часто используемых команд):

svn up

После этого вы обнаружите, что файл 2.txt появился и здесь.

Совместная работа

Одна из важных задач, решаемых средствами подобной системы хранения данных — организация совместной работы нескольких разработчиков над одним проектом. Рассмотрим, как это может происходить, если в проекте работают Андрей и Борис:

 

1. Андрей и Борис “обновляются из репозитория” (у них после этого есть самые свежие версии всех файлов) - оба выполняют команду

svn up

2. Андрей вносит изменения в файл file1 и заливает его в репозиторий, но перед этим ещё раз проверяет, что никто другой этот файл поменять не успел:

svn up

svn commit

(после первой команды ничего не изменится, но её обязательно надо привыкнуть делать, а вот после второй — изменённый файл добавится в репозиторий)

3. Борис тоже вносит изменения в тот же файл file1. И от тоже сначала выполняет проверку, а лишь потом заливает свой код:

svn up

(если Андрей и Борис меняли разные части файла file1, то система автоматически объединит все изменения обоих разработчиков — обычно так и происходит, а в противном случае система предложит каким-то образом совместить изменения Бориса с изменениями Андрея — это придётся сделать в ручном режиме)

И после этого Борис уже может отправить в репозиторий свои изменения (потому что он уже объединил их с изменениями Андрея):

svn commit

4. Далее Андрей, получив письмо с уведомлением о заливке Бориса, тоже обновляет свою версию:

svn up

(после этого у обоих разработчиков опять одинаковые версии файлов)

 

На первый взгляд это решение может показаться сложным, но если проделать такое хотя бы пару раз, то вы убедитесь, что это один из самых простых и естественных способов вести совместную разработку проекта. Скорее всего, вы будете очень редко попадать в ситуацию, что изменения в один файл внесли одновременно несколько разработчиков, поэтому достаточно просто запомнить правильную последовательность работы:

  1. svn up
  2. изменение файлов
  3. svn up
  4. svn commit

Как анализировать изменения кода?

Одна из самых важных команд для этого - “svn log”.

Пример использования:

svn log -r 20:25 https://dio.ledas.com/svn/commandName/task5

(показывает список всех изменений с 20-го по 25-е по пятой задаче)

Как организовать свои файлы?

Мы рекомендуем создать по одному каталогу на каждую задачу, в котором хранить тексты программ и тесты. Соответственно, структура ваших файлов будет примерно такая:

 

+ command_name

  • task1
    • src
      • program1.pas
    • tests
      • test1.txt
      • test2.txt
  • task2

Что ещё почитать?

Начать стоит с описания https://ru.wikipedia.org/wiki/Subversion

За подробностями стоит обращаться к официально книге http://svnbook.red-bean.com/nightly/ru/svn-book.html