Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/git ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/devel/git за 2008-04-12 16:25:53..

Всё о GIT, со слов ldv 


Здесь на самом деле не про git per se, а про git применительно к ALT Linux и git.alt; в качестве введения см., например, Everyday GIT


NB: эту страницу (а также gear, gear/kis, gear/geartags, gear/ImportUpstreamVBranch, gear/ImportSeparateUpstream, git/recommit, git/gitnotes, git/gitincompact, git/SomeDestReposViaBranches, git/MergingBranches, git/BranchInGit) надо творчески раскромсать на:


Оглавление документа

GEAR


В апреле 2007 года идея хранить исходный код пакетов в git-репозитории была реализована с помощью утилиты, которая 27-го апреля получила имя gear. Напомню вкратце:


Основной смысл хранения исходного кода пакетов в git-репозитории заключается в более эффективной и удобной совместной разработке, а также минимизации трафика и места на диске для хранения архива репозитория за длительный срок. Идея gear заключается в том, чтобы с помощью одного файла с простыми правилами (для обработки которых достаточно git+sed) можно было собирать пакеты из произвольно устроенного git-репозитория, по аналогии с hasher, который был задуман как средство собирать пакеты из произвольных srpm-пакетов.


За время, прошедшее с конца апреля, многие из вас успели освоиться с gear, появилась базовая документация, семейство вспомогательных утилит и опыт эксплуатации. Поэтому весьма вероятно, что те из вас, кому только предстоит осваивать gear, пройдут этот путь гораздо легче и быстрее чем я. :) Например, одна только утилита gear-srpmimport позволяет на начальном этапе вообще не интересоваться синтаксисом файла .gear-rules.


На всякий случай рекомендую установить/обновить пакет gear, а также освежить в своей памяти содержимое файлов /usr/share/doc/gear-1.0.3/QUICKSTART.ru_RU.KOI8-R и /usr/share/doc/git-1.4.2.2/tutorial.html

Структура репозитория


Как уже было сказано, gear не накладывает ограничений на внутреннюю организацию git-репозитория (не считая файла с правилами). Тем не менее, у меня есть несколько соображений о том, как более эффективно и удобно организовывать git-репозитории, предназначенные для хранения пакетов:






Транспорты git 


Как известно, git может использовать разные виды транспорта для своего внутреннего протокола передачи данных, подробнее см. секцию GIT URLS в git-pull(1) или git-push(1). Из них rsync лучше всех подходит для первичного клонирования репозиториев большого размера по нестабильным каналам связи, только два, ssh:// и git://, наиболее удобны для обновления уже существующих репозиториев, а из этих двух только ssh подходит для организации полноценного разграничения доступа. По этой причине предложенное ранее размещение git-репозиториев на rsync.altlinux.org::people/*/ было заменено на полноценный git over ssh.


Хранилище на git.altlinux.org имеет простую структуру. Каждому разработчику по имени USER создаётся доступный для записи только ему каталог /people/USER/packages/, в который он может размещать git-репозитории. Этот каталог доступен по чтению всем остальным разработчикам, а также анонимно с помощью rsync git.altlinux.org::people/USER/packages/
Кроме того, каждому разработчику по имени USER создаётся специальный репозиторий /people/USER/etc/packages.git для управления репозиториями в packages/, в частности, для настройки email-уведомлений.


На git.altlinux.org, видимо, будут размещены и другие git-репозитории, о которых будет сказано в своё время.


На http://git.altlinux.org/ поднят gitweb.


Для 108 наиболее активных разработчиков (чьи пакеты, подписанные в этом году, были в Сизифе на момент создания ресурса) доступ к новому ресурсу создан автоматически, ключи были позаимствованы с созданных ранее аккаунтов на cvs.altlinux.org. Всем остальным, а также всем потенциальным разработчикам для получения доступа к ресурсу нужно, как обычно, обратиться на join@.

Инструкция по эксплуатации git.altlinux.org


Итак, общие инструкции по эксплуатации:

– где USER есть идентификатор @altlinux.org, совпадающий с тем, который определён в вашем gpg-ключе, с одним отличием: символ “-" заменён на “_". Нестандартный порт выбран для минимизации спама в логах от тупых переборщиков паролей на сервере где отключена авторизация по паролю.


Для преодоления барьеров вида «админ закрыл наружу всё и оставил только прокси» ssh на git.altlinux.org доступен также и на порту 443. Инструкция по использованию transconnect для хождения к ssh через прокси находится тут.


По всем вопросам, связанным с этой частью инструкции, пишите на join@.


Проверка связи, она же памятка:

(вывод может меняться время от времени)


При входе на git.alt с вашей учётной записью USER текущим каталогом для вас будет git.alt:/people/USER/.


Перечень своих каталогов:


Перечень своих репозиториев:


Команда ls на git.alt работает относительно текущего каталога, но ей можно передавать в качестве аргумента и полные пути. Например:
Посчитать, сколько у меня git-репозиториев на данный момент:


