Gear/remotes

Материал из ALT Linux Wiki

< Gear(Различия между версиями)
Перейти к: навигация, поиск
(Наблюдение за тегами.)
м (Утилиты для работы с файлами gear remotes: очепятка)
 
(6 промежуточных версий не показаны.)
Строка 68: Строка 68:
Все эти файлы будем называть файлы gear remotes.
Все эти файлы будем называть файлы gear remotes.
-
=== утилиты для работы с файлами gear remotes ===
+
=== Утилиты для работы с файлами gear remotes ===
 +
 
 +
Установите пакет {{pkg|perl-Gear-Remotes}}:
 +
apt-get update
 +
apt-get install perl-Gear-Remotes
 +
 
{| class="standard"
{| class="standard"
-
!утилита
+
!исполняемый файл
!Описание
!Описание
|-
|-
|class="shadow"|gear-remotes-restore
|class="shadow"|gear-remotes-restore
-
|Используется в склонированном репозитории. Восстанавливает настройки {{path|.git/config}} из файлов gear remotes
+
|Используется в клонированном репозитории. Восстанавливает настройки {{path|.git/config}} из файлов gear remotes
|-
|-
|class="shadow"|gear-remotes-save
|class="shadow"|gear-remotes-save
-
|Используется майнтейнером для публикации своих remotes, т.е. создания .gear/upstrem/remotes из {{path|.git/config}}. TODO
+
|Используется мейнтейнером для публикации своих remotes, т.е. создания {{path|.gear/upstream/remotes}} из {{path|.git/config}}
|}
|}
-
== Наблюдение за тегами. ==
+
=== Нестандартные теги ===
 +
 
 +
для нестандартных тегов необходимо создать исполняемые файлы
 +
{| class="standard"
 +
!исполняемый файл
 +
!Описание
 +
|-
 +
|class="shadow"|.gear/upstream/filter-tag
 +
|исполняемый файл, который отфильтровывает из STDIN теги релиза
 +
|-
 +
|class="shadow"|.gear/upstream/transform-tag
 +
|исполняемый файл, который получает из STDIN теги релиза и преобразует их в привычный для RPM вид.
 +
|}
 +
идея в том, чтобы запустить конвейер
 +
git tag | .gear/upstream/filter-tag | .gear/upstream/transform-tag
 +
и получить список доступных версий пакета.
 +
 
 +
Пример: апстрим пользуется тегами вида
 +
REL0_95
 +
REL1_03
 +
 
 +
.gear/upstream/filter-tag: (не забудьте сделать исполняемым!)
 +
grep 'REL'
 +
 
 +
.gear/upstream/transform-tag:
 +
sed -e 's,^REL,,;s,_,.,;'
 +
 
 +
== Наблюдение за тегами ==
 +
 
 +
Утилита {{cmd|gear-remotes-watch}} позволяет наблюдать за удаленными репозиториями, прописанными в {{path|.gear/upstream/remotes}}
 +
поддерживаются теги вида '''@version@''' и '''v@version@'''.
 +
 
 +
<source lang="bash">$ gear-remotes-watch
 +
git fetch upstream
 +
New version 3.4.4 is available from tag v3.4.4.</source>
 +
 
 +
Получить для скриптов на Bash значения новой версии ({{term|$version}}) и тега ({{term|$tag}}):
 +
<source lang="bash">read -r version tag <<< "$(gear-remotes-watch | sed -n 's/^New version \([^ ]*\) is available from tag \([^ ]*\)./\1 \2/p')"</source>
 +
 
 +
== Обновление до последней версии ==
 +
 
 +
Если {{cmd|gear-remotes-watch}} только проверяет наличие новой версии, то команда {{cmd|gear-remotes-uscan}} обновляет сам gear-репозиторий.
 +
 
 +
Обновить до последней апстримной версии:
 +
gear-remotes-uscan
 +
gear-commit
-
утилита gear-remotes-watch позволяет наблюдать за удаленными репозиториями, прописанными в .gear/upstream/remotes
+
== Обновление по тегу ==
-
поддерживаются теги вида @version@ и v@version@.
+
-
для нестандартных тегов необхдимо созжать исполняемые файлы
+
-
.gear/upstream/filter-tag
+
-
.gear/upstream/transform-tag
+
-
== Обновление по тегу. ==
+
gear-uupdate --upstream-version 1.28 --tag V1_28 --ch '- new version'
-
gear-uupdate --upstream-version 1.28 --tag V1_28 --ch '- fill changelog here'
+
Совет: версию и тег можно взять из последней строки вывода {{cmd|gear-remotes-watch}}.
 +
{{attention|{{cmd|gear-uupdate}} работает только с архивами, создаваемыми из тега или бранча. Обычный tar: . не поддерживается.}}
{{Category navigation|title=gear|category=gear|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=gear|category=gear|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Автоматизация работы с пакетами|category=Packaging Automation}}
{{Category navigation|title=Автоматизация работы с пакетами|category=Packaging Automation}}
[[Категория:Справочники]]
[[Категория:Справочники]]

Текущая версия на 09:17, 14 января 2017

Содержание

