[devel] [PATCH 1/3] Introduce nodiff directive for gear-rules

Alexey Gladkov legion на altlinux.ru
Чт Ноя 26 17:49:27 MSK 2020


On Thu, Nov 26, 2020 at 05:16:34PM +0300, Vladimir D. Seleznev wrote:
> The directive specifies a glob pattern that define files that should be
> excluded from diff generation.

Мои комментарии относятся только к технической части. Относительно
именования директив и нужности директивы вообще должен Дима высказаться.

Лично мне не нравится, что опция для директивы diff сделана директивой.
Это выглядит хаком. У вас аргумент nodiff не может иметь пробелы. В этом
случае несложно сделать `diff: exclude=glob_pattern`.

> Signed-off-by: Vladimir D. Seleznev <vseleznv на altlinux.org>
> ---
>  gear            | 24 ++++++++++++++++++------
>  gear-rules.5.in | 19 +++++++++++++++++++
>  gear-store-tags |  2 +-
>  3 files changed, 38 insertions(+), 7 deletions(-)
> 
> diff --git a/gear b/gear
> index 6282c92..b4e8426 100755
> --- a/gear
> +++ b/gear
> @@ -402,13 +402,14 @@ write_git_diff()
>  {
>  	local optional="$1" && shift
>  	local cmd="$1" && shift
> +	local nodiff_patterns="$1" && shift
>  	local old_tree="$1" && shift
>  	local old_dir="$1" && shift
>  	local new_tree="$1" && shift
>  	local new_dir="$1" && shift
>  	local name="${1##*/}" && shift
>  
> -	local old_id new_id
> +	local old_id new_id nodiff=
>  
>  	old_id="$(traverse_tree "$old_tree" "$old_dir" "$optional")" ||
>  		{
> @@ -422,8 +423,13 @@ write_git_diff()
>  				exit 1
>  		}
>  
> +	for pattern in $nodiff_patterns; do
> +		[ -n "$pattern" ] ||continue

В остальном коде после '||' всегда ставится пробел если за ним идёт другая
команда.

> +		nodiff="$nodiff $(printf ":^%s" "$pattern")"

subshell для подстановки $pattern c двумя символами выглядит странно.
Наверно лучше написать:

nodiff="$nodiff :^$pattern"

-- 
Rgrds, legion



Подробная информация о списке рассылки Devel