Eu também estou tendo esse problema, que ainda não foi corrigido em Mendeley. Com base na grande sugestão de que, resolvi meu problema usando o emacs, mas no modo em lote, permitindo que eu envolvesse a solução em um script de shell.
Primeiro, criei o seguinte script emacs lisp (vamos chamá-lo de bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
Isso classifica qualquer arquivo bibtex pelo nome da chave e o salva. Você pode chamar o script no modo em lote na linha de comando. Eu fui além ao escrever um shell script para chamá-lo para cada arquivo bibtex que Mendeley havia reordenado (com ou sem novas referências), verificando o código de retorno de "git diff filename " (isso economiza tempo ao não executar o código lisp desnecessariamente em arquivos que não foram alterados).
Aqui está o script shell (vamos chamá-lo de forma criativa de bibsort.sh), que pressupõe que os arquivos bibtex e o script lisp estão no diretório atual:
#!/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
Basta executá-lo (depois de definir as permissões do arquivo, se necessário) antes de cada confirmação do git:
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Ele não toca nas linhas extras não-bibtex adicionadas por Mendeley e deve funcionar em qualquer instalação Unix / Linux com o emacs. Também funciona no console GIT no Windows (que estou usando), mas você teria que instalar a compilação MINGW do emacs separadamente.
Para mim, o git commit agora funciona de maneira elegante e econômica. Espero que isto ajude ...