diff options
author | Jeff King <peff@peff.net> | 2012-10-29 04:13:49 -0400 |
---|---|---|
committer | Jeff King <peff@peff.net> | 2012-10-29 04:13:49 -0400 |
commit | deb2458132a5886c8f7b12870451a1bc3c311e9f (patch) | |
tree | f08e13b947ce2c8e8c41aaa8df4740121d880110 /git-filter-branch.sh | |
parent | e034d1bb927c17a3406a2bdbb8ccf710677a139d (diff) | |
parent | 3c730fab2cae1bb52d34620af170a628b3b8c537 (diff) | |
download | git-deb2458132a5886c8f7b12870451a1bc3c311e9f.tar.gz git-deb2458132a5886c8f7b12870451a1bc3c311e9f.tar.xz |
Merge branch 'jk/sh-setup-in-filter-branch'
Refactoring to avoid code duplication in shell scripts.
* jk/sh-setup-in-filter-branch:
filter-branch: use git-sh-setup's ident parsing functions
git-sh-setup: refactor ident-parsing functions
Diffstat (limited to 'git-filter-branch.sh')
-rwxr-xr-x | git-filter-branch.sh | 46 |
1 files changed, 13 insertions, 33 deletions
diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 178e45305..53142492a 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -64,37 +64,19 @@ EOF eval "$functions" -# When piped a commit, output a script to set the ident of either -# "author" or "committer +finish_ident() { + # Ensure non-empty id name. + echo "case \"\$GIT_$1_NAME\" in \"\") GIT_$1_NAME=\"\${GIT_$1_EMAIL%%@*}\" && export GIT_$1_NAME;; esac" + # And make sure everything is exported. + echo "export GIT_$1_NAME" + echo "export GIT_$1_EMAIL" + echo "export GIT_$1_DATE" +} set_ident () { - lid="$(echo "$1" | tr "[A-Z]" "[a-z]")" - uid="$(echo "$1" | tr "[a-z]" "[A-Z]")" - pick_id_script=' - /^'$lid' /{ - s/'\''/'\''\\'\'\''/g - h - s/^'$lid' \([^<]*\) <[^>]*> .*$/\1/ - s/'\''/'\''\'\'\''/g - s/.*/GIT_'$uid'_NAME='\''&'\''; export GIT_'$uid'_NAME/p - - g - s/^'$lid' [^<]* <\([^>]*\)> .*$/\1/ - s/'\''/'\''\'\'\''/g - s/.*/GIT_'$uid'_EMAIL='\''&'\''; export GIT_'$uid'_EMAIL/p - - g - s/^'$lid' [^<]* <[^>]*> \(.*\)$/@\1/ - s/'\''/'\''\'\'\''/g - s/.*/GIT_'$uid'_DATE='\''&'\''; export GIT_'$uid'_DATE/p - - q - } - ' - - LANG=C LC_ALL=C sed -ne "$pick_id_script" - # Ensure non-empty id name. - echo "case \"\$GIT_${uid}_NAME\" in \"\") GIT_${uid}_NAME=\"\${GIT_${uid}_EMAIL%%@*}\" && export GIT_${uid}_NAME;; esac" + parse_ident_from_commit author AUTHOR committer COMMITTER + finish_ident AUTHOR + finish_ident COMMITTER } USAGE="[--env-filter <command>] [--tree-filter <command>] @@ -320,10 +302,8 @@ while read commit parents; do git cat-file commit "$commit" >../commit || die "Cannot read commit $commit" - eval "$(set_ident AUTHOR <../commit)" || - die "setting author failed for commit $commit" - eval "$(set_ident COMMITTER <../commit)" || - die "setting committer failed for commit $commit" + eval "$(set_ident <../commit)" || + die "setting author/committer failed for commit $commit" eval "$filter_env" < /dev/null || die "env filter failed: $filter_env" |