fuzzy_diff new logic #204

Open
ChristopheNan wants to merge 3 commits from ChristopheNan/python-docs-fr:new_fuzzy into 3.11
1 changed files with 21 additions and 12 deletions

View File

@ -11,7 +11,7 @@ _usage() {
LAUNCH_EDIT=1
if [ $# -eq 2 ]; then
if [ "$1" -eq "-n" ] || [ "$1" -eq "--no-edit" ]; then
if [ "$1" = "-n" ] || [ "$1" = "--no-edit" ]; then
LAUNCH_EDIT=0
else
_usage
@ -43,22 +43,31 @@ fi
PO_FILE=$1
# search for revs where fuzzy was added or suppressed
# and filter where commit message contains 'merge'
FUZZY_REVS=$(git log --oneline -S '#, fuzzy' ${PO_FILE} | \
grep -i 'merge' | \
awk '{ print $1 }')
if [ ${LAUNCH_EDIT} -eq 1 ]; then
${PO_EDITOR} "${PO_FILE}" 2>/dev/null &
fi
for sha in ${FUZZY_REVS} ; do
while read line ; do
gdh=$(date --date=@${line:0:10})
sha=${line:11:40}
author=${line:52}
echo "Comparing with: ${gdh} - ${author}"
# filter files à la mode textconv
git show ${sha}:${PO_FILE} | grep -v -e '^#:' -e '^"PO' > ${TMP_DIR}/right.po
git show ${sha}^:${PO_FILE} | grep -v -e '^#:' -e '^"PO' > ${TMP_DIR}/left.po
"${DIFFTOOL}" ${TMP_DIR}/left.po ${TMP_DIR}/right.po
done
git show ${sha}^:${PO_FILE} | \
grep --invert-match \
--regexp='^#:' \
--regexp='^"PO' > "${TMP_DIR}/${gdh}.po"
# reload current file every time as it may has been modified
grep --invert-match \
--regexp='^#:' \
--regexp='^"PO' ${PO_FILE} > ${TMP_DIR}/current.po
"${DIFFTOOL}" "${TMP_DIR}/${gdh}.po" ${TMP_DIR}/current.po
done <<< $(git blame --line-porcelain ${PO_FILE} | \
awk '/^[0-9a-f]{40} / { sha=$1 }
/^author / {$1="" ; author=$0 }
/^committer-time / { $1="" ; date=$0 }
/^\s#, fuzzy/ { printf "%-10s %-40s %s\n", date, sha, author}' |
sort --numeric-sort --unique --reverse)
# clean up temp directory
rm --force --recursive "${TMP_DIR}"