Moi aussi, j'ai eu ce problème, qui n'est toujours pas résolu à Mendeley. Sur la base de la grande suggestion de que que, j'ai résolu mon problème en utilisant emacs, mais en mode batch, ce qui m'a permis d'envelopper la solution dans un script shell.
Tout d'abord, j'ai créé le script lisp emacs suivant (appelons-le bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
Cela trie tout fichier bibtex par nom de clé, puis l'enregistre. Vous pouvez appeler le script en mode batch depuis la ligne de commande. Je suis allé plus loin en écrivant un script shell pour l'appeler pour chaque fichier bibtex que Mendeley avait réorganisé (avec ou sans nouvelles références), en vérifiant le code retour de "git diff filename " (cela fait gagner du temps en n'exécutant pas inutilement le code lisp sur fichiers qui n'ont pas changé).
Voici le script shell (appelons-le imaginativement bibsort.sh), qui suppose que les fichiers bibtex et le script lisp se trouvent dans le répertoire courant:
#!/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
Il suffit de l'exécuter (après avoir défini les autorisations de fichier si nécessaire) avant chaque validation git:
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Il ne touchera pas aux lignes supplémentaires non bibtex ajoutées par Mendeley et devrait fonctionner sur toute installation Unix / Linux avec emacs. Il fonctionne également sur la console GIT sous Windows (que j'utilise), mais vous devrez installer séparément la version MINGW d'emacs.
Pour moi, git commits fonctionne désormais de manière élégante et économique. J'espère que cela t'aides ...