Gear/upstream/remotes.

Зачем так важно выделить информацию о remotes в отдельный файл? чтобы сразу вдобавок к возможности отслеживания решить и другую, на мой взгляд более важную, задачу:

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

Потому что в текущем виде gear репозитории не дружественны к совместной работе. tarball-обновляемые gear репозитории дружественны, src.rpm дружественны, а VCS-обновляемые - нет.

Представьте себе, что ваш обновляемый из апстримного git репозиторий какой-то добрый человек поверх обновил из tarball'а и отправил на сборку в Сизиф.

Похожее чувство я испытываю, когда нужно обновить перловую зависимость, но соответствуюший пакет обновляется из VCS. Там весь пакет на 200 строчек. Я знаю, какая там версия. У меня под рукой свежий апстримный tarball. Но я не могу взять и обновить - надо рыться в VCS-помойках и искать, где этот ****ов git и затем настраивать (каждый раз!) клонированный репозиторий, и все только для того, чтобы сделать git fetch origin.

И майнтайнер, который разместил свой пакет в VCS-обновляемом gear репозитории не виноват --- это дыра в дизайне gear, которая делает VCS-обновляемые gear репозитории гораздо худшим средством для _совместной_ разработки, чем src.rpm.

И всего-то надо инструмент, чтобы gear репозиторий хранил в себе свои remotes.

как минимум, что-то вроде gear-save-remotes и gear-restore-remotes

Это удобно и NMUшникам, и основному майнтайнеру: если remotes не сохраняются, то на git.alt копии его репозиториев неполноценные, и если слетит диск, то не достаточно будет склонировать их с git.alt, придется заново тратить время на восстановление локальных настроек remotes (а если использовался git-svn, то там все вообще печально).

Да и на даче / в походе удобнее - не нужно таскать с собой диски или тратить время на настройку git-клона.


Файлы gear remotes (.gear/upstream/remotes)

Файл .gear/upstream/remotes использует тот же формат, что и .git/config.

[remote "upstream"]
       url = git://git.netxms.org/public/netxms.git
       fetch = +refs/heads/*:refs/remotes/upstream/*

Файл .gear/upstream/remotes можно получить, просто скопировав .git/config и удалив из него не относящиеся к remotes секции.

Файл .gear/upstream/remotes может содержать не только информацию о remotes, но и хранить копию дополнительных настроек git репозитория. У разных людей дополнительные настройки могут отличаться. Поэтому файл .gear/upstream/remotes выбирается в следующем порядке:

.gear/upstream/remotes$GEAR_UPSTREAM_REMOTES_SUFFIX
.gear/upstream/remotes.$USER
.gear/upstream/remotes

Это позволяет иметь один общеупотребительный файл .gear/upstream/remotes и персональные backups в .gear/upstream/remotes.$USER. Все эти файлы будем называть файлы gear remotes.

Утилиты для работы с файлами gear remotes

Установите пакет perl-Gear-Remotes:

apt-get update
apt-get install perl-Gear-Remotes
исполняемый файл Описание
gear-remotes-restore Используется в клонированном репозитории. Восстанавливает настройки .git/config из файлов gear remotes
gear-remotes-save Используется мейнтейнером для публикации своих remotes, т.е. создания .gear/upstream/remotes из .git/config

Нестандартные теги

для нестандартных тегов необходимо создать исполняемые файлы

исполняемый файл Описание
.gear/upstream/filter-tag исполняемый файл, который отфильтровывает из STDIN теги релиза
.gear/upstream/transform-tag исполняемый файл, который получает из STDIN теги релиза и преобразует их в привычный для RPM вид.

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

git tag | .gear/upstream/filter-tag | .gear/upstream/transform-tag

и получить список доступных версий пакета.

Пример: апстрим пользуется тегами вида

REL0_95
REL1_03
.gear/upstream/filter-tag: (не забудьте сделать исполняемым!)
grep 'REL'
.gear/upstream/transform-tag:
sed -e 's,^REL,,;s,_,.,;'

Наблюдение за тегами

Утилита gear-remotes-watch позволяет наблюдать за удаленными репозиториями, прописанными в .gear/upstream/remotes поддерживаются теги вида @version@ и v@version@.

$ gear-remotes-watch
git fetch upstream
New version 3.4.4 is available from tag v3.4.4.

Получить для скриптов на Bash значения новой версии ($version) и тега ($tag):

read -r version tag <<< "$(gear-remotes-watch | sed -n 's/^New version \([^ ]*\) is available from tag \([^ ]*\)./\1 \2/p')"

Обновление до последней версии

Если gear-remotes-watch только проверяет наличие новой версии, то команда gear-remotes-uscan обновляет сам gear-репозиторий.

Обновить до последней апстримной версии:

gear-remotes-uscan
gear-commit

Обновление по тегу

gear-uupdate --upstream-version 1.28 --tag V1_28 --ch '- new version'

Совет: версию и тег можно взять из последней строки вывода gear-remotes-watch.

Внимание! gear-uupdate работает только с архивами, создаваемыми из тега или бранча. Обычный tar: . не поддерживается.


 
Личные инструменты