Bug 15610

Summary: [FR] ^ in tree-ish definitions
Product: Sisyphus Reporter: ildar <ildar>
Component: gearAssignee: 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
постановка задачи:
хочется выдрать патч из коммита, помеченного тегом:

diff: systemffi-upstream-patch^:. systemffi-upstream-patch:.
name=@name@-systemffi.patch

Однако это запрещено и приходится делать так:

diff: bb2f69941fe898bfaabe1916fcad42841a6046fe:. systemffi-upstream-patch:.
name=@name@-systemffi.patch

Можно разрешить "шапочку" в tree-ish-полях gear-rules?
Comment 1 Dmitry V. Levin 2008-05-27 02:28:25 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), поскольку они не нарушают концепцию однозначной
определённости коммита.  Другое дело, что я не вижу в этом смысла, ведь всегда
можно изготовить нужный тэг.
Comment 2 Alexey Gladkov 2008-05-27 03:09:21 MSD
Добавить конструкции из git-rev-parse(1) мне больше нравится. Делать
дополнительные теги для правил как-то неправильно...

Дим, перебрасывай на меня. Я попробую сделать.
Comment 3 Dmitry V. Levin 2008-05-27 03:38:07 MSD
(In reply to comment #2)
> Добавить конструкции из git-rev-parse(1) мне больше нравится. Делать
> дополнительные теги для правил как-то неправильно...

Я исхожу из того, что мне эти конструкции ни разу ещё не понадобились.

> Дим, перебрасывай на меня. Я попробую сделать.

OK

Comment 4 Alexey Gladkov 2008-06-23 10:13:13 MSD
Реализовал у себя в бранче 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
Comment 5 ildar 2008-07-16 15:46:42 MSD
Алексей,

простите, долго не доходили руки.

Сегодня протестировал - работает. Спасибо большое.
Comment 6 ildar 2008-07-16 15:47:03 MSD
Алексей,

простите, долго не доходили руки.

Сегодня протестировал - работает. Спасибо большое.
Comment 7 Sergey Vlasov 2008-07-17 16:03:02 MSD
Если речь идёт о 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 вызывается до раскрытия @...@).
Comment 8 Alexey Gladkov 2008-07-17 17:50:04 MSD
На своей реализации я и не настаиваю :)
Просто тебя давно видно не было, а проблема висит.

P.S. Раз уж ты добрался до gear-update-tag, очень прошу, посмотри на #16075 и дай свою резолюцию.
Comment 9 Alexey Gladkov 2008-07-18 14:10:34 MSD
Сергей, напишешь свою реализацию для исправления этого бага ?
Comment 10 ildar 2011-12-15 15:52:14 MSK
Коллеги, есть силы для второго подхода?