git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] guilt(1): simplifications...

From
Pierre Habouzit <madcoder@debian.org>
Date
Jun 14, 2007, 15:16 UTC
Message-ID
<20070614151658.GK23324@artemis>
In-Reply-To
<20070614145845.GA934@filer.fsl.cs.sunysb.edu>
On Thu, Jun 14, 2007 at 10:58:45AM -0400, Josef Sipek wrote:
> On Thu, Jun 14, 2007 at 02:50:58PM +0200, Pierre Habouzit wrote:
Show 62 quoted lines
> >  # usage: do_make_header <hash>
> >  do_make_header()
> >  {
> > -	# which revision do we want to work with?
> > -	local rev="$1"
> > -
> >  	# we should try to work with commit objects only
> > -	if [ `git-cat-file -t "$rev"` != "commit" ]; then
> > -		echo "Hash $rev is not a commit object" >&2
> > +	if [ `git-cat-file -t "$1"` != "commit" ]; then
> > +		echo "Hash $1 is not a commit object" >&2
> >  		echo "Aborting..." >&2
> >  		exit 2
> >  	fi
> >  
> > -	# get the author line from the commit object
> > -	local author=`git-cat-file -p "$rev" | grep -e '^author ' | head -1`
> > -
> > -	# strip the timestamp & '^author ' string
> > -	author=`echo "$author" | sed -e 's/^author //' -e 's/ [0-9]* [+-]*[0-9][0-9]*$//'`
> > -
> > -	git-cat-file -p "$rev" | awk "
> > -BEGIN{ok=0}
> > -(ok==1){print \$0; print \"\nFrom: $author\"; ok=2; next}
> > -(ok==2){print \$0}
> > -/^\$/ && (ok==0){ok=1}
> > -"
> > +	git-cat-file -p "$1" | sed -e \
> > +		'1,/^$/ {
> > +			/^author/ {
> > +				s/^author /From: /
> > +				s/ [0-9]* [+-]*[0-9][0-9]*$//
> > +				p
> > +			}
> > +			/^$/p
> > +			d
> > +		}'
> 
> You changed the output slightly. The original awk script outputed:
> 
> >>>>>
> the first line of the commit message
> 
> From: foo@....
> 
> remainder of the commit message
> <<<<<
> 
> Yours outputs:
> 
> >>>>>
> From: foo@....
> 
> the entire commit message
> <<<<<
> 
> I'd like to keep the previous format as it makes it easier to grab the first
> line of each patch file to get the "short summary" (assuming you follow the
> kernel/git/guilt commit message conventions). This doesn't make anything in
> guilt easier, it just makes the patch files more friendly to other tools one
> might use. (Especially if they grab the first line and use it as the subject
> in emails.)
  damn, I thought I had checked that thouroughly, I'll see that in
details then. and will give you a new patch.
Show 37 quoted lines
> > @@ -283,10 +264,11 @@ series_remove_patch()
> >  # usage: series_rename_patch <oldname> <newname>
> >  series_rename_patch()
> >  {
> > -	local old=`echo "$1" | sed -e 's,/,\\\\/,g'`
> > -	local new=`echo "$2" | sed -e 's,/,\\\\/,g'` 
> > +	awk -v old="$1" -v new="$2" \
> > +		'{ if ($0 == old) print new; else print $0 }' \
> > +		"$series.tmp" > "$series"
>  
> Shouldn't that be '"$series" > "$series.tmp"' ?
> 
> > -	sed -i -e "s/^$old\$/$new/" "$series"
> > +	mv "$series.tmp" "$series"
> >  }
> >  
> >  # Beware! This is one of the few (only?) places where we modify the applied
> > @@ -295,10 +277,15 @@ series_rename_patch()
> >  # usage: applied_rename_patch <oldname> <newname>
> >  applied_rename_patch()
> >  {
> > -	local old=`echo "$1" | sed -e 's,/,\\\\/,g'`
> > -	local new=`echo "$2" | sed -e 's,/,\\\\/,g'` 
> > +	awk -v old="$1" -v new="$2" \
> > +			'BEGIN{FS=":"}
> > +			{ if ($1 ~ /^[0-9a-f]*$/ && length($1) == 40 && substr($0, 42) == old)
> > +				print substr($0, 0, 41) new;
> > +			else
> > +				print;
> > +			}' "$applied" > "$applied.new"
>                                                  ^^^^
> 
> > -	sed -i -e "s/^\\([0-9a-f]\\{40\\}\\):$old\$/\\1:$new/" "$applied"
> > +	mv "$applied.tmp" "$applied"
>                     ^^^^
> 
> ..new or .tmp?
  Those are obvious blatant mistakes. THe fixes will be available in the
coming patch as well.
-- 
·O·  Pierre Habouzit
··O                                                madcoder@debian.org
OOO                                                http://www.madism.org
Previous: Josef SipekNext: Pierre Habouzit
Message 8 of 22 in “make guilt use standard POSIX shell”
  1. make guilt use standard POSIX shellPierre Habouzit, Jun 14, 2007
  2. Regression test suite needs bash, that's OK.Pierre Habouzit, Jun 14, 2007
  3. guilt(1): Obvious bashisms fixed.Pierre Habouzit, Jun 14, 2007
  4. Josef SipekJun 14, 2007
  5. Pierre HabouzitJun 14, 2007
  6. guilt(1): simplifications...Pierre Habouzit, Jun 14, 2007
  7. Josef SipekJun 14, 2007
  8. Pierre HabouzitJun 14, 2007
  9. guilt(1): reimplement push_patch, using a subshell to avoid locals.Pierre Habouzit, Jun 14, 2007
  10. Easy commands, without bashisms.Pierre Habouzit, Jun 14, 2007
  11. guilt-status(1): Remove bashisms.Pierre Habouzit, Jun 14, 2007
  12. Remove last bashisms from remaining commands.Pierre Habouzit, Jun 14, 2007
  13. Pierre HabouzitJun 14, 2007
  14. Small regresson when series file is empty.Pierre Habouzit, Jun 14, 2007
  15. Josef SipekJun 14, 2007
  16. Pierre HabouzitJun 14, 2007
  17. Pierre HabouzitJun 14, 2007
  18. Josef SipekJun 14, 2007
  19. Pierre HabouzitJun 14, 2007
  20. More regressions fixes.Pierre Habouzit, Jun 14, 2007
  21. Derek FawcusJun 15, 2007
  22. Benjamin SergeantJun 15, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.