Summary: | [FR] gear-changelog: implement a new option to incorporate add_changelog's output | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | inger <inger> |
Component: | gear | Assignee: | Alexey Gladkov <legion> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | enhancement | ||
Priority: | P2 | CC: | dottedmag, glebfm, imz, ldv, legion, php-coder, placeholder, sem |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
inger@altlinux.org
2008-12-08 14:23:01 MSK
(In reply to comment #0) > Хочется ставить один gear для того чтобы заниматься разработкой. > Из rpm-utils уже использую только add_changelog, стало быть ему самое место в gear ;) Другому для разработки понадобится другой пакет, и он попросит перенести add_changelog туда. Ну уж нет. ;) > При переносе предлагаю сделать следующее изменение: Имя пользователя брать > не из .rpmmacros, а из .gitconfig. Зачем? У тебя имя меняется в зависимости от репозитория? :) (In reply to comment #1) > Зачем? У тебя имя меняется в зависимости от репозитория? :) Почтовый адрес может меняться. Да и имя - тоже, если под псевдонимом работать :) (In reply to comment #1) > (In reply to comment #0) > > Хочется ставить один gear для того чтобы заниматься разработкой. > > Из rpm-utils уже использую только add_changelog, стало быть ему самое место в gear ;) > > Другому для разработки понадобится другой пакет, и он попросит перенести > add_changelog туда. Ну уж нет. ;) Неверная аналогия. Можно читать не "перенести", а "добавить аналог". Вот тебе use-case. Я ставлю систему, ставлю hasher/gear и помимо этого приходится ставить rpm-utils. Далее, я настраиваю .gitconfig, а потом ещё лезу в .rpmmacros. То есть налицо двойная работа. Одно дело, когда у тебя уже всё настроено, а я вот поднимал сборочную среду с нуля и прочувствовал всю двойную работу ;) > > При переносе предлагаю сделать следующее изменение: Имя пользователя брать > > не из .rpmmacros, а из .gitconfig. > > Зачем? У тебя имя меняется в зависимости от репозитория? :) Кстати хорошая идея ;) А как насчёт сборки без git? :) (In reply to comment #4) > А как насчёт сборки без git? :) > А для них пусть остаётся rpm-utils ;) Тогда, раз это инструмент для работы с git, может быть gear-changelog дописать слегка? (In reply to comment #6) > Тогда, раз это инструмент для работы с git, может быть gear-changelog дописать > слегка? Не против :) Я его почти для этого и делал ... кстати, gear-changelog генерит changelog по стандарту add_changelog. (In reply to comment #7) > (In reply to comment #6) > > Тогда, раз это инструмент для работы с git, может быть gear-changelog дописать > > слегка? > > Не против :) > Я его почти для этого и делал ... кстати, gear-changelog генерит changelog по стандарту > add_changelog. Поскольку gear-changelog, в отличие от add_changelog, знает, как зовут spec-файл, им будет удобнее пользоваться. P.S. Пора пилить gear на 2 части: то что нужно только для извлечения из gear (для последующей сборки), и то что нужно для разработки под gear. (In reply to comment #8) > > Поскольку gear-changelog, в отличие от add_changelog, знает, как зовут spec-файл, им будет > удобнее пользоваться. Вот бы понять какой ещё функционал от этой утилиты нужен (inger@?) > P.S. Пора пилить gear на 2 части: то что нужно только для извлечения из gear (для > последующей сборки), и то что нужно для разработки под gear. А нужно ли проводить эту границу ? (In reply to comment #9) > (In reply to comment #8) > > > > > Поскольку gear-changelog, в отличие от add_changelog, знает, как зовут spec-файл, им будет > > удобнее пользоваться. > > Вот бы понять какой ещё функционал от этой утилиты нужен (inger@?) Я пока использую только как добавлялку строчки для changelog ;) (В ответ на комментарий №10) > Я пока использую только как добавлялку строчки для changelog ;) Эта бага ещё актуальна ? Есть такая неприятность, что VERSION RELEASE, которые попадают в заголовок changelog entry, берутся из commit-а в то время, как их значения скорее всего были отредактированы как раз на этом этапе подготовки пакета. Т.е. changelog оказывается неправильным. В связи с этим сложилась такая практика -- просто обрезать первую строчку от gear-changelog и добавлять с помощью add_changelog или команд в vi/emacs или т.п., которые читают текущий файл. (Спрашивал у sem@, glebfm@, ldv@, себя.) Когда хочется совсем автоматизировать процесс, это мешает. По-быстрому поправил самым незатратным с точки зрения переписывания кода способом в http://git.altlinux.org/people/imz/packages/gear.git Судя по небольшому опросу, сохранение опции для старого поведения не очень-то кому-то и нужно. Кажется, такое тяжеловатое в работе решение для исправления этого уже хорошо, потому что убирает лишнее неудобство при использовании. Комбинировать с add_changelog больше не придётся. Предлагаю опубликовать. Проверил работу gear-changelog --no-rules и просто функции gear_describe_current() с эпохами и без, вне git-репозитория и без .gear (сообщает об ошибке тогда). Как-то так: $ (set -e; . gear-sh-functions; . gear-sh-functions-describe-current; cd ~/tests/test-git/; gear_describe_current || echo $?; echo "$pkg_name" "$pkg_epoch" "$pkg_version" "$pkg_release"; ) Собирается в http://git.altlinux.org/tasks/164290/ Тут конечно не лучшее место чтобы делать review, но за неимением другого... > + --describe-nevr describe as "%{NAME} [%{EPOCH}:]%{VERSION} %{RELEASE}" Вы добавили эпоху через двоеточее чтобы потом искать это двоеточее и разделять второй аргумент на части. Не лучше ли не вводить новый разделитель, а использовать имеющийся (проблел) ? В этом случае весь парсинг будет состоять из подсчёта количества аргументов. > +++ b/gear-sh-functions-describe-current Зачем создавать ещё один sh-functions ради двух функций ? Описание в этом файле лучше было бы приложить как описание к patchset'у. > +gear_describe_current() > +{ > + set_NVR $(gear --commit --describe-nevr) > +} Нужно использовать результат get_NVR_from_spec. Как найти specfile есть в gear-commit. > +++ b/gear-changelog Вам всего лишь нужно было заменить в этой утилите find_specfile на эвристику из gear-commit, возможно вынеся её в общий файл. Это не требует создания дополнительных опций в gear (--describe-nevr). Попробую реализовать в ближайшие дни. (In reply to comment #13) > Тут конечно не лучшее место чтобы делать review, но за неимением другого... Спасибо! > > > + --describe-nevr describe as "%{NAME} [%{EPOCH}:]%{VERSION} %{RELEASE}" > > Вы добавили эпоху через двоеточее чтобы потом искать это двоеточее и разделять > второй аргумент на части. Не лучше ли не вводить новый разделитель, а > использовать имеющийся (проблел) ? В этом случае весь парсинг будет состоять из > подсчёта количества аргументов. Да, так и есть. Склонился в сторону от подсчёта количества аргументов, не имея сильных предпочтений. (Отчасти из-за того, что двоеточие уже было в предыдущей реализации -- изменения поведения --describe.) > > > +++ b/gear-sh-functions-describe-current > > Зачем создавать ещё один sh-functions ради двух функций ? Хотелось явно отделить от тех функций, на которые можно будет рассчитывать всегда, мой временный хак (до поры реализации чтения нужной мета-информации напрямую из рабочей директории). > Описание в этом файле лучше было бы приложить как описание к patchset'у. > > > +gear_describe_current() > > +{ > > + set_NVR $(gear --commit --describe-nevr) > > +} > > Нужно использовать результат get_NVR_from_spec. Как найти specfile есть в > gear-commit. > > > +++ b/gear-changelog > > Вам всего лишь нужно было заменить в этой утилите find_specfile на эвристику из > gear-commit, возможно вынеся её в общий файл. Это не требует создания > дополнительных опций в gear (--describe-nevr). Да, такой вариант кажется мне более разумным с самого начала, и я буду рад его реализации, заранее спасибо, если у Вас получится! (In reply to comment #14) > Попробую реализовать в ближайшие дни. http://git.altlinux.org/people/legion/packages/gear.git Дим, посмотри пожалуйста. (In reply to comment #16) > (In reply to comment #14) > > Попробую реализовать в ближайшие дни. Спасибо! > http://git.altlinux.org/people/legion/packages/gear.git > > Дим, посмотри пожалуйста. К http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=commitdiff;h=9fce6fe2e85a0faaaf8d12e6c7ee5b6ca5a76752 : ещё эпоха нужна для RPM changelog-а -- http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=commitdiff;h=542604480dfcbb60cc9d47fef4498899d13478b6 (In reply to comment #17) > ещё эпоха нужна для RPM changelog-а -- > http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=commitdiff;h=542604480dfcbb60cc9d47fef4498899d13478b6 Исправил. gear-2.0.7-alt1 -> sisyphus: * Fri May 06 2016 Dmitry V. Levin <ldv@altlinux> 2.0.7-alt1 - gear-changelog, gear-edit-spec: look for specfile using the same algorithm as gear-commit (by Alexey Gladkov and me; closes: #18140). |