|
64 | 64 |
|
65 | 65 | eval "$functions"
|
66 | 66 |
|
67 |
| -# When piped a commit, output a script to set the ident of either |
68 |
| -# "author" or "committer |
| 67 | +finish_ident() { |
| 68 | + # Ensure non-empty id name. |
| 69 | + echo "case \"\$GIT_$1_NAME\" in \"\") GIT_$1_NAME=\"\${GIT_$1_EMAIL%%@*}\" && export GIT_$1_NAME;; esac" |
| 70 | + # And make sure everything is exported. |
| 71 | + echo "export GIT_$1_NAME" |
| 72 | + echo "export GIT_$1_EMAIL" |
| 73 | + echo "export GIT_$1_DATE" |
| 74 | +} |
69 | 75 |
|
70 | 76 | set_ident () {
|
71 |
| - lid="$(echo "$1" | tr "[A-Z]" "[a-z]")" |
72 |
| - uid="$(echo "$1" | tr "[a-z]" "[A-Z]")" |
73 |
| - pick_id_script=' |
74 |
| - /^'$lid' /{ |
75 |
| - s/'\''/'\''\\'\'\''/g |
76 |
| - h |
77 |
| - s/^'$lid' \([^<]*\) <[^>]*> .*$/\1/ |
78 |
| - s/'\''/'\''\'\'\''/g |
79 |
| - s/.*/GIT_'$uid'_NAME='\''&'\''; export GIT_'$uid'_NAME/p |
80 |
| -
|
81 |
| - g |
82 |
| - s/^'$lid' [^<]* <\([^>]*\)> .*$/\1/ |
83 |
| - s/'\''/'\''\'\'\''/g |
84 |
| - s/.*/GIT_'$uid'_EMAIL='\''&'\''; export GIT_'$uid'_EMAIL/p |
85 |
| -
|
86 |
| - g |
87 |
| - s/^'$lid' [^<]* <[^>]*> \(.*\)$/@\1/ |
88 |
| - s/'\''/'\''\'\'\''/g |
89 |
| - s/.*/GIT_'$uid'_DATE='\''&'\''; export GIT_'$uid'_DATE/p |
90 |
| -
|
91 |
| - q |
92 |
| - } |
93 |
| - ' |
94 |
| - |
95 |
| - LANG=C LC_ALL=C sed -ne "$pick_id_script" |
96 |
| - # Ensure non-empty id name. |
97 |
| - echo "case \"\$GIT_${uid}_NAME\" in \"\") GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\" && export GIT_${uid}_NAME;; esac" |
| 77 | + parse_ident_from_commit author AUTHOR committer COMMITTER |
| 78 | + finish_ident AUTHOR |
| 79 | + finish_ident COMMITTER |
98 | 80 | }
|
99 | 81 |
|
100 | 82 | USAGE="[--env-filter <command>] [--tree-filter <command>]
|
@@ -320,10 +302,8 @@ while read commit parents; do
|
320 | 302 | git cat-file commit "$commit" >../commit ||
|
321 | 303 | die "Cannot read commit $commit"
|
322 | 304 |
|
323 |
| - eval "$(set_ident AUTHOR <../commit)" || |
324 |
| - die "setting author failed for commit $commit" |
325 |
| - eval "$(set_ident COMMITTER <../commit)" || |
326 |
| - die "setting committer failed for commit $commit" |
| 305 | + eval "$(set_ident <../commit)" || |
| 306 | + die "setting author/committer failed for commit $commit" |
327 | 307 | eval "$filter_env" < /dev/null ||
|
328 | 308 | die "env filter failed: $filter_env"
|
329 | 309 |
|
|
0 commit comments