나도이 문제를 겪어 왔으며 여전히 Mendeley에서 수정되지 않았습니다. que que의 큰 제안을 바탕으로 emacs를 사용하여 문제를 해결했지만 배치 모드에서는 셸 스크립트로 솔루션을 멋지게 포장 할 수있었습니다.
먼저 다음 emacs lisp 스크립트를 작성했습니다 (bibsort.el이라고 함).
( defun bibsort()
( bibtex-sort-buffer )
( save-buffer )
)
이것은 모든 bibtex 파일을 키 이름별로 정렬 한 다음 저장합니다. 명령 행에서 배치 모드로 스크립트를 호출 할 수 있습니다. "git diff filename " 의 리턴 코드를 확인하여 Mendeley가 재정렬 한 (새로운 참조 유무에 관계없이) 각각의 bibtex 파일에 대해 호출하는 쉘 스크립트를 작성하는 데 계속 나아갔습니다 . 변경되지 않은 파일).
여기에 bibtex 파일과 lisp 스크립트가 모두 현재 디렉토리에 있다고 가정하는 쉘 스크립트 (상상적으로 bibsort.sh라고 함)가 있습니다.
#!/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 commit 전에 (필요한 경우 파일 권한을 설정 한 후) 실행하십시오.
chmod a+x bibsort.sh
./bibsort.sh
git commit ...
Mendeley가 추가 한 비 Bibtex 라인을 건드리지 않으며 emacs를 사용하는 모든 Unix / Linux 설치에서 작동해야합니다. Windows의 GIT 콘솔에서도 작동하지만 (내가 사용하고있는) MINGW 빌드의 emacs를 별도로 설치해야합니다.
저에게 git commit은 이제 우아하고 경제적으로 작동합니다. 도움이 되었기를 바랍니다 ...