私もこの問題を抱えていましたが、メンデリーではまだ修正されていません。que queの素晴らしい提案に基づいて、emacsを使用して問題を解決しましたが、バッチモードでは、シェルスクリプトでソリューションをうまくラップできました。
まず、次のemacs lispスクリプトを作成しました(bibsort.elと呼びましょう)。
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
これにより、すべてのbibtexファイルがキー名でソートされ、保存されます。コマンドラインからバッチモードでスクリプトを呼び出すことができます。「git diff filenameからの戻りコードをチェックすることにより、Mendeleyが並べ替えた各bibtexファイル(新鮮な参照の有無にかかわらず)ごとに呼び出すシェルスクリプトを作成しました。」(これにより、不必要に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によって追加された追加の非bibtex行には触れず、emacsを使用したUnix / Linuxインストールで動作するはずです。また、Windows(使用している)のGITコンソールでも機能しますが、emacsのMINGWビルドを個別にインストールする必要があります。
私にとって、gitコミットはエレガントで経済的に機能します。お役に立てれば ...