From 89c55fc592ef18404bb502f136c8ab6fd0c9fdf5 Mon Sep 17 00:00:00 2001 From: Christophe Nanteuil Date: Tue, 23 May 2023 19:53:36 +0000 Subject: [PATCH] Simple tool to ease resolving fuzzies (#140) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Display diff of commits introducing fuzzies (commit messages must contain 'merge') using git difftool program, after having filtered the po files [à la mode textconv](https://git.afpy.org/AFPy/python-docs-fr/src/branch/3.11/CONTRIBUTING.rst#configuration-de-git-rendre-plus-lisible-laffichage-des-modifications). Co-authored-by: Christophe Nanteuil Reviewed-on: https://git.afpy.org/AFPy/python-docs-fr/pulls/140 Reviewed-by: Julien Palard Co-authored-by: Christophe Nanteuil Co-committed-by: Christophe Nanteuil --- .scripts/fuzzy_diff | 66 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 .scripts/fuzzy_diff diff --git a/.scripts/fuzzy_diff b/.scripts/fuzzy_diff new file mode 100755 index 00000000..30251a64 --- /dev/null +++ b/.scripts/fuzzy_diff @@ -0,0 +1,66 @@ +#!/bin/sh + + +_usage() { + echo "Usage: $0 [-n] PO_FILE" + echo "Ease the correction of fuzzies inserted by merge commits" + echo + echo "-n, --no-edit do not launch po editor" + exit +} + +LAUNCH_EDIT=1 +if [ $# -eq 2 ]; then + if [ "$1" -eq "-n" ] || [ "$1" -eq "--no-edit" ]; then + LAUNCH_EDIT=0 + else + _usage + fi + shift +fi + +if [ $# -ne 1 ]; then + _usage +fi + +if [ ! -f "$1" ]; then + echo "$1: file not found" + _usage +fi + +# Temp directory to filter files before display +TMP_DIR=$(mktemp -d /tmp/fuzzy_diff.XXXXXX || exit 1) +trap 'rm --force --recursive "${TMP_DIR}"' EXIT + + +PO_EDITOR=poedit +DIFFTOOL=$(which $(git config diff.tool)) + +if [ ! -x "$DIFFTOOL" ]; then + echo "git diff.tool seems not configured" + _usage +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 + # 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 + +# clean up temp directory +rm --force --recursive "${TMP_DIR}" +trap - EXIT +