guilt: improve the generation of an automatic header Patches that do not have a proper header are encountered when generating a tree. This improves the detection of these patches and generates a sane header so the eventual commit will be coherent Signed-off-by: Bruce Ashfield --- guilt | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) --- a/guilt +++ b/guilt @@ -591,7 +591,12 @@ commit() fi # last try: make a default commit message if patch doesn't contain one - [ ! -s "$TMP_MSG" ] && echo "auto_msg: patch $pname" > "$TMP_MSG" + if [ ! -s "$TMP_MSG" ]; then + echo "auto_msg: importing `basename $pname`" > "$TMP_MSG" + echo "" >> "$TMP_MSG" + echo "This is an automatic import of patch $pname, no headers were" >> "$TMP_MSG" + echo "detected and a default message was constructed" >> "$TMP_MSG" + fi if [ "$header_type" = "guilt" ]; then @@ -599,12 +604,14 @@ commit() # extract a From line from the patch header, and set # GIT_AUTHOR_{NAME,EMAIL} author_str=`sed -n -e '/^From:/ { s/^From: //; p; q }; /^(diff |---)/ q' "$p"` - if [ ! -z "$author_str" ]; then - GIT_AUTHOR_NAME=`echo $author_str | sed -e 's/ *<.*$//'` - export GIT_AUTHOR_NAME="${GIT_AUTHOR_NAME:-" "}" - export GIT_AUTHOR_EMAIL="`echo $author_str | sed -e 's/[^<]*//'`" + if [ -z "$author_str" ]; then + author_str="auto commit " fi + GIT_AUTHOR_NAME=`echo $author_str | sed -e 's/ *<.*$//'` + export GIT_AUTHOR_NAME="${GIT_AUTHOR_NAME:-" "}" + export GIT_AUTHOR_EMAIL="`echo $author_str | sed -e 's/[^<]*//'`" + # check in the patch for a subject SUBJECT="$(sed -n '/^Subject/ s/Subject: //p' "$p")" @@ -615,6 +622,11 @@ commit() if [ ${#SUBJECT} -gt 60 ]; then SUBJECT=${SUBJECT: -60} fi + + # remove the line from the tmp msg + mv "$TMP_MSG" "$TMP_MSG.work" + cat "$TMP_MSG.work" | grep -v -E ".*$SUBJECT.*" > "$TMP_MSG" + rm "$TMP_MSG.work" fi if [ -z "$SUBJECT" ]; then @@ -629,7 +641,7 @@ commit() SUBJECT=`echo $SUBJECT | sed s'%^ *%%'` - if [ ! -z "$SUBJECT" ]; then + if [ -n "$SUBJECT" ]; then echo "$SUBJECT" >> $TMP_MSG.subject echo "" >> $TMP_MSG.subject cat "$TMP_MSG" >> $TMP_MSG.subject