Subject: Re: [PATCH Cogito] Make use of external editor work like CVS

From: Marcel Holtmann <[email-masked]>
Date: Sun, 08 May 2005 20:57:38 +0200

Hi Petr,

> > > > Sometime you don't have any other choice, because diff is not perfect.
> > > > Do you wanna apply that patch or should I change the mktemp templates
> > > > first?
> > > 
> > > It looks like it'll be most painless when I just reinvent parts of your
> > > patch here locally and you can send me patches on top of that.
> > 
> > it is your choice. I can change that if you like. My latest version
> > should apply cleanly against your current tree.
> 
> I've pushed my changes, please have a look at them. I think I've got
> everything important, but I might've forgot something.

look at the attached patch. We should use "fmt -s" to keep newlines that
are inside the commit message and there is one unneeded empty CG: line.

I also put back in the "mess", because if there is no commit message
provided via -m it gives us an initial empty line to start in. This is
the same that CVS does and it makes the life inside vi a lot more
easier.

The change (aka the "mess") looks crazy, but play with the different
situations and see what it does.

> > If you want the extra newline(s) then it is a good idea to add something
> > that strips heading and trailing empty lines from the final commit
> > message, because otherwise it will be ugly if you don't enter extra text
> > for the merge.
> 
> Isn't that what I initially suggested? :-)

But this hasn't been done so far. And I don't know any shell tool for
this job, beside some crazy awk or sed stuff. However stripspace.c from
git-tools can do this job.

Regards

Marcel

cg-commit: needs update
Index: cg-commit
===================================================================
--- 6054af5ea0ef88077ad91131b0411dd10590b863/cg-commit  (mode:100755)
+++ uncommitted/cg-commit  (mode:100755)
@@ -80,17 +80,23 @@
 		[ "$msgs" ] && echo "$uri"
 	done
 	echo >>$LOGMSG
+else
+	first=1
 fi
-first=1
+
 for msg in "${msgs[@]}"; do
 	if [ "$first" ]; then
 		first=
 	else
 		echo >>$LOGMSG
 	fi
-	echo $msg | fmt >>$LOGMSG
+	echo $msg | fmt -s >>$LOGMSG
 done
 
+if [ "$first" ]; then
+	echo >>$LOGMSG
+fi
+
 cat >>$LOGMSG <<EOT
 CG: -----------------------------------------------------------------------
 CG: Lines beginning with the CG: prefix are removed automatically
@@ -108,7 +114,6 @@
 		echo "CG:    $file" >>$LOGMSG
 		[ "$msgs" ] && echo $file
 	done
-	echo "CG:" >>$LOGMSG
 fi
 echo "CG: -----------------------------------------------------------------------" >>$LOGMSG