more robust parsing of git blame

This commit is contained in:
Christophe Nanteuil 2023-11-25 17:02:17 +01:00
parent 90060d9eef
commit e10705d13d

View File

@ -48,23 +48,25 @@ if [ ${LAUNCH_EDIT} -eq 1 ]; then
fi fi
while read line ; do while read line ; do
epoch=${line:0:10} gdh=$(date --date=@${line:0:10})
sha=${line:11:9} sha=${line:11:40}
author=${line:23} author=${line:52}
echo "Comparing with: "$(date --date=@${epoch})" - ${author}" echo "Comparing with: ${gdh} - ${author}"
# filter files à la mode textconv # filter files à la mode textconv
git show ${sha}^:${PO_FILE} | \ git show ${sha}^:${PO_FILE} | \
grep --invert-match \ grep --invert-match \
--regexp='^#:' \ --regexp='^#:' \
--regexp='^"PO' > ${TMP_DIR}/${sha}.po --regexp='^"PO' > "${TMP_DIR}/${gdh}.po"
# reload current file every time as it may has been modified # reload current file every time as it may has been modified
grep --invert-match \ grep --invert-match \
--regexp='^#:' \ --regexp='^#:' \
--regexp='^"PO' ${PO_FILE} > ${TMP_DIR}/current.po --regexp='^"PO' ${PO_FILE} > ${TMP_DIR}/current.po
"${DIFFTOOL}" ${TMP_DIR}/${sha}.po ${TMP_DIR}/current.po "${DIFFTOOL}" "${TMP_DIR}/${gdh}.po" ${TMP_DIR}/current.po
done <<< $(git blame -t ${PO_FILE} | \ done <<< $(git blame --line-porcelain ${PO_FILE} | \
grep '#, fuzzy$' | \ awk '/^[0-9a-f]{40} / { sha=$1 }
awk 'BEGIN {FIELDWIDTHS="10 32 10"} {print $3, $1, $2}' | \ /^author / {$1="" ; author=$0 }
/^committer-time / { $1="" ; date=$0 }
/\s#, fuzzy/ { printf "%-10s %-40s %s\n", date, sha, author}' |
sort --numeric-sort --unique --reverse) sort --numeric-sort --unique --reverse)
# clean up temp directory # clean up temp directory