git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [TopGit PATCH] tg-create.sh: Support for multiple {to,cc,bcc} options
@ 2008-08-07 20:31 Bert Wesarg
  2008-08-09  0:33 ` Petr Baudis
  0 siblings, 1 reply; 6+ messages in thread
From: Bert Wesarg @ 2008-08-07 20:31 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Bert Wesarg, git

Git config supports multiple values for the same config key, so support it
for these TopGit config options, too.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>

---
 tg-create.sh |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/tg-create.sh b/tg-create.sh
index 6cce7ed..d47959b 100644
--- a/tg-create.sh
+++ b/tg-create.sh
@@ -100,13 +100,24 @@ git checkout -b "$name"
 echo "$deps" | sed 's/ /\n/g' >"$root_dir/.topdeps"
 git add "$root_dir/.topdeps"
 
+# Print each config value for a key ($1, without "topgit." prefix)
+# with the given prefix ($2)
+get_multi_config()
+{
+	# escape any / in prefix for sed
+	prefix="$(echo "$2" | sed -e 's/\//\\\\\//g')"
+
+	git config --get-all topgit.$1 2>/dev/null |
+		sed -e "s/^/$prefix /g"
+}
+
 author="$(git var GIT_AUTHOR_IDENT)"
 author_addr="${author%> *}>"
 {
 	echo "From: $author_addr"
-	! header="$(git config topgit.to)" || echo "To: $header"
-	! header="$(git config topgit.cc)" || echo "Cc: $header"
-	! header="$(git config topgit.bcc)" || echo "Bcc: $header"
+	get_multi_config to  "To:"
+	get_multi_config cc  "Cc:"
+	get_multi_config bcc "Bcc:"
 	! subject_prefix="$(git config topgit.subjectprefix)" || subject_prefix="$subject_prefix "
 	echo "Subject: [${subject_prefix}PATCH] $name"
 	echo
-- 
tg: (e311d15..) t/support-for-multiple-to-cc-bcc-options (depends on: master)

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

* Re: [TopGit PATCH] tg-create.sh: Support for multiple {to,cc,bcc} options
  2008-08-07 20:31 [TopGit PATCH] tg-create.sh: Support for multiple {to,cc,bcc} options Bert Wesarg
@ 2008-08-09  0:33 ` Petr Baudis
  2008-08-09  1:37   ` Junio C Hamano
  0 siblings, 1 reply; 6+ messages in thread
From: Petr Baudis @ 2008-08-09  0:33 UTC (permalink / raw)
  To: Bert Wesarg; +Cc: git

  Hi,

On Thu, Aug 07, 2008 at 10:31:26PM +0200, Bert Wesarg wrote:
> Git config supports multiple values for the same config key, so support it
> for these TopGit config options, too.
> 
> Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
> 
> ---
>  tg-create.sh |   17 ++++++++++++++---
>  1 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/tg-create.sh b/tg-create.sh
> index 6cce7ed..d47959b 100644
> --- a/tg-create.sh
> +++ b/tg-create.sh
> @@ -100,13 +100,24 @@ git checkout -b "$name"
>  echo "$deps" | sed 's/ /\n/g' >"$root_dir/.topdeps"
>  git add "$root_dir/.topdeps"
>  
> +# Print each config value for a key ($1, without "topgit." prefix)
> +# with the given prefix ($2)
> +get_multi_config()
> +{
> +	# escape any / in prefix for sed
> +	prefix="$(echo "$2" | sed -e 's/\//\\\\\//g')"

Maybe use s### ? ;-)

> +
> +	git config --get-all topgit.$1 2>/dev/null |
> +		sed -e "s/^/$prefix /g"
> +}

Won't this return an error code and terminate the script in case no
option is defined? And why the stderr redirect?

>  author="$(git var GIT_AUTHOR_IDENT)"
>  author_addr="${author%> *}>"
>  {
>  	echo "From: $author_addr"
> -	! header="$(git config topgit.to)" || echo "To: $header"
> -	! header="$(git config topgit.cc)" || echo "Cc: $header"
> -	! header="$(git config topgit.bcc)" || echo "Bcc: $header"
> +	get_multi_config to  "To:"
> +	get_multi_config cc  "Cc:"
> +	get_multi_config bcc "Bcc:"
>  	! subject_prefix="$(git config topgit.subjectprefix)" || subject_prefix="$subject_prefix "
>  	echo "Subject: [${subject_prefix}PATCH] $name"
>  	echo

One trouble here is that I've seen mailers mess up when there is
multiple occurences of these headers, so it would be probably safer to
concatenate them all to single line, comma-separated.

-- 
				Petr "Pasky" Baudis
The next generation of interesting software will be done
on the Macintosh, not the IBM PC.  -- Bill Gates

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

* Re: [TopGit PATCH] tg-create.sh: Support for multiple {to,cc,bcc} options
  2008-08-09  0:33 ` Petr Baudis
