У мене теж була ця проблема, яка досі не виправлена в Менделлі. Виходячи з чудової пропозиції que que, я вирішив свою проблему за допомогою emacs, але в пакетному режимі, що дозволило мені обернути рішення в сценарій оболонки.
По-перше, я створив такий сценарій lisp emacs (назвемо це bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
Це сортує будь-який файл bibtex за назвою ключа, а потім зберігає його. Ви можете викликати скрипт у пакетному режимі з командного рядка. Я пішов далі, написавши сценарій оболонки, щоб викликати його для кожного файлу bibtex, який Менделі переупорядкував (зі свіжими посиланнями чи без них), перевіривши код повернення від "git diff filename " (це економить час, не запускаючи код lisp без потреби файли, які не змінилися).
Ось сценарій оболонки (давайте уявно назвемо це bibsort.sh), який передбачає, що і файли bibtex, і сценарій lisp знаходяться в поточному каталозі:
#!/bin/bash
bibliobasher() {
IFS=$( echo -en "\n" )
BIBFILES=*.bib
for bibfile in $BIBFILES
do
git diff --quiet "$bibfile" 2> /dev/null
if [ $? = 1 ]; then
emacs --batch -l bibsort.el "$bibfile" -f bibsort
fi
done
}
bibliobasher
Просто запустіть його (після встановлення дозволу на файл, якщо потрібно) перед кожним введенням git:
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Він не торкнеться додаткових небібтекстових ліній, доданих Mendeley, і повинен працювати на будь-якій установці Unix / Linux з emacs. Він також працює на консолі GIT у Windows (яку я використовую), але вам доведеться встановлювати збірку MINGW emacs окремо.
Для мене, git commints зараз працюють вишукано та економно. Сподіваюся, це допомагає ...