ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules
@ 2020-11-26 14:16 Vladimir D. Seleznev
  2020-11-26 14:16 ` [devel] [PATCH 2/3] tests: add test for nodiff directive Vladimir D. Seleznev
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Vladimir D. Seleznev @ 2020-11-26 14:16 UTC (permalink / raw)
  To: devel; +Cc: legion, Vladimir D. Seleznev

The directive specifies a glob pattern that define files that should be
excluded from diff generation.

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")"
+	done
+
 	git diff-tree --patch-with-stat --text --no-renames --no-ext-diff \
-		"$old_id" "$new_id" >"$outdir/$name"
+		"$old_id" "$new_id" -- $nodiff >"$outdir/$name"
 	verbose "Extracted diff: $name"
 
 	compress_file "$cmd" "$name" ''
@@ -436,6 +442,7 @@ make_difference()
 		rules_error 'No old_dir or new_dir specified'
 	local optional="$1" && shift
 	local cmd="$1" && shift
+	local nodiff_patterns="$1" && shift
 	local old_dir="$1" && shift
 	local new_dir="$1" && shift
 
@@ -456,7 +463,7 @@ make_difference()
 	diff_new_tree="$(resolve_tree_base_name "$diff_new_tree")" ||
 		rules_error "Invalid new tree: $diff_new_tree"
 
-	write_git_diff "$optional" "$cmd" "$diff_old_tree" "$old_dir" "$diff_new_tree" "$new_dir" "$diff_name"
+	write_git_diff "$optional" "$cmd" "$nodiff_patterns" "$diff_old_tree" "$old_dir" "$diff_new_tree" "$new_dir" "$diff_name"
 }
 
 extract_pattern()
@@ -564,7 +571,7 @@ parse_rules()
 	exclude_pattern_list=
 	lineno=0
 
-	local cmd options
+	local cmd options nodiff_patterns=
 	while read -r cmd options; do
 		lineno="$((lineno+1))"
 		if [ "$cmd" = 'exclude:' ]; then
@@ -572,6 +579,11 @@ parse_rules()
 				rules_error "Invalid exclude pattern specified: $options"
 			exclude_pattern_list="$exclude_pattern_list $options"
 		fi
+		if [ "$cmd" = 'nodiff:' ]; then
+			[ -z "$(printf %s "$options" |tr -d '[:alnum:]_.?*-/![]')" ] ||
+				rules_error "Invalid nodiff pattern specified: $options"
+			nodiff_patterns="$nodiff_patterns $options"
+		fi
 	done <"$workdir/rules"
 
 	lineno=0
@@ -601,7 +613,7 @@ parse_rules()
 		eval "set -- $opts"
 
 		case "$cmd" in
-			spec|specsubst|exclude|tags)
+			spec|specsubst|exclude|tags|nodiff)
 				continue
 				;;
 			tar|tar.gz|tar.bz2|tar.lzma|tar.xz|tar.zst)
@@ -613,7 +625,7 @@ parse_rules()
 					rules_error 'Failed to make archive'
 				;;
 			diff|diff.gz|diff.bz2|diff.lzma|diff.xz|diff.zst)
-				make_difference "$optional" "$cmd" "$@" ||
+				make_difference "$optional" "$cmd" "$nodiff_patterns" "$@" ||
 					rules_error 'Failed to make diff'
 				;;
 			copy|gzip|bzip2|lzma|xz|zstd)
diff --git a/gear-rules.5.in b/gear-rules.5.in
index 5469199..347e5c8 100644
--- a/gear-rules.5.in
+++ b/gear-rules.5.in
@@ -452,6 +452,12 @@ or
 .I new_tree_path
 specify non-default base trees, these trees still must be valid.
 .TP
+.BI "nodiff: " glob_pattern\fR
+Exclude all the files that matched pattern from diff generation. Affects all
+.BR diff -like
+directives in the rule file irrespective of the order. Specifying a glob
+pattern which does not match any files in the tree is not an error.
+.TP
 .BI "specsubst: " variables...
 Specify whitespace-separated list of variables that should be substituted
 in specfile.  Variable names may contain letters, digits and underscore
@@ -541,6 +547,19 @@ However, if a prerelease version is packaged, parts like
 \*(lqpreN\*(rq or \*(lqrcN\*(rq should not be included in the package
 version, therefore the rule file will need some modifications for such
 versions.
+.PP
+You can also want to exclude
+.BR .gear
+subdirectory and spec file from diff generation:
+.RS 4
+.PP
+.ft CW
+.nf
+nodiff: .gear/**
+nodiff: *.spec
+.fi
+.RE
+.PP
 .
 .SS "Archive with unmodified sources and separate patch files"
 If you prefer to maintain patch files for local modifications instead
diff --git a/gear-store-tags b/gear-store-tags
index a649b66..a0a60cf 100755
--- a/gear-store-tags
+++ b/gear-store-tags
@@ -197,7 +197,7 @@ find_tags_in_rules()
 				;;
 		esac
 		case "$cmd" in
-			spec|tags|compress|copy|gzip|bzip2|lzma|xz|zstd|exclude)
+			spec|tags|compress|copy|gzip|bzip2|lzma|nodiff|xz|zstd|exclude)
 				continue
 				;;
 			tar|tar.gz|tar.bz2|tar.lzma|tar.xz|tar.zst|zip)
-- 
2.29.2



^ permalink raw reply	[flat|nested] 14+ messages in thread

* [devel] [PATCH 2/3] tests: add test for nodiff directive
  2020-11-26 14:16 [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules Vladimir D. Seleznev
@ 2020-11-26 14:16 ` Vladimir D. Seleznev
  2020-11-26 14:16 ` [devel] [PATCH 3/3] tests: check nodiff does not fail if pattern matches no file Vladimir D. Seleznev
  2020-11-26 14:49 ` [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules Alexey Gladkov
  2 siblings, 0 replies; 14+ messages in thread
From: Vladimir D. Seleznev @ 2020-11-26 14:16 UTC (permalink / raw)
  To: devel; +Cc: legion, Vladimir D. Seleznev

Signed-off-by: Vladimir D. Seleznev <vseleznv@altlinux.org>
---
 tests/gear-rules-diff-tag-tree-nodiff.test | 52 ++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 tests/gear-rules-diff-tag-tree-nodiff.test

diff --git a/tests/gear-rules-diff-tag-tree-nodiff.test b/tests/gear-rules-diff-tag-tree-nodiff.test
new file mode 100644
index 0000000..e22fc4e
--- /dev/null
+++ b/tests/gear-rules-diff-tag-tree-nodiff.test
@@ -0,0 +1,52 @@
+#!/bin/sh -efu
+
+gear_rules_diff_tag_tree_nodiff() # test entry point
+{
+	local spec=file.spec
+	local n=foo
+	local v=1
+	local r=99
+	local src=a/bb/ccc/dddd/src
+	local dst=1/22/333/4444/55555/dst
+	local patch="${dst##*/}-$v-$r.patch${gear_directive#diff}"
+
+	printf 'Name:%s\nVersion:  %s\nRelease:   %s' "$n" "$v" "$r" >"$spec"
+	mkdir -p $src
+	echo one >$src/file
+	echo two >$src/file2
+	git add "$spec" $src/file $src/file2
+	git commit -q -a -m 1
+	git tag -a -m t1 v1
+	git rm -q -f $src/file $src/file2
+	mkdir .gear
+	echo "$gear_directive: v1:$src $dst" > .gear/rules
+	echo "nodiff: file2" >> .gear/rules
+	echo "nodiff: file3" >> .gear/rules
+	mkdir -p $dst
+	echo two >$dst/file
+	echo three >$dst/file3
+	git add .gear/rules $dst/file $dst/file3
+	gear-store-tags -a
+	git commit -q -a -m 2
+
+	finalize_repo
+
+	$GEAR "$GEAR_OUT"
+	check_pkgtar_list "$spec
+./
+./$spec
+./$patch"
+	check_pkgtar_spec "$GEAR_OUT" "$spec"
+	unpack_pkgtar_to .out
+	result="$($decompress_prog ".out/$patch")"
+	assertEquals ' file | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/file b/file
+index 5626abf..f719efd 100644
+--- a/file
++++ b/file
+@@ -1 +1 @@
+-one
++two' "$result"
+}
-- 
2.29.2



^ permalink raw reply	[flat|nested] 14+ messages in thread

* [devel] [PATCH 3/3] tests: check nodiff does not fail if pattern matches no file
  2020-11-26 14:16 [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules Vladimir D. Seleznev
  2020-11-26 14:16 ` [devel] [PATCH 2/3] tests: add test for nodiff directive Vladimir D. Seleznev
@ 2020-11-26 14:16 ` Vladimir D. Seleznev
  2020-11-26 14:49 ` [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules Alexey Gladkov
  2 siblings, 0 replies; 14+ messages in thread
From: Vladimir D. Seleznev @ 2020-11-26 14:16 UTC (permalink / raw)
  To: devel; +Cc: legion, Vladimir D. Seleznev

Signed-off-by: Vladimir D. Seleznev <vseleznv@altlinux.org>
---
 tests/gear-rules-diff-tag-tree-nodiff.test | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/gear-rules-diff-tag-tree-nodiff.test b/tests/gear-rules-diff-tag-tree-nodiff.test
index e22fc4e..4d0a8aa 100644
--- a/tests/gear-rules-diff-tag-tree-nodiff.test
+++ b/tests/gear-rules-diff-tag-tree-nodiff.test
@@ -22,6 +22,7 @@ gear_rules_diff_tag_tree_nodiff() # test entry point
 	echo "$gear_directive: v1:$src $dst" > .gear/rules
 	echo "nodiff: file2" >> .gear/rules
 	echo "nodiff: file3" >> .gear/rules
+	echo "nodiff: noterror" >> .gear/rules
 	mkdir -p $dst
 	echo two >$dst/file
 	echo three >$dst/file3
-- 
2.29.2



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules
  2020-11-26 14:16 [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules Vladimir D. Seleznev
  2020-11-26 14:16 ` [devel] [PATCH 2/3] tests: add test for nodiff directive Vladimir D. Seleznev
  2020-11-26 14:16 ` [devel] [PATCH 3/3] tests: check nodiff does not fail if pattern matches no file Vladimir D. Seleznev
@ 2020-11-26 14:49 ` Alexey Gladkov
  2020-11-26 14:54   ` Vladimir D. Seleznev
  2 siblings, 1 reply; 14+ messages in thread
From: Alexey Gladkov @ 2020-11-26 14:49 UTC (permalink / raw)
  To: Vladimir D. Seleznev; +Cc: devel, ldv

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



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules
  2020-11-26 14:49 ` [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules Alexey Gladkov
@ 2020-11-26 14:54   ` Vladimir D. Seleznev
  2020-11-26 15:17     ` Alexey Gladkov
  0 siblings, 1 reply; 14+ messages in thread
From: Vladimir D. Seleznev @ 2020-11-26 14:54 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Nov 26, 2020 at 03:49:27PM +0100, Alexey Gladkov wrote:
> 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`.

Я просто исходил из логики, что в подавляющей большинстве случаев там,
где это уместно использовать, rules будет выглядеть так:

	tar: v@version@:.
	diff: v@version@:. .
	nodiff: .gear

В этом плане

	tar: v@version@:.
	diff: v@version@:. exclude=.gear

по-моему выглядит менее красиво. Но я могу подготовить и такой вариант.

-- 
   WBR,
   Vladimir D. Seleznev


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules
  2020-11-26 14:54   ` Vladimir D. Seleznev
@ 2020-11-26 15:17     ` Alexey Gladkov
  2020-11-26 15:20       ` Anton Farygin
  2020-11-26 15:51       ` Alexey Gladkov
  0 siblings, 2 replies; 14+ messages in thread
From: Alexey Gladkov @ 2020-11-26 15:17 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Nov 26, 2020 at 05:54:39PM +0300, Vladimir D. Seleznev wrote:
> On Thu, Nov 26, 2020 at 03:49:27PM +0100, Alexey Gladkov wrote:
> > 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`.
> 
> Я просто исходил из логики, что в подавляющей большинстве случаев там,
> где это уместно использовать, rules будет выглядеть так:
> 
> 	tar: v@version@:.
> 	diff: v@version@:. .
> 	nodiff: .gear

У тебя, кстати, для такого варианта нет проверки, что указан nodiff, но
нет директивы diff так как это явная ошибка.

> В этом плане
> 
> 	tar: v@version@:.
> 	diff: v@version@:. exclude=.gear
> 
> по-моему выглядит менее красиво. Но я могу подготовить и такой вариант.

Для меня это выглядит более понятно так как первый вариант выглядит
понятно только если знать, что nodiff это опция директивы diff.

Если хотите увеличить читабильность, то давайте реализуем многострочные
директивы. Тогда можно будет написать:

	tar: v@version@:.
	diff: v@version@:. . \
		name=@new_dir@-@version@-@release@.patch \
		exclude=.gear

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules
  2020-11-26 15:17     ` Alexey Gladkov
@ 2020-11-26 15:20       ` Anton Farygin
  2020-11-26 15:51       ` Alexey Gladkov
  1 sibling, 0 replies; 14+ messages in thread
From: Anton Farygin @ 2020-11-26 15:20 UTC (permalink / raw)
  To: devel

On 26.11.2020 18:17, Alexey Gladkov wrote:
> Если хотите увеличить читабильность, то давайте реализуем многострочные
> директивы. Тогда можно будет написать:
>
> 	tar: v@version@:.
> 	diff: v@version@:. . \
> 		name=@new_dir@-@version@-@release@.patch  \
> 		exclude=.gear

+1



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules
  2020-11-26 15:17     ` Alexey Gladkov
  2020-11-26 15:20       ` Anton Farygin
@ 2020-11-26 15:51       ` Alexey Gladkov
  2020-12-09  2:10         ` Dmitry V. Levin
  1 sibling, 1 reply; 14+ messages in thread
From: Alexey Gladkov @ 2020-11-26 15:51 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thu, Nov 26, 2020 at 04:17:01PM +0100, Alexey Gladkov wrote:
> > В этом плане
> > 
> > 	tar: v@version@:.
> > 	diff: v@version@:. exclude=.gear
> > 
> > по-моему выглядит менее красиво. Но я могу подготовить и такой вариант.
> 
> Для меня это выглядит более понятно так как первый вариант выглядит
> понятно только если знать, что nodiff это опция директивы diff.
> 
> Если хотите увеличить читабильность, то давайте реализуем многострочные
> директивы. Тогда можно будет написать:
> 
> 	tar: v@version@:.
> 	diff: v@version@:. . \
> 		name=@new_dir@-@version@-@release@.patch \
> 		exclude=.gear

Быстрый патч, который позволит сделать такое. Нужно проверить не сломаются
ли какие-нибудь gear-rules.

Signed-off-by: Alexey Gladkov <legion@altlinux.org>
---
 gear                                    |  3 ++-
 tests/gear-rules-diff-tag-tag-name.test | 11 +++++------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/gear b/gear
index 6282c92..3c95eaa 100755
--- a/gear
+++ b/gear
@@ -575,7 +575,8 @@ parse_rules()
 	done <"$workdir/rules"
 
 	lineno=0
-	while read -r cmd options; do
+	# shellcheck disable=SC2162
+	while read cmd options; do
 		lineno="$((lineno+1))"
 		local optional=0
 		case "$cmd" in
diff --git a/tests/gear-rules-diff-tag-tag-name.test b/tests/gear-rules-diff-tag-tag-name.test
index 9c244d8..2234be3 100644
--- a/tests/gear-rules-diff-tag-tag-name.test
+++ b/tests/gear-rules-diff-tag-tag-name.test
@@ -24,12 +24,11 @@ gear_rules_diff_tag_tag_name() # test entry point
 	git tag -a -m t1 v2
 	git rm -q -f $dst/file
 	mkdir .gear
-	printf '%s: %s %s %s\n' \
-		"$gear_directive" \
-		"v1:${src%/*}/@name@-v@version@" \
-		"v2:${dst%/*}/@name@-r@release@" \
-		"name=@name@-@old_dir@-@new_dir@-@version@-@release@.diff" \
-		>.gear/rules
+	cat >.gear/rules <<-EOF
+	$gear_directive: \
+		v1:${src%/*}/@name@-v@version@ v2:${dst%/*}/@name@-r@release@ \
+		name=@name@-@old_dir@-@new_dir@-@version@-@release@.diff
+	EOF
 	git add .gear/rules
 	gear-store-tags -a
 	git commit -q -a -m 3
-- 
2.25.4



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules
  2020-11-26 15:51       ` Alexey Gladkov
@ 2020-12-09  2:10         ` Dmitry V. Levin
  2020-12-09 10:40           ` Alexey Gladkov
  0 siblings, 1 reply; 14+ messages in thread
From: Dmitry V. Levin @ 2020-12-09  2:10 UTC (permalink / raw)
  To: ALT Devel discussion list

On Thu, Nov 26, 2020 at 04:51:50PM +0100, Alexey Gladkov wrote:
> On Thu, Nov 26, 2020 at 04:17:01PM +0100, Alexey Gladkov wrote:
> > > В этом плане
> > > 
> > > 	tar: v@version@:.
> > > 	diff: v@version@:. exclude=.gear
> > > 
> > > по-моему выглядит менее красиво. Но я могу подготовить и такой вариант.
> > 
> > Для меня это выглядит более понятно так как первый вариант выглядит
> > понятно только если знать, что nodiff это опция директивы diff.
> > 
> > Если хотите увеличить читабильность, то давайте реализуем многострочные
> > директивы. Тогда можно будет написать:
> > 
> > 	tar: v@version@:.
> > 	diff: v@version@:. . \
> > 		name=@new_dir@-@version@-@release@.patch \
> > 		exclude=.gear
> 
> Быстрый патч, который позволит сделать такое. Нужно проверить не сломаются
> ли какие-нибудь gear-rules.

По крайней мере в Сизифе gear-rules, содержащих символ "\", не обнаружено.

> Signed-off-by: Alexey Gladkov <legion@altlinux.org>

Это хорошо, но в gear-rules(5) сейчас сказано буквально следующее:
"There is no support for line continuation."

Так что documentation update и commit message тоже нужны. :)

> ---
>  gear                                    |  3 ++-
>  tests/gear-rules-diff-tag-tag-name.test | 11 +++++------
>  2 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/gear b/gear
> index 6282c92..3c95eaa 100755
> --- a/gear
> +++ b/gear
> @@ -575,7 +575,8 @@ parse_rules()
>  	done <"$workdir/rules"
>  
>  	lineno=0
> -	while read -r cmd options; do
> +	# shellcheck disable=SC2162
> +	while read cmd options; do
>  		lineno="$((lineno+1))"
>  		local optional=0
>  		case "$cmd" in
> diff --git a/tests/gear-rules-diff-tag-tag-name.test b/tests/gear-rules-diff-tag-tag-name.test
> index 9c244d8..2234be3 100644
> --- a/tests/gear-rules-diff-tag-tag-name.test
> +++ b/tests/gear-rules-diff-tag-tag-name.test
> @@ -24,12 +24,11 @@ gear_rules_diff_tag_tag_name() # test entry point
>  	git tag -a -m t1 v2
>  	git rm -q -f $dst/file
>  	mkdir .gear
> -	printf '%s: %s %s %s\n' \
> -		"$gear_directive" \
> -		"v1:${src%/*}/@name@-v@version@" \
> -		"v2:${dst%/*}/@name@-r@release@" \
> -		"name=@name@-@old_dir@-@new_dir@-@version@-@release@.diff" \
> -		>.gear/rules
> +	cat >.gear/rules <<-EOF
> +	$gear_directive: \
> +		v1:${src%/*}/@name@-v@version@ v2:${dst%/*}/@name@-r@release@ \
> +		name=@name@-@old_dir@-@new_dir@-@version@-@release@.diff
> +	EOF
>  	git add .gear/rules
>  	gear-store-tags -a
>  	git commit -q -a -m 3

-- 
ldv


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules
  2020-12-09  2:10         ` Dmitry V. Levin
@ 2020-12-09 10:40           ` Alexey Gladkov
  2020-12-09 14:39             ` [devel] gear-rules: allow backslashes to escape any characters Dmitry V. Levin
  0 siblings, 1 reply; 14+ messages in thread
From: Alexey Gladkov @ 2020-12-09 10:40 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Dec 09, 2020 at 05:10:04AM +0300, Dmitry V. Levin wrote:
> On Thu, Nov 26, 2020 at 04:51:50PM +0100, Alexey Gladkov wrote:
> > On Thu, Nov 26, 2020 at 04:17:01PM +0100, Alexey Gladkov wrote:
> > > > В этом плане
> > > > 
> > > > 	tar: v@version@:.
> > > > 	diff: v@version@:. exclude=.gear
> > > > 
> > > > по-моему выглядит менее красиво. Но я могу подготовить и такой вариант.
> > > 
> > > Для меня это выглядит более понятно так как первый вариант выглядит
> > > понятно только если знать, что nodiff это опция директивы diff.
> > > 
> > > Если хотите увеличить читабильность, то давайте реализуем многострочные
> > > директивы. Тогда можно будет написать:
> > > 
> > > 	tar: v@version@:.
> > > 	diff: v@version@:. . \
> > > 		name=@new_dir@-@version@-@release@.patch \
> > > 		exclude=.gear
> > 
> > Быстрый патч, который позволит сделать такое. Нужно проверить не сломаются
> > ли какие-нибудь gear-rules.
> 
> По крайней мере в Сизифе gear-rules, содержащих символ "\", не обнаружено.
> 
> > Signed-off-by: Alexey Gladkov <legion@altlinux.org>
> 
> Это хорошо, но в gear-rules(5) сейчас сказано буквально следующее:
> "There is no support for line continuation."
> 
> Так что documentation update и commit message тоже нужны. :)

Так это был набросок, а не патч ))) Ок, сделаю из него настоящий патч.

> > ---
> >  gear                                    |  3 ++-
> >  tests/gear-rules-diff-tag-tag-name.test | 11 +++++------
> >  2 files changed, 7 insertions(+), 7 deletions(-)
> > 
> > diff --git a/gear b/gear
> > index 6282c92..3c95eaa 100755
> > --- a/gear
> > +++ b/gear
> > @@ -575,7 +575,8 @@ parse_rules()
> >  	done <"$workdir/rules"
> >  
> >  	lineno=0
> > -	while read -r cmd options; do
> > +	# shellcheck disable=SC2162
> > +	while read cmd options; do
> >  		lineno="$((lineno+1))"
> >  		local optional=0
> >  		case "$cmd" in
> > diff --git a/tests/gear-rules-diff-tag-tag-name.test b/tests/gear-rules-diff-tag-tag-name.test
> > index 9c244d8..2234be3 100644
> > --- a/tests/gear-rules-diff-tag-tag-name.test
> > +++ b/tests/gear-rules-diff-tag-tag-name.test
> > @@ -24,12 +24,11 @@ gear_rules_diff_tag_tag_name() # test entry point
> >  	git tag -a -m t1 v2
> >  	git rm -q -f $dst/file
> >  	mkdir .gear
> > -	printf '%s: %s %s %s\n' \
> > -		"$gear_directive" \
> > -		"v1:${src%/*}/@name@-v@version@" \
> > -		"v2:${dst%/*}/@name@-r@release@" \
> > -		"name=@name@-@old_dir@-@new_dir@-@version@-@release@.diff" \
> > -		>.gear/rules
> > +	cat >.gear/rules <<-EOF
> > +	$gear_directive: \
> > +		v1:${src%/*}/@name@-v@version@ v2:${dst%/*}/@name@-r@release@ \
> > +		name=@name@-@old_dir@-@new_dir@-@version@-@release@.diff
> > +	EOF
> >  	git add .gear/rules
> >  	gear-store-tags -a
> >  	git commit -q -a -m 3
> 
> -- 
> ldv
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] gear-rules: allow backslashes to escape any characters
  2020-12-09 10:40           ` Alexey Gladkov
@ 2020-12-09 14:39             ` Dmitry V. Levin
  2020-12-09 14:48               ` Vladimir D. Seleznev
  2020-12-09 15:51               ` Alexey Gladkov
  0 siblings, 2 replies; 14+ messages in thread
From: Dmitry V. Levin @ 2020-12-09 14:39 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Dec 09, 2020 at 11:40:15AM +0100, Alexey Gladkov wrote:
> On Wed, Dec 09, 2020 at 05:10:04AM +0300, Dmitry V. Levin wrote:
> > On Thu, Nov 26, 2020 at 04:51:50PM +0100, Alexey Gladkov wrote:
> > > On Thu, Nov 26, 2020 at 04:17:01PM +0100, Alexey Gladkov wrote:
[...]
> > > > Если хотите увеличить читабильность, то давайте реализуем многострочные
> > > > директивы. Тогда можно будет написать:
> > > > 
> > > > 	tar: v@version@:.
> > > > 	diff: v@version@:. . \
> > > > 		name=@new_dir@-@version@-@release@.patch \
> > > > 		exclude=.gear
> > > 
> > > Быстрый патч, который позволит сделать такое. Нужно проверить не сломаются
> > > ли какие-нибудь gear-rules.
> > 
> > По крайней мере в Сизифе gear-rules, содержащих символ "\", не обнаружено.
> > 
> > > Signed-off-by: Alexey Gladkov <legion@altlinux.org>
> > 
> > Это хорошо, но в gear-rules(5) сейчас сказано буквально следующее:
> > "There is no support for line continuation."
> > 
> > Так что documentation update и commit message тоже нужны. :)
> 
> Так это был набросок, а не патч ))) Ок, сделаю из него настоящий патч.

Вопрос в том, действительно ли мы хотим эту фичу,
которая по сути allows backslashes to escape any characters.


-- 
ldv


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] gear-rules: allow backslashes to escape any characters
  2020-12-09 14:39             ` [devel] gear-rules: allow backslashes to escape any characters Dmitry V. Levin
@ 2020-12-09 14:48               ` Vladimir D. Seleznev
  2020-12-09 15:51               ` Alexey Gladkov
  1 sibling, 0 replies; 14+ messages in thread
From: Vladimir D. Seleznev @ 2020-12-09 14:48 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Dec 09, 2020 at 05:39:42PM +0300, Dmitry V. Levin wrote:
> On Wed, Dec 09, 2020 at 11:40:15AM +0100, Alexey Gladkov wrote:
> > On Wed, Dec 09, 2020 at 05:10:04AM +0300, Dmitry V. Levin wrote:
> > > On Thu, Nov 26, 2020 at 04:51:50PM +0100, Alexey Gladkov wrote:
> > > > On Thu, Nov 26, 2020 at 04:17:01PM +0100, Alexey Gladkov wrote:
> [...]
> > > > > Если хотите увеличить читабильность, то давайте реализуем многострочные
> > > > > директивы. Тогда можно будет написать:
> > > > > 
> > > > > 	tar: v@version@:.
> > > > > 	diff: v@version@:. . \
> > > > > 		name=@new_dir@-@version@-@release@.patch \
> > > > > 		exclude=.gear
> > > > 
> > > > Быстрый патч, который позволит сделать такое. Нужно проверить не сломаются
> > > > ли какие-нибудь gear-rules.
> > > 
> > > По крайней мере в Сизифе gear-rules, содержащих символ "\", не обнаружено.
> > > 
> > > > Signed-off-by: Alexey Gladkov <legion@altlinux.org>
> > > 
> > > Это хорошо, но в gear-rules(5) сейчас сказано буквально следующее:
> > > "There is no support for line continuation."
> > > 
> > > Так что documentation update и commit message тоже нужны. :)
> > 
> > Так это был набросок, а не патч ))) Ок, сделаю из него настоящий патч.
> 
> Вопрос в том, действительно ли мы хотим эту фичу,
> которая по сути allows backslashes to escape any characters.

Я не уверен.

-- 
   WBR,
   Vladimir D. Seleznev


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] gear-rules: allow backslashes to escape any characters
  2020-12-09 14:39             ` [devel] gear-rules: allow backslashes to escape any characters Dmitry V. Levin
  2020-12-09 14:48               ` Vladimir D. Seleznev
@ 2020-12-09 15:51               ` Alexey Gladkov
  2020-12-10 10:31                 ` Dmitry V. Levin
  1 sibling, 1 reply; 14+ messages in thread
From: Alexey Gladkov @ 2020-12-09 15:51 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Dec 09, 2020 at 05:39:42PM +0300, Dmitry V. Levin wrote:
> On Wed, Dec 09, 2020 at 11:40:15AM +0100, Alexey Gladkov wrote:
> > On Wed, Dec 09, 2020 at 05:10:04AM +0300, Dmitry V. Levin wrote:
> > > On Thu, Nov 26, 2020 at 04:51:50PM +0100, Alexey Gladkov wrote:
> > > > On Thu, Nov 26, 2020 at 04:17:01PM +0100, Alexey Gladkov wrote:
> [...]
> > > > > Если хотите увеличить читабильность, то давайте реализуем многострочные
> > > > > директивы. Тогда можно будет написать:
> > > > > 
> > > > > 	tar: v@version@:.
> > > > > 	diff: v@version@:. . \
> > > > > 		name=@new_dir@-@version@-@release@.patch \
> > > > > 		exclude=.gear
> > > > 
> > > > Быстрый патч, который позволит сделать такое. Нужно проверить не сломаются
> > > > ли какие-нибудь gear-rules.
> > > 
> > > По крайней мере в Сизифе gear-rules, содержащих символ "\", не обнаружено.
> > > 
> > > > Signed-off-by: Alexey Gladkov <legion@altlinux.org>
> > > 
> > > Это хорошо, но в gear-rules(5) сейчас сказано буквально следующее:
> > > "There is no support for line continuation."
> > > 
> > > Так что documentation update и commit message тоже нужны. :)
> > 
> > Так это был набросок, а не патч ))) Ок, сделаю из него настоящий патч.
> 
> Вопрос в том, действительно ли мы хотим эту фичу,
> которая по сути allows backslashes to escape any characters.

C одной стороны, да это сильно расширяет, но с другой стороны можно
вынести valid_string из if'a и проверить все options [1].

[1] http://git.altlinux.org/people/ldv/packages/gear.git?p=gear.git;a=blob;f=gear;h=340321465f695449a28e8b5efcedfec7acbca2ab;hb=HEAD#l586

-- 
Rgrds, legion



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [devel] gear-rules: allow backslashes to escape any characters
  2020-12-09 15:51               ` Alexey Gladkov
@ 2020-12-10 10:31                 ` Dmitry V. Levin
  0 siblings, 0 replies; 14+ messages in thread
From: Dmitry V. Levin @ 2020-12-10 10:31 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Dec 09, 2020 at 04:51:57PM +0100, Alexey Gladkov wrote:
> On Wed, Dec 09, 2020 at 05:39:42PM +0300, Dmitry V. Levin wrote:

> > Вопрос в том, действительно ли мы хотим эту фичу,
> > которая по сути allows backslashes to escape any characters.
> 
> C одной стороны, да это сильно расширяет, но с другой стороны можно
> вынести valid_string из if'a и проверить все options [1].
> [1] http://git.altlinux.org/people/ldv/packages/gear.git?p=gear.git;a=blob;f=gear;h=340321465f695449a28e8b5efcedfec7acbca2ab;hb=HEAD#l586

На мой взгляд, проверить все options имеет смысл в любом случае.


-- 
ldv


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-12-10 10:31 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-26 14:16 [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules Vladimir D. Seleznev
2020-11-26 14:16 ` [devel] [PATCH 2/3] tests: add test for nodiff directive Vladimir D. Seleznev
2020-11-26 14:16 ` [devel] [PATCH 3/3] tests: check nodiff does not fail if pattern matches no file Vladimir D. Seleznev
2020-11-26 14:49 ` [devel] [PATCH 1/3] Introduce nodiff directive for gear-rules Alexey Gladkov
2020-11-26 14:54   ` Vladimir D. Seleznev
2020-11-26 15:17     ` Alexey Gladkov
2020-11-26 15:20       ` Anton Farygin
2020-11-26 15:51       ` Alexey Gladkov
2020-12-09  2:10         ` Dmitry V. Levin
2020-12-09 10:40           ` Alexey Gladkov
2020-12-09 14:39             ` [devel] gear-rules: allow backslashes to escape any characters Dmitry V. Levin
2020-12-09 14:48               ` Vladimir D. Seleznev
2020-12-09 15:51               ` Alexey Gladkov
2020-12-10 10:31                 ` Dmitry V. Levin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git