Anch'io ho avuto questo problema, che non è stato ancora risolto a Mendeley. Sulla base del grande suggerimento di que que, ho risolto il mio problema usando emacs, ma in modalità batch, permettendomi di avvolgere la soluzione in uno script di shell.
Prima di tutto, ho creato il seguente script emacs lisp (chiamiamolo bibsort.el):
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
Questo ordina qualsiasi file bibtex in base al nome della chiave e quindi lo salva. È possibile chiamare lo script in modalità batch dalla riga di comando. Sono andato oltre nello scrivere uno script di shell per chiamarlo per ogni file bibtex che Mendeley aveva riordinato (con o senza riferimenti freschi), controllando il codice di ritorno da "git diff nomefile " (questo fa risparmiare tempo non eseguendo il codice lisp inutilmente su file che non sono stati modificati).
Ecco lo script della shell (chiamiamolo in modo fantasioso bibsort.sh), che presume che sia i file bibtex sia lo script lisp siano nella directory corrente:
#!/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 eseguirlo (dopo aver impostato le autorizzazioni del file, se necessario) prima di ogni commit git:
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Non toccherà le linee extra non bibtex aggiunte da Mendeley e dovrebbe funzionare su qualsiasi installazione Unix / Linux con emacs. Funziona anche sulla console GIT di Windows (che sto usando), ma dovresti installare la build di emacs MINGW separatamente.
Per me, git si impegna ora a lavorare in modo elegante ed economico. Spero che sia di aiuto ...