@ 2008-08-09  1:37   ` Junio C Hamano
  2008-08-09  7:23     ` Bert Wesarg
  2008-08-09  8:27     ` Petr Baudis
  0 siblings, 2 replies; 6+ messages in thread
From: Junio C Hamano @ 2008-08-09  1:37 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Bert Wesarg, git

Petr Baudis <pasky@suse.cz> writes:

>> +	prefix="$(echo "$2" | sed -e 's/\//\\\\\//g')"
>
> Maybe use s### ? ;-)

Personally I like '|' instead.  It's much less visually distracting than #.

>> +
>> +	git config --get-all topgit.$1 2>/dev/null |
>> +		sed -e "s/^/$prefix /g"
>> +}
>
> Won't this return an error code and terminate the script in case no
> option is defined?

Exit code from upstream of a pipe does not affect the exit code from the
pipeline, and sed does not exit non-zero just because there was no
substitution.

>> -	! header="$(git config topgit.to)" || echo "To: $header"
>> -	! header="$(git config topgit.cc)" || echo "Cc: $header"
>> -	! header="$(git config topgit.bcc)" || echo "Bcc: $header"
>> +	get_multi_config to  "To:"
>> +	get_multi_config cc  "Cc:"
>> +	get_multi_config bcc "Bcc:"
>>  	! subject_prefix="$(git config topgit.subjectprefix)" || subject_prefix="$subject_prefix "
>>  	echo "Subject: [${subject_prefix}PATCH] $name"
>>  	echo
>
> One trouble here is that I've seen mailers mess up when there is
> multiple occurences of these headers, so it would be probably safer to
> concatenate them all to single line, comma-separated.

It is not just "I've seen mailers"; RFC2822 wants you to have at most one
(see the table on Page 20).

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

* Re: [TopGit PATCH] tg-create.sh: Support for multiple {to,cc,bcc} options
  2008-08-09  1:37   ` Junio C Hamano
@ 2008-08-09  7:23     ` Bert Wesarg
  2008-08-09  8:27     ` Petr Baudis
  1 sibling, 0 replies; 6+ messages in thread
From: Bert Wesarg @ 2008-08-09  7:23 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Petr Baudis, git

On Sat, Aug 9, 2008 at 03:37, Junio C Hamano <gitster@pobox.com> wrote:
> Petr Baudis <pasky@suse.cz> writes:
>
>>> +    prefix="$(echo "$2" | sed -e 's/\//\\\\\//g')"
>>
>> Maybe use s### ? ;-)
>
> Personally I like '|' instead.  It's much less visually distracting than #.
  ^^^^^^^^^^ says it all ;-)
>
>>> +
>>> +    git config --get-all topgit.$1 2>/dev/null |
>>> +            sed -e "s/^/$prefix /g"
>>> +}
>>
>> Won't this return an error code and terminate the script in case no
>> option is defined?
I tested it with none defined options: no error, no distracting empty
lines, no error messages. so it worked here.

