Gear/remotes: различия между версиями
Строка 54: | Строка 54: | ||
=== | === Файлы gear remotes (.gear/upstream/remotes) === | ||
Файл .gear/upstream/remotes использует тот же формат, что и .git/config. | Файл .gear/upstream/remotes использует тот же формат, что и .git/config. | ||
[remote "upstream"] | [remote "upstream"] | ||
Строка 62: | Строка 62: | ||
и удалив из него не относящиеся к remotes секции. | и удалив из него не относящиеся к remotes секции. | ||
Файл .gear/upstream/remotes может содержать не только информацию о remotes, | Файл {{path|.gear/upstream/remotes}} может содержать не только информацию о remotes, | ||
но и хранить копию дополнительных настроек git репозитория. | но и хранить копию дополнительных настроек git репозитория. | ||
У разных людей дополнительные настройки могут отличаться. | У разных людей дополнительные настройки могут отличаться. | ||
Строка 69: | Строка 69: | ||
.gear/upstream/remotes.$USER | .gear/upstream/remotes.$USER | ||
.gear/upstream/remotes | .gear/upstream/remotes | ||
Это позволяет иметь один общеупотребительный файл .gear/upstream/remotes | Это позволяет иметь один общеупотребительный файл {{path|.gear/upstream/remotes}} | ||
и персональные backups в .gear/upstream/remotes.$USER. | и персональные backups в {{path|.gear/upstream/remotes.$USER.}} | ||
Все эти файлы будем называть файлы gear remotes. | |||
=== утилиты для работы с файлами gear remotes === | === утилиты для работы с файлами gear remotes === |
Версия от 19:50, 23 июля 2014
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
утилита | Описание |
---|---|
gear-restore-remotes | Используется в склонированном репозитории. Восстанавливает настройки .git/config из файлов gear remotes |
gear-save-remotes | Используется майнтейнером для публикации своих remotes, т.е. создания .gear/upstrem/remotes из .git/config. TODO |
Наблюдение за тегами.
.gear/upstream/filter-tag .gear/upstream/transform-tag