Grid-полигон МГУ-РАН

Средства разработки

Доступ к исходным текстам

Исходные тексты пакетов, представленных в репозитории http://grid.pp.ru/debian (подробнее), содержатся в git-репозиториях. Узнать расположение git-репозитория, используемого для сборки пакета, можно с помощью команды

apt-cache showsrc <имя пакета>
Note

Если apt-cache showsrc ничего не выводит, проверьте наличие deb-src записи в списке ресурсов.

Поле Vcs-Git в выводе этой команды содержит адрес git-репозитория, а Vcs-Browse — адрес для ознакомления с исходными текстами через веб.

Если в выводе apt-cache showsrc указанные поля отсутствуют, то можно попробовать найти репозиторий в gitweb. Крайне желательно сообщить о проблеме автору пакета, указанному в поле Maintainer вывода этой же команды, чтобы были внесены необходимые изменения.

Получение копии исходных текстов из git-репозитория производится с помощью команды

git clone <адрес>

Дальнейшую информацию о работе с git можно узнать из следующих источников:

Также доступ к исходным текстам можно получить, воспользовавшись стандартной командой

apt-get source <имя пакета>

Полученные таким образом исходные тексты можно использовать для внесения изменений и пересборки пакета. Данная функциональность поддержана для совместимости со стандартными средствами управления пакетами, и является менее предпочтительной, чем использование git.

Создание общедоступного репозитория

Не смотря на то, что git является децентрализованной системой контроля версий и не требует наличия выделенного хранилища репозиториев, для обеспечения круглосуточного доступа функционирует машина grid.pp.ru.

Note
Получение учетной записи

Обратитесь к одному из администраторов grid.pp.ru для создания Вашей учетной записи. Кроме того, в папку /var/cache/git должна быть помещена символьная ссылка на директорию, куда вы будете помещать свои проекты. Обычно это директория $HOME/git/.

Для создания общедоступного репозитория следует при помощи ssh зайти на grid.pp.ru и в $HOME/git/ создать директорию Вашего проекта. Зайдите в только что созданную директорию и наберите

git init

Репозиторий готов. Как только в нем появится хотя бы один коммит, репозиторий будет отображен в gitweb.

Отправка изменений

После внесения изменений в рабочую ветвь проекта может потребоваться зафиксировать их (создать коммит). Для создания коммита, фиксирующего изменения в некотором списке файлов, выполните последовательность команд

git add <список файлов>
git commit

Чтобы отправить зафиксированные изменения на удаленную машину, используйте команду

git push <url>

<url> — путь до удаленного репозитория. Если не указать <url>, то будет использовано значение переменной url секции [remote "origin"] в файле .git/config.

Note
Протоколы доступа

Git поддерживает несколько протоколов доступа к содержимому удаленного репозитория. Протокол git по умолчанию дает права только на чтение, и поэтому git pull выдаст ошибку. Протокол ssh дает права и на чтение и на запись.

Создание ветви разработки

Существует несколько способов ведения параллельной работы над одним проектом при помощи git. Однако, основываясь на собственном опыте, наиболее удобным представляется следующий. Для того, чтобы присоединиться к разработке уже существующего проекта, следует сперва создать на вашей рабочей машине собственную рабочую копию репозитория командой git clone. Затем на grid.pp.ru создать директорию для общедоступного репозитория и произвести "голую" инициализацию

git init --bare
Note

"Голая" инициализация отличается от обычной лишь тем, что в этой копии репозитория нельзя будет вносить изменения в файлы проекта. Этот репозиторий будет хранить только вспомогательные файлы (объекты, ссылки, файлы конфигурации, описания и т.д.) и выполнять "транзитную" функцию. При этом снижается нагрузка на gitweb.

В своем рабочем версии в файле .git/config в секции [remote "origin"] нужно заменить значение url на ssh-адрес до директории проекта на grid.pp.ru. После этого можно отправлять и получать изменения командами git push и git pull.

Чтобы добавить

git remote add <name> <url>

Для обновления всех удаленных веток используйте команду.

git remote update

Эта команда эквивалентна применению git fetch для всех веток, которые выдает git remote без параметров.

Чтобы произвести слияние с одной из веток разработки, воспользуйтесь

git merge <имя ветки>

Создание нового пакета

Для добавления в репозиторий нового пакета ПО требуется создать доступный для системы сборки git-репозиторий. Это может быть как публичный (с протоколами доступа git или http), так и закрытый (ssh) репозиторий, однако в последнем случае требуется связаться с администраторами и настроить доступ для программы сборки. Пакет должен удовлетворять требованиям системы Debian и иметь в официальном или в локальном репозиториях все необходимые зависимости для сборки. Последнее требование необходимо, поскольку сборка пакетов осуществляется в чистой среде с каждый раз заново устанавливаемыми зависимостями (подробнее о системе сборки). Пересборка пакета осуществляется при появлении в репозитории нового тега вида debian/версия, где версия — текущая версия пакета соответствующая записи в файле debian/changelog (с заменой символа ~ на .).

Создание варианта существующего пакета

Для модификации пакета также как и для создания нового требуется создать git-репозиторий. Однако начальные данные в него можно загрузить сразу из .dsc и .orig.tar.gz файлов с помощью команды git-import-dsc из пакета git-build-package (страница проекта). Внесение изменений для пересборки пакета осуществляется также как и для нового.

Подготовка дистрибутива

Следующей после создания отдельных пакетов задачей является их подготовка для совместного использования в составе дистрибутива.

Контроль выполнения заданий

Используется DITZ (Домашняя страница проекта) — простая, легковесная, распределенная issue tracker, предназначенная для работы с распределенными системи контроля версий такими, как git, darcs, Mercurial и Bazaar.

git-clone git://grid.pp.ru/ditz

Получить список незавершенных заданий можно командой

ditz

Кроме того Вы можете посмотреть отчет о выполнении заданий через веб-интерфейс.

Для дальнейшего использования воспользуйтесь командой

ditz help

PTS

PTS (Packaging Tracking System) — система отслеживания состояния сборки пакетов. Для каждого пакета показывается его имя, последняя версия и состояние сборки.

Собственные средства

git-debian-release

  • используются списки репозитариев repo-list.

  • каждые полчаса или по запросу пользователя через web-интерфейс.