forked from AFPy/python-docs-fr
Simple tool to ease resolving fuzzies (#140)
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 <christophe.nanteuil@gmail.com> Reviewed-on: AFPy/python-docs-fr#140 Reviewed-by: Julien Palard <julien@palard.fr> Co-authored-by: Christophe Nanteuil <christophenan@noreply.localhost> Co-committed-by: Christophe Nanteuil <christophenan@noreply.localhost>
This commit is contained in:
parent
8713216576
commit
89c55fc592
66
.scripts/fuzzy_diff
Executable file
66
.scripts/fuzzy_diff
Executable file
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user