| 1 | #!/bin/sh |
| 2 | |
| 3 | GIT_DIR=$(git rev-parse --git-dir) |
| 4 | dotest="$GIT_DIR/rebase-apply" |
| 5 | |
| 6 | prec=4 && |
| 7 | this=$(cat 2>/dev/null "$dotest/next") && |
| 8 | msgnum=$(printf "%0${prec}d" $this) && |
| 9 | test -f "$dotest/$msgnum" && |
| 10 | message_id=$(sed -ne ' |
| 11 | /^[ ]/{ |
| 12 | # Append continuation line to hold space |
| 13 | H |
| 14 | # Swap hold and pattern |
| 15 | x |
| 16 | # Remove the LF, making it a single line |
| 17 | s/\n// |
| 18 | # Swap hold and pattern back |
| 19 | x |
| 20 | # Discard the pattern and go on |
| 21 | n |
| 22 | } |
| 23 | # Hold this new line, and look at what is in the hold space |
| 24 | x |
| 25 | # Is it the Message-ID line? If so, spit it out and finish. |
| 26 | /^[Mm][Ee][Ss][Ss][Aa][Gg][Ee]-[Ii][Dd]:[ ]*/{ |
| 27 | s///p |
| 28 | q |
| 29 | } |
| 30 | # Otherwise, check if this new line is empty |
| 31 | x |
| 32 | # Is it? Then we are done with the header |
| 33 | /^$/b end |
| 34 | # Otherwise we need to hold onto this header line |
| 35 | x |
| 36 | # And start the next cycle |
| 37 | b |
| 38 | : end |
| 39 | # ??? do we want to check if we held onto the last message-id line |
| 40 | # and process it here if we did??? |
| 41 | q |
| 42 | ' "$dotest/$msgnum") && |
| 43 | |
| 44 | if test -n "$message_id" && |
| 45 | head=$(git rev-parse --verify HEAD 2>/dev/null) |
| 46 | then |
| 47 | echo "$head $message_id" >>"$GIT_DIR"/am.log && |
| 48 | ( |
| 49 | GIT_NOTES_REF=refs/notes/amlog |
| 50 | export GIT_NOTES_REF |
| 51 | git notes add -f -m "Message-Id: $message_id" "$head" |
| 52 | ) |
| 53 | fi |