>>> -    ! header="$(git config topgit.to)" || echo "To: $header"
>>> -    ! header="$(git config topgit.cc)" || echo "Cc: $header"
>>> -    ! header="$(git config topgit.bcc)" || echo "Bcc: $header"
>>> +    get_multi_config to  "To:"
>>> +    get_multi_config cc  "Cc:"
>>> +    get_multi_config bcc "Bcc:"
>>>      ! subject_prefix="$(git config topgit.subjectprefix)" || subject_prefix="$subject_prefix "
>>>      echo "Subject: [${subject_prefix}PATCH] $name"
>>>      echo
>>
>> One trouble here is that I've seen mailers mess up when there is
>> multiple occurences of these headers, so it would be probably safer to
>> concatenate them all to single line, comma-separated.
>
> It is not just "I've seen mailers"; RFC2822 wants you to have at most one
> (see the table on Page 20).
But do we generate a valid mail with tg patch, or just a patch file
with some special looking lines? Anyway, I thought about the comma
separated solution too, but git send-mail handles these multi lines
well. So I take the easy road.

Bert

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

* Re: [TopGit PATCH] tg-create.sh: Support for multiple {to,cc,bcc} options
  2008-08-09  1:37   ` Junio C Hamano
  2008-08-09  7:23     ` Bert Wesarg
@ 2008-08-09  8:27     ` Petr Baudis
  2008-08-09 10:49       ` Bert Wesarg
  1 sibling, 1 reply; 6+ messages in thread
From: Petr Baudis @ 2008-08-09  8:27 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Bert Wesarg, git

On Fri, Aug 08, 2008 at 06:37:13PM -0700, Junio C Hamano wrote:
> Petr Baudis <pasky@suse.cz> writes:
> 
> >> +	prefix="$(echo "$2" | sed -e 's/\//\\\\\//g')"
> >
> > Maybe use s### ? ;-)
> 
> Personally I like '|' instead.  It's much less visually distracting than #.

I'm just used to '#' more, but either is fine for me.

> >> +
> >> +	git config --get-all topgit.$1 2>/dev/null |
> >> +		sed -e "s/^/$prefix /g"
> >> +}
> >
> > Won't this return an error code and terminate the script in case no
> > option is defined?
> 
> Exit code from upstream of a pipe does not affect the exit code from the
> pipeline, and sed does not exit non-zero just because there was no
> substitution.

Oh, you're right - somehow I didn't quite absorb that pipe is used late
at the night. ;-) I still don't understand the stderr redirect, though.

				Petr "Pasky" Baudis

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

* Re: [TopGit PATCH] tg-create.sh: Support for multiple {to,cc,bcc} options
  2008-08-09  8:27     ` Petr Baudis
@ 2008-08-09 10:49       ` Bert Wesarg
  0 siblings, 0 replies; 6+ messages in thread
From: Bert Wesarg @ 2008-08-09 10:49 UTC (permalink / raw)
  To: Petr Baudis; +Cc: Junio C Hamano, git

On Sat, Aug 9, 2008 at 10:27, Petr Baudis <pasky@suse.cz> wrote:
>> >> +
>> >> +  git config --get-all topgit.$1 2>/dev/null |
>> >> +          sed -e "s/^/$prefix /g"
>> >> +}
> I still don't understand the stderr redirect, though.
Just precaution, I think. It seems unnecessary.

Bert
>
>                                Petr "Pasky" Baudis
>

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

end of thread, other threads:[~2008-08-09 10:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-07 20:31 [TopGit PATCH] tg-create.sh: Support for multiple {to,cc,bcc} options Bert Wesarg
2008-08-09  0:33 ` Petr Baudis
2008-08-09  1:37   ` Junio C Hamano
2008-08-09  7:23     ` Bert Wesarg
2008-08-09  8:27     ` Petr Baudis
2008-08-09 10:49       ` Bert Wesarg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).