Summary: | [FR] ^ in tree-ish definitions | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | ildar <ildar> |
Component: | gear | Assignee: | Sergey Vlasov <vsu> |
Status: | NEW --- | QA Contact: | qa-sisyphus |
Severity: | enhancement | ||
Priority: | P2 | CC: | evg, glebfm, imz, iv, ldv, legion, placeholder, vvk |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
ildar
2008-05-12 10:19:29 MSD
(In reply to comment #0) > постановка задачи: > хочется выдрать патч из коммита, помеченного тегом: > > diff: systemffi-upstream-patch^:. systemffi-upstream-patch:. > name=@name@-systemffi.patch > > Однако это запрещено и приходится делать так: > > diff: bb2f69941fe898bfaabe1916fcad42841a6046fe:. systemffi-upstream-patch:. > name=@name@-systemffi.patch > > Можно разрешить "шапочку" в tree-ish-полях gear-rules? Теоретически можно разрешить и более сложные конструкции, описанные в git-rev-parse(1), поскольку они не нарушают концепцию однозначной определённости коммита. Другое дело, что я не вижу в этом смысла, ведь всегда можно изготовить нужный тэг. Добавить конструкции из git-rev-parse(1) мне больше нравится. Делать дополнительные теги для правил как-то неправильно... Дим, перебрасывай на меня. Я попробую сделать. (In reply to comment #2) > Добавить конструкции из git-rev-parse(1) мне больше нравится. Делать > дополнительные теги для правил как-то неправильно... Я исхожу из того, что мне эти конструкции ни разу ещё не понадобились. > Дим, перебрасывай на меня. Я попробую сделать. OK Реализовал у себя в бранче refs/heads/gear-update-tag. ildar@ можете протестировать и подтвердить ? Если исправления устраивают, то переложу в gear-next. http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=shortlog;h=refs/heads/gear-update-tag Алексей, простите, долго не доходили руки. Сегодня протестировал - работает. Спасибо большое. Алексей, простите, долго не доходили руки. Сегодня протестировал - работает. Спасибо большое. Если речь идёт о http://git.altlinux.org/people/legion/packages/gear.git?p=gear.git;a=commitdiff;h=a9a2ddf120c3a26dc35819da3b56d9179dcfe2ed - такая реализация не годится, поскольку git rev-parse --verify проверяет не только синтаксис, а и наличие соответствующих имён в текущем репозитории; в исходной реализации этого не требовалось. Т.е., раньше было можно вызвать сборку для тега $tag из репозитория $repo следующим образом: cd $tmpdir git init sha1=$(git ls-remote $repo $tag | cut -f1) git fetch $repo $tag gear -t $sha1 $gear_options (т.е., в отдельном репозитории, в котором присутствует указанный объект со всеми объектами, на которые он ссылается, но без .git/refs/*). Использование git rev-parse --verify для проверки имён тегов вносит зависимость от содержимого .git/refs/ (а в некоторых случаях и от .git/logs/). Кроме того, в версии 47c6cb4a7081203474986ce3bcfd44674e4b1fe1 по той же причине сломаны конструкции вида tar: @name@-@version@:. (функция check_tag_name при чтении .gear/tags вызывается до раскрытия @...@). На своей реализации я и не настаиваю :) Просто тебя давно видно не было, а проблема висит. P.S. Раз уж ты добрался до gear-update-tag, очень прошу, посмотри на #16075 и дай свою резолюцию. Сергей, напишешь свою реализацию для исправления этого бага ? Коллеги, есть силы для второго подхода? |