What's cooking (2021/06 #06)
[git] / post-applypatch
1 #!/bin/sh
2
3 GIT_DIR=.git
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