# [PATCH] format-patch: fix skipping of blank-lines

3 messages from 2005-07-09 to 2005-07-09. Participants: Junio C Hamano, Linus Torvalds.
Thread: https://gitlist.dev/t/1180

## Junio C Hamano, 2005-07-09 00:46

Subject: [PATCH] format-patch: fix skipping of blank-lines
Message-ID: <7vu0j44xi4.fsf@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vu0j44xi4.fsf%40assigned-by-dhcp.cox.net

```
If it is fed a commit with more than one leading blank lines,
the sed scripts git-format-patch-script used looped forever.
This patch fixes it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---

 git-format-patch-script |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

58a3c79b488a28897cd5556dab0dd599b4ed9f0c
diff --git a/git-format-patch-script b/git-format-patch-script
--- a/git-format-patch-script
+++ b/git-format-patch-script
@@ -66,9 +66,13 @@ trap 'rm -f $tmp-*' 0 1 2 3 15
 series=$tmp-series
 
 titleScript='
-	1,/^$/d
+	/./d
 	: loop
-	/^$/b loop
+	/^$/{
+		n
+		b loop
+	}
+	s/^\[PATCH[^]]*\] *//
 	s/[^-a-z.A-Z_0-9]/-/g
         s/\.\.\.*/\./g
 	s/\.*$//
@@ -76,6 +80,7 @@ titleScript='
 	s/^-//
 	s/-$//
 	s/$/./
+	p
 	q
 '
 
@@ -88,7 +93,7 @@ total=`wc -l <$series`
 i=$total
 while read commit
 do
-    title=`git-cat-file commit "$commit" | sed -e "$titleScript"`
+    title=`git-cat-file commit "$commit" | sed -ne "$titleScript"`
     case "$numbered" in
     '') num= ;;
     *)
@@ -102,9 +107,12 @@ do
     echo "$file"
     {
 	mailScript='
-	1,/^$/d
+	/./d
 	: loop
-	/^$/b loop
+	/^$/{
+		n
+		b loop
+	}
 	s|^|[PATCH'"$num"'] |
 	: body
 	p

```

## Linus Torvalds, 2005-07-09 01:42

Subject: Re: [PATCH] format-patch: fix skipping of blank-lines
Message-ID: <Pine.LNX.4.58.0507081838560.17536@g5.osdl.org>
URL: https://gitlist.dev/e/Pine.LNX.4.58.0507081838560.17536%40g5.osdl.org
In-Reply-To: <7vu0j44xi4.fsf@assigned-by-dhcp.cox.net>

```


On Fri, 8 Jul 2005, Junio C Hamano wrote:
>
> If it is fed a commit with more than one leading blank lines,
> the sed scripts git-format-patch-script used looped forever.
> This patch fixes it.

How about using "git-stripspace"? That's what it's there for. It strips
whitespace from the end of lines, from the beginning, and from the end. It
also removes multiple consecutive whitespace lines from within the body of
the message - which might turn some people off, but I use that same thing
when I do my automated email commits, so if you don't strip those lines
from the email, they _will_ get stripped at commit time, so..

"git-stripspace" also doesn't get confused by non-empty lines that have 
spaces in them, like your script seems to be (ie /^$/ won't match a line 
that has a space on it).

		Linus

```

## Junio C Hamano, 2005-07-09 02:27

Subject: [PATCH] format-patch: fix skipping of blank-lines (take 2)
Message-ID: <7vhdf43e9o.fsf_-_@assigned-by-dhcp.cox.net>
URL: https://gitlist.dev/e/7vhdf43e9o.fsf_-_%40assigned-by-dhcp.cox.net
In-Reply-To: <Pine.LNX.4.58.0507081838560.17536@g5.osdl.org>

```
If it is fed a commit with more than one leading blank lines,
the sed scripts git-format-patch-script used looped forever.
Using git-stripspace upfront makes the sed script somewhat
simpler to work around this problem.

Also use git-rev-parse so that we can say

    $ git-format-patch-script HEAD^^^^

to prepare the latest four patches for e-mail submission.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 >>>>> "LT" == Linus Torvalds <torvalds@osdl.org> writes:

 LT> How about using "git-stripspace"?

 I first thought it would be an overkill, but it lets me cheat in
 the sed script.  Thanks for the suggestion.

 git-format-patch-script |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)

3006f6c35d08a0f060e021573771b3cfc70c0682
diff --git a/git-format-patch-script b/git-format-patch-script
--- a/git-format-patch-script
+++ b/git-format-patch-script
@@ -53,6 +53,8 @@ case "$#" in
 1)    linus="$1" junio=HEAD ;;
 *)    usage ;;
 esac
+junio=`git-rev-parse --verify "$junio"`
+linus=`git-rev-parse --verify "$linus"`
 
 case "$outdir" in
 */) ;;
@@ -66,9 +68,9 @@ trap 'rm -f $tmp-*' 0 1 2 3 15
 series=$tmp-series
 
 titleScript='
-	1,/^$/d
-	: loop
-	/^$/b loop
+	/./d
+	/^$/n
+	s/^\[PATCH[^]]*\] *//
 	s/[^-a-z.A-Z_0-9]/-/g
         s/\.\.\.*/\./g
 	s/\.*$//
@@ -76,6 +78,7 @@ titleScript='
 	s/^-//
 	s/-$//
 	s/$/./
+	p
 	q
 '
 
@@ -88,7 +91,9 @@ total=`wc -l <$series`
 i=$total
 while read commit
 do
-    title=`git-cat-file commit "$commit" | sed -e "$titleScript"`
+    title=`git-cat-file commit "$commit" |
+    git-stripspace |
+    sed -ne "$titleScript"`
     case "$numbered" in
     '') num= ;;
     *)
@@ -102,16 +107,17 @@ do
     echo "$file"
     {
 	mailScript='
-	1,/^$/d
-	: loop
-	/^$/b loop
+	/./d
+	/^$/n
 	s|^|[PATCH'"$num"'] |
 	: body
 	p
 	n
 	b body'
 
-	git-cat-file commit "$commit" | sed -ne "$mailScript"
+	git-cat-file commit "$commit" |
+	git-stripspace |
+	sed -ne "$mailScript"
 	echo '---'
 	echo
 	git-diff-tree -p $diff_opts "$commit" | git-apply --stat --summary

```
