Bug 17643

Summary: [FR] compress: tree_path support
Product: Sisyphus Reporter: led
Component: gearAssignee: Dmitry V. Levin <ldv>
Status: NEW --- QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2 CC: glebfm, ldv, legion, placeholder
Version: unstable   
Hardware: all   
OS: Linux   

Description led 2008-10-21 18:47:13 MSD
Нельзя ли добавить tree_path в директиву compress (и, соответственно, в директивы gzip и bzip2), как это сделано в директиве tar (tar.gz, tar.bz2)?
А также опцию name в директивы gzip и bzip2.
Comment 1 led 2008-10-21 18:49:36 MSD
Например, для такого:
gzip: 3.3d2:readme.txt name=@name@-3.3d2-readme.txt
где "3.3d2" - tag в бранче upstream
Comment 2 Alexey Gladkov 2008-10-22 01:37:16 MSD
насчёт @name@ согласен. Но вот насчёт tree_path не уверен ...

Можно более жизненный пример?
У вас есть репозиторий, где вы хотите это применить?
Comment 3 led 2008-10-22 01:52:08 MSD
(In reply to comment #2)
> насчёт @name@ согласен. Но вот насчёт tree_path не уверен ...
> 
> Можно более жизненный пример?

Это и есть реальный жизненный пример

> У вас есть репозиторий, где вы хотите это применить?

Есть. Вернее был, потому как поняв, что ничего не получится, просто тупо скопировал файлы из нужного бранча в master, переименовал и применил директиву gzip. Всё это вместо того, чтобы просто сослаться на нужный файл в нужном бранче.
Comment 4 led 2008-10-22 01:53:58 MSD
(In reply to comment #2)
> насчёт @name@ согласен. Но вот насчёт tree_path не уверен ...

Если это нетривиально/сложно - так и скажите - я ведь не настаиваю:) Но то, что это не нужно...
Comment 5 Dmitry V. Levin 2008-10-22 04:32:10 MSD
(In reply to comment #0)
> Нельзя ли добавить tree_path в директиву compress (и, соответственно, в директивы gzip
> и bzip2), как это сделано в директиве tar (tar.gz, tar.bz2)?
> А также опцию name в директивы gzip и bzip2.

В директиву compress можно добавить, она по своей сути расширяемая.
А в простые директивы gzip и bzip2 лучше не добавлять, поскольку
это самые первые директивы, у них нет параметров, и
есть риск нарушить обратную совместимость.

P.S. Раньше или позже всплывёт тема квотирования.
Comment 6 led 2008-10-22 05:40:35 MSD
(In reply to comment #5)
> В директиву compress можно добавить, она по своей сути расширяемая.

Вполне устроило бы.
Comment 7 Alexey Gladkov 2008-10-22 10:55:09 MSD
(In reply to comment #5)
> В директиву compress можно добавить, она по своей сути расширяемая.

Если добавим в compress, то добавим и в copy, gzip и bzip2 ... иначе костыли придётся вставлять. Вообще, у нас есть некоторая несуразность:

zip: tree_path
gzip: glob_pattern...

У нас есть два семейства директив и аргументы у них обрабатываются по разному.

> А в простые директивы gzip и bzip2 лучше не добавлять, поскольку
> это самые первые директивы, у них нет параметров, и
> есть риск нарушить обратную совместимость.

Я могу попробовать сделать так чтобы tree_path обрабатывался с учётом обратной совместимости.

Меня смущает то, что директивы, использующие tree_path, принимают только один аргумент типа tree_path. Если у compress заменить glob_pattern на tree_path, то будут возможны такие конструкции:

compress: TAG1:file1.txt TAG2:src/foobar.c

В этом и была моя неуверенность. Хотим ли мы такого ?

> P.S. Раньше или позже всплывёт тема квотирования.

Можешь пояснить?
Comment 8 Dmitry V. Levin 2008-10-22 13:57:56 MSD
(In reply to comment #7)
> (In reply to comment #5)
> > В директиву compress можно добавить, она по своей сути расширяемая.
> 
> Если добавим в compress, то добавим и в copy, gzip и bzip2 ... иначе костыли придётся
> вставлять.

Там и без этого есть костыли:
name=<NAME>
    Specify destination file name in output directory.
    In this case glob_pattern should match only one file.

> Вообще, у нас есть некоторая несуразность:
> 
> zip: tree_path
> gzip: glob_pattern...
> 
> У нас есть два семейства директив и аргументы у них обрабатываются по
> разному.

Да, так исторически сложилось.

> > А в простые директивы gzip и bzip2 лучше не добавлять, поскольку
> > это самые первые директивы, у них нет параметров, и
> > есть риск нарушить обратную совместимость.
> 
> Я могу попробовать сделать так чтобы tree_path обрабатывался с учётом обратной
> совместимости.
> 
> Меня смущает то, что директивы, использующие tree_path, принимают только один
> аргумент типа tree_path. Если у compress заменить glob_pattern на tree_path, то будут возможны
> такие конструкции:
> 
> compress: TAG1:file1.txt TAG2:src/foobar.c
> 
> В этом и была моя неуверенность. Хотим ли мы такого ?

Нет, я бы не хотел такого.  Если tree_path, то только один.

> > P.S. Раньше или позже всплывёт тема квотирования.
> 
> Можешь пояснить?

пробелы в именах
Comment 9 Alexey Gladkov 2008-10-22 14:30:38 MSD
(In reply to comment #8)
> Там и без этого есть костыли:
> name=<NAME>
>     Specify destination file name in output directory.
>     In this case glob_pattern should match only one file.

Как раз это не костыль :)
И это не приводит к дополнительному анализу type.


> > compress: TAG1:file1.txt TAG2:src/foobar.c
> Нет, я бы не хотел такого.  Если tree_path, то только один.

Я мало представляю такой мозг в make_compress(). Нужно смотреть, похож аргумент на tree_path и если похож, пытаться его срезолвить ...
Что делать если в качестве glob_pattern указывает на файл, а по признакам похож на tree_path ? Как понять что хотел пользователь glob_pattern или tree_path ?

> пробелы в именах

Да. Это наш скелет в шкафу. Нам нужно эту проблему решать ... вопрос поднимался и багу уже вешали.