| #!/bin/sh | |
| GIT_DIR=$(git rev-parse --git-dir) | |
| dotest="$GIT_DIR/rebase-apply" | |
| prec=4 && | |
| this=$(cat 2>/dev/null "$dotest/next") && | |
| msgnum=$(printf "%0${prec}d" $this) && | |
| test -f "$dotest/$msgnum" && | |
| message_id=$(sed -ne ' | |
| /^[ ]/{ | |
| # Append continuation line to hold space | |
| H | |
| # Swap hold and pattern | |
| x | |
| # Remove the LF, making it a single line | |
| s/\n// | |
| # Swap hold and pattern back | |
| x | |
| # Discard the pattern and go on | |
| n | |
| } | |
| # Hold this new line, and look at what is in the hold space | |
| x | |
| # Is it the Message-ID line? If so, spit it out and finish. | |
| /^[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:[ ]*/{ | |
| s///p | |
| q | |
| } | |
| # Otherwise, check if this new line is empty | |
| x | |
| # Is it? Then we are done with the header | |
| /^$/b end | |
| # Otherwise we need to hold onto this header line | |
| x | |
| # And start the next cycle | |
| b | |
| : end | |
| # ??? do we want to check if we held onto the last message-id line | |
| # and process it here if we did??? | |
| q | |
| ' "$dotest/$msgnum") && | |
| if test -n "$message_id" && | |
| head=$(git rev-parse --verify HEAD 2>/dev/null) | |
| then | |
| echo "$head $message_id" >>"$GIT_DIR"/am.log && | |
| ( | |
| GIT_NOTES_REF=refs/notes/amlog | |
| export GIT_NOTES_REF | |
| git notes add -f -m "Message-Id: $message_id" "$head" | |
| ) | |
| fi |