Ja również miałem ten problem, który wciąż nie został rozwiązany w Mendeley. Opierając się na doskonałej sugestii que que, rozwiązałem swój problem za pomocą emacsa, ale w trybie wsadowym, co pozwala mi dobrze owinąć rozwiązanie w skrypcie powłoki.
Po pierwsze, stworzyłem następujący skrypt emacs lisp (nazwijmy go bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
Sortuje każdy plik bibtex według nazwy klucza, a następnie zapisuje go. Możesz wywołać skrypt w trybie wsadowym z wiersza poleceń. Poszedłem dalej, pisząc skrypt powłoki, aby wywoływał go dla każdego pliku bibtex, który uporządkował Mendeley (z lub bez świeżych referencji), sprawdzając kod powrotu z „git diff filename ” (oszczędza to czas, nie uruchamiając niepotrzebnie kodu lisp na pliki, które nie uległy zmianie).
Oto skrypt powłoki (nazwijmy go wyobraźni bibsort.sh), który zakłada, że zarówno pliki bibtex, jak i skrypt lisp znajdują się w bieżącym katalogu:
#!/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
Po prostu uruchom go (po ustawieniu uprawnień do pliku, jeśli to konieczne) przed każdym zatwierdzeniem git:
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Nie dotknie dodatkowych linii innych niż bibtex dodanych przez Mendeleya i powinien działać na każdej instalacji Unix / Linux z emacsem. Działa również na konsoli GIT w systemie Windows (której używam), ale musisz zainstalować osobno kompilację emacsa MINGW.
Dla mnie git commits działa teraz elegancko i ekonomicznie. Mam nadzieję że to pomoże ...