Создать новый git-репозиторий, полюбоваться на него снаружи, удалить и снова посмотреть:


Клонировать в свой каталог packages на git.alt внутренний репозиторий:


Клонировать в свой каталог packages на git.alt внешний репозиторий:


Клонировать к себе на компьютер свой репозиторий с git.altlinux.org:


Клонировать к себе на компьютер чужой репозиторий с git.altlinux.org:


Залить на git.alt свой ранее созданный git-репозиторий:


Представим, что некий foo сделал какие-либо изменения для нашего пакета bar в бранче bar-bugfree и выложил их на git.alt.
Узнаем, как называется его этот бранч:


Далее зафетчим этот бранч к нам с одноименным названием:



Дальше работаем с ним как хотим ;)


Копирование файлов из одного бранча в другой

и устаревший способ:

Инструкции по эксплуатации etc/packages.git


С помощью специального репозитория etc/packages.git можно настроить рассылку email-уведомлений об изменениях в git-репозиториях.


Рассылка уведомлений может быть двух типов:

  1. По инициативе подписчиков, которые выбирают, какие уведомления им нужны.
  2. По инициативе владельцев репозиториев, которые решают, куда рассылать уведомления.

Для каждого из этих типов в etc/packages.git заведено по файлу специального формата.


Файл для подписки на уведомления первого типа называется email-subscription и состоит из строк вида

где

Каждое из этих 4-ех полей может быть либо полным именем, либо символом "*".


Файл для рассылки уведомлений второго типа называется email-distribution и состоит из строк вида

где

Каждое из первых 3-ех полей может быть либо полным именем, либо символом "*".
Способ указать в MAILTO вместо идентификаторов разработчиков произвольные
адреса пока не придуман.


Для того чтобы начать экспериментировать с email-файлами, нужно сделать

Изменения этих файлов отслеживаются hooks/update'ом только если они сделаны в refs/heads/master.


На мой взгляд, практический интерес представляет первый тип уведомлений. Пока писем не очень много, я записал "* * * *" в свой email-subscription.

packages и private

> А notifier не разошлет ли сообщения об загрузке новых пакетов подписавшимся на рассылки обновления всех пакетов?

Вы можете подписать кого-то на свой private (etc/packages/email-distribution),
но подписаться (etc/packages/email-subscription) на чужой private нельзя.

ldv@ в devel@


информация о gear-release удалена, т.к. она устарела

«Как найти майнтейнера?»

1. http://alt3.linux.kiev.ua/srpm/Sisyphus/spt/git (с датами и ссылками)
2. http://git.altlinux.org/people-packages-list
3. см. ниже:

> Слить сорцы из git'а, сделать патч и отправить автору (да, в мире существуют
> другие git-репозитории, помимо git.a.o). Совершенно обычный use-case для того
> типа пользователя, кого сейчас в инфраструктуре совершенно игнорируют: casual
> mantainers, которых почти всё устраивает, но иногда хочется написать патчик и
> отправить обратно.
В принципе, даже той информации, которая есть в бинарном пакете сейчас,
уже достаточно для casual mantainers:
1. В установленном бинарном пакете есть %{SOURCERPM} (виден по rpmquery -i),
из которого однозначно вычисляется имя исходного пакета.
2. Далее, в установленном бинарном пакете есть %{CHANGELOGNAME} (виден по rpmquery --lastchange).
3. По именам мантейнера (MAINT) и исходного пакета (PKG) можно с очень
высокой вероятностью предположить, что если пакет был собран из git-репозитория, то этот репозиторий называется
http://git.altlinux.org/people/MAINT/packages/?p=PKG.git

ldv@

Как вести пакет в git

надо выделить страницей

damir@

Посмотрите на http://git.altlinux.org/people/damir/packages/?p=liblazy.git;a=summary

Там правда апстрим git-овый, но это сути не меняет.
.gear-rules там состоит из одной строчки – вот такой:

tar.bz2: @name@-@version@:.

@name@ и @version@ берутся из спека. @name@ – это liblazy. а @version@ – это 0.1

На ветке upstream присутствует тег liblazy-0.1. Поэтому апстримный
тарбол будет браться из этого тега.

При переезде на новую версию надо будет всего лишь:

1. Поставить нужный тег на апстримной ветке (например liblazy-0.2).
2. Смержить этот тег в master с -s ours
3. Заменить в спеке версию с 0.1 на 0.2.
4. Выполнить gear-update-tag -ac
5. Дописать changelog

Ссылки

Страницы, ссылающиеся на данную: AltLinux/Branches/FreezePolicy
AltLinux/Sisyphus
AltLinux/Sisyphus/devel
AltLinux/Sisyphus/devel/XorgPackages
AltLinux/Sisyphus/devel/gear
AltLinux/Sisyphus/devel/gear/kis


 
Файлов нет. [Показать файлы/форму]
Один комментарий. [Показать комментарии/форму]