From: Junio C Hamano Date: Mon, 30 May 2005 23:15:17 GMT Subject: Re: I want to release a "git-1.0" Message-ID: <7v7jhgz4oq.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <200505301755.15371.dtor_core@ameritech.net> On a related topic of making bare Plumbing a bit easier to use, here is what I use to prepare patches, one patch per file, to be sent to Linus via e-mail. Usage: $ git-format-patch-script HEAD linus Assuming that "linus" is the tip of the tree from Linus (typically stored in .git/branches/linus if you use Cogito), and HEAD is your additions on top of it, the above command will produce patches in the format you have been seeing on this list from me, one file per commit, in .patches/XXXX-patch-title.txt file. Signed-off-by: Junio C Hamano --- sed -e 's/^X//' >git-format-patch-script <<\EOF X#!/bin/sh X# X# Copyright (c) 2005 Junio C Hamano X# Xjunio="$1" Xlinus="$2" X Xtmp=.tmp-series$$ Xtrap 'rm -f $tmp-*' 0 1 2 3 15 X Xseries=$tmp-series X XtitleScript=' X 1,/^$/d X : loop X /^$/b loop X s/[^-a-z.A-Z_0-9]/-/g X s/^--*//g X s/--*$//g X s/---*/-/g X s/$/.txt/ X s/\.\.\.*/\./g X q X' XO= Xif test -f .git/patch-order Xthen X O=-O.git/patch-order Xfi Xgit-rev-list "$junio" "$linus" >$series Xtotal=`wc -l <$series` Xi=$total Xwhile read commit Xdo X title=`git-cat-file commit "$commit" | sed -e "$titleScript"` X num=`printf "%d/%d" $i $total` X file=`printf '%04d-%s' $i "$title"` X i=`expr "$i" - 1` X echo "$file" X { X mailScript=' X 1,/^$/d X : loop X /^$/b loop X s|^|[PATCH '"$num"'] | X : body X p X n X b body' X X git-cat-file commit "$commit" | sed -ne "$mailScript" X echo '---' X git-diff-tree -p $O "$commit" | diffstat -p1 X echo X git-diff-tree -p $O "$commit" X } >".patches/$file" Xdone <$series EOF