GitEtersoftPolicy: различия между версиями
(Import from wiki.etersoft.ru) |
|||
Строка 15: | Строка 15: | ||
=== Введение === | === Введение === | ||
Основной целью этого документа является подробное описание регламента работы с [ | Основной целью этого документа является подробное описание регламента работы с [[GitEtersoft]]. Регламент прежде всего направлен на указание типичной схемы распределения прав, которую позволяет организовать схема взаимодействия с [[UsesGit git-репозиториями]] по протоколу ssh. | ||
Строка 21: | Строка 21: | ||
=== Минимальные необходимые требования === | === Минимальные необходимые требования === | ||
Для полноценной работы с [ | Для полноценной работы с [[GitEtersoft]] необходимо получить доступ по протоколу ssh к серверу git.etersoft.ru. Правила по созданию и управлению ключами для работы с git.etersoft.ru составлены на основе [http://www.altlinux.org/Join правил вступления в команду ALT Linux]. | ||
Строка 31: | Строка 31: | ||
# Выбрать псевдоним (имя пользователя) разработчика. Стоит сделать его совпадающим с именем в почтовом адресе псевдоним@etersoft.ru; | # Выбрать псевдоним (имя пользователя) разработчика. Стоит сделать его совпадающим с именем в почтовом адресе псевдоним@etersoft.ru; | ||
# Создать новый | # Создать новый SSH ключ с паролем и высылать публичную часть ключа. Этот ключ будет необходим для доступа к [http://wiki.etersoft.ru//UsesGitEtersoft Girar]. | ||
Строка 71: | Строка 71: | ||
# У каждого разработчика и мейнтейнера есть свой набор репозиториев, аналогично тому, как это организовано в git.altlinux.ru/people (<div style="display: inline; color: red;">лишнее сравнение</div>). Этот набор репозиториев — сфера ответственности одного человека, его промежуточные и конечные | # У каждого разработчика и мейнтейнера есть свой набор репозиториев, аналогично тому, как это организовано в git.altlinux.ru/people (<div style="display: inline; color: red;">лишнее сравнение</div>). Этот набор репозиториев — сфера ответственности одного человека, его промежуточные и конечные результаты. | ||
# Результат деятельности по отдельному пакету фиксируется по заданной ветке репозитория того, кто является ведущим этого проекта (в данном случае я несколько вольно употребляю слова пакет и проект как синонимы, обычно проект может в себя вкпючать более одного пакета). | # Результат деятельности по отдельному пакету фиксируется по заданной ветке репозитория того, кто является ведущим этого проекта (в данном случае я несколько вольно употребляю слова пакет и проект как синонимы, обычно проект может в себя вкпючать более одного пакета). | ||
Строка 87: | Строка 87: | ||
# Робот регулярно (например ежедневно), проверяет наличие новых пакетов сравнением текущей версии пакета с самой старшей версией тега (вида пакета-версия-релиз) в репозиории. | # Робот регулярно (например ежедневно), проверяет наличие новых пакетов сравнением текущей версии пакета с самой старшей версией тега (вида пакета-версия-релиз) в репозиории. | ||
## После получения списка пакетов на пересборку | ## После получения списка пакетов на пересборку производится процесс пересборки с учётом зависимостей | ||
## Для принудительной сборки пакета существует скрипт, которым пользуется Робот. Скрипт позволяет по имени пакета и соответствию пакетов разработчикам, найти и выбрать нужный репозитарий и собрать пакет последней или заданной версии. | ## Для принудительной сборки пакета существует скрипт, которым пользуется Робот. Скрипт позволяет по имени пакета и соответствию пакетов разработчикам, найти и выбрать нужный репозитарий и собрать пакет последней или заданной версии. | ||
Строка 107: | Строка 107: | ||
# Отдельные задачи можно легко передавать от одного разработчику, не задаваясь вопросом о правах. Каждый вновь получающий пакет, выписывает его у последнего. Например, я веду пакет [http://wiki.etersoft.ru/Package1 Package1]. Потом его передают Диме, затем над ним продолжает работу Сергей. | # Отдельные задачи можно легко передавать от одного разработчику, не задаваясь вопросом о правах. Каждый вновь получающий пакет, выписывает его у последнего. Например, я веду пакет [http://wiki.etersoft.ru/Package1 Package1]. Потом его передают Диме, затем над ним продолжает работу Сергей. | ||
# Можно проводить аудит и коррекцию работы, а также помогать, не мешая работе основного разработчика. Например, Сергей ведёт пакет [http://wiki.etersoft.ru/Pаckage2 Pаckage2]. Я ''выписываю'' его текущий результат, | # Можно проводить аудит и коррекцию работы, а также помогать, не мешая работе основного разработчика. Например, Сергей ведёт пакет [http://wiki.etersoft.ru/Pаckage2 Pаckage2]. Я ''выписываю'' его текущий результат, обнаруживаю недочёт и сообщаю ему об этом. Он выписывает мои исправления к себе в основной код или отдельную ветку. Последнее тоже важно. Мои изменения могут показаться Сергею недостаточными, но он сможет посмотреть их, не внося изменения в свой основной код. | ||
# Можно качественно проводить совместную работу удалёнными друг от друга разработчиками. | # Можно качественно проводить совместную работу удалёнными друг от друга разработчиками. Ответственным за сбор конечного пакета является один человек - ведущий. Именно из его репозитория собирается результат в репозиториях доступных обновлений. Например, Я веду пакет Package3, со мной вместе его ведут ещё два человека. При необходимости они всегда могут получить мои изменения, но могут вести свои работы отдельно. Моя ответственность состоит в том, чтобы согласовать ветку, в которой я получаю результаты их работ. Между тем они сами могут брать изменения друг у друга, а могут доверять мне и регулярно сообщая мне о своих результатах, могут обмениваться изменениями через меня. | ||
Текущая версия на 21:30, 15 октября 2019
Порядок работы с GitEtersoft
Введение
Основной целью этого документа является подробное описание регламента работы с GitEtersoft. Регламент прежде всего направлен на указание типичной схемы распределения прав, которую позволяет организовать схема взаимодействия с UsesGit git-репозиториями по протоколу ssh.
Минимальные необходимые требования
Для полноценной работы с GitEtersoft необходимо получить доступ по протоколу ssh к серверу git.etersoft.ru. Правила по созданию и управлению ключами для работы с git.etersoft.ru составлены на основе правил вступления в команду ALT Linux.
Необходимые действия для создания ключей:
- Выбрать псевдоним (имя пользователя) разработчика. Стоит сделать его совпадающим с именем в почтовом адресе псевдоним@etersoft.ru;
- Создать новый SSH ключ с паролем и высылать публичную часть ключа. Этот ключ будет необходим для доступа к Girar.
Ключ создаётся следующей командой:
$ ssh-keygen -t dsa
Публичная часть ключа — файл /.ssh/id_dsa.pub
- Создать GPG/PGP ключ (DSA and ElGamal, 2048 бит. В ключе должен быть uid вида псевдоним@etersoft.ru) и выслать его публичную часть
Ключ высылается в ASCII виде. Экспортирование выполняется следующей командой:
$ gpg --export --armor [имя ключа] >[файл с экспортированным в ASCII ключом]
Регламент работы GitEtersoft
Порядок работы разработчиков
- У каждого разработчика и мейнтейнера есть свой набор репозиториев, аналогично тому, как это организовано в git.altlinux.ru/people (лишнее сравнение). Этот набор репозиториев — сфера ответственности одного человека, его промежуточные и конечные результаты.
- Результат деятельности по отдельному пакету фиксируется по заданной ветке репозитория того, кто является ведущим этого проекта (в данном случае я несколько вольно употребляю слова пакет и проект как синонимы, обычно проект может в себя вкпючать более одного пакета).
- При необходимости совместно вести работу разработчики синхронизируются по репозитарию ведущего, но могут самостоятельно вести работу в своём репозитории.
Автоматическая сборка централизованного репозитория
- Центральный репозитарий пакетов компании собирает робот, в настройках которого указаны разработчики и пакеты, за которые они отвечают.
- Робот регулярно (например ежедневно), проверяет наличие новых пакетов сравнением текущей версии пакета с самой старшей версией тега (вида пакета-версия-релиз) в репозиории.
- После получения списка пакетов на пересборку производится процесс пересборки с учётом зависимостей
- Для принудительной сборки пакета существует скрипт, которым пользуется Робот. Скрипт позволяет по имени пакета и соответствию пакетов разработчикам, найти и выбрать нужный репозитарий и собрать пакет последней или заданной версии.
- После сборки пакета робот отправляет лог сборки разработчику - с успехом или ошибкой.
Каждая успешная сборка импортируется, с помощью gear-srpmimport, в отдельный репозиторий результирующих сборок - аналог http://git.altlinux.org/archive/
— устарело
Ключевые особенности регламента
Что позволяет делать такая схема?
- Отдельные задачи можно легко передавать от одного разработчику, не задаваясь вопросом о правах. Каждый вновь получающий пакет, выписывает его у последнего. Например, я веду пакет Package1. Потом его передают Диме, затем над ним продолжает работу Сергей.
- Можно проводить аудит и коррекцию работы, а также помогать, не мешая работе основного разработчика. Например, Сергей ведёт пакет Pаckage2. Я выписываю его текущий результат, обнаруживаю недочёт и сообщаю ему об этом. Он выписывает мои исправления к себе в основной код или отдельную ветку. Последнее тоже важно. Мои изменения могут показаться Сергею недостаточными, но он сможет посмотреть их, не внося изменения в свой основной код.
- Можно качественно проводить совместную работу удалёнными друг от друга разработчиками. Ответственным за сбор конечного пакета является один человек - ведущий. Именно из его репозитория собирается результат в репозиториях доступных обновлений. Например, Я веду пакет Package3, со мной вместе его ведут ещё два человека. При необходимости они всегда могут получить мои изменения, но могут вести свои работы отдельно. Моя ответственность состоит в том, чтобы согласовать ветку, в которой я получаю результаты их работ. Между тем они сами могут брать изменения друг у друга, а могут доверять мне и регулярно сообщая мне о своих результатах, могут обмениваться изменениями через меня.
Хочу заметить, что никаких прав на общие репозитарии назначать в этой схеме не нужно. Достаточно выбрать ответственного и прописать роботу и его скриптам брать результаты у него. При смене ведущего, новому ответственному достаточно выписать у старого последнюю версию, а роботу исправить имя при поиске собираемого пакета.
У этого подхода есть недостатки:
Базар в разработке
В ряде случаев требуется использование общего репозитория, не привязанного к конкретному пользователю - права на публикацию в который может иметь более одного пользователя.
Вот ситуации, когда это может требоваться:
- если работа нам проектом организована коллективным образом, и при этом нет ответственного за проект.
- если требуется постоянное место для репозитория, не зависящее от конкретного ведущего проекта (в случае публичного проекта).
В этом случае проект создаётся в git.eter:/projects или соответствующем подкаталоге projects. Администратором в группу доступа к проекту вносятся те, кому разрешена публикация.
Как и ранее, каждый ведёт разработку в своём репозитории, а проверенные версии публикуются в общем репозитории после процедуры тестирования.
При разработке в режиме "каждый коммит стабилен" (то есть риск, что внесённые изменения повлияют на стабильность работы) может использоваться только общий репозиторий,
без публикации в свои репозитории.
Частным случаем может быть публикация изменений (патчей) в общий репозиторий посредством отправки патчей в список рассылки. В этом случае патчи в общий репозиторий
прикладывает модератор.