아무튼 최근에 개인적으로 개발 중인 자잘한 소스들을 Mercurial(이하 hg)로 버전 관리하고 있는데, Emacs에 기본 탑재되어 있는 vc-hg를 사용하다 보니 몇 가지 불편한 점이 있더군요.
1. encoding 문제
한글 Windows 환경에서 hg의 기본 encoding은 cp949입니다. 그런데, Emacs에서 buffer의 기본 encoding을 utf-8으로 두고 사용하다 보니, Emacs 상에서 log나 diff를 볼 때 한글로 작성한 내용이 모두 \xxx 같은 형식으로 출력되어 버리는 겁니다.
이 문제를 해결하기 위해서는 .emacs 파일 등에 다음 라인을 추가해주면 됩니다.
(setq vc-hg-global-switches "--encoding=utf-8")eshell 상에서 hg를 직접 실행하는 경우에는 위 설정이 적용되지 않기 때문에 alias를 사용해서 간단하게 encoding 옵션을 붙여 주면 됩니다.
alias hg 'hg --encoding=utf-8 $*'
2. HTTP 인증 문제
로컬에서만 버전 관리를 하면 크게 상관이 없지만, Bitbucket 같은 호스팅 서비스를 이용하게 될 경우에는 pull 또는 push 같은 작업을 할 때 HTTP 인증이 필요하게 됩니다. 이 때 console 상에서 바로 실행하면 password를 물어보는 prompt가 뜨게 되지만, Emacs eshell이나 shell 상에서는 standard input이 Emacs에 의해 별도 처리되기 때문에 prompt가 뜨는 대신 HTTP 인증이 바로 실패하게 됩니다.
이 문제를 해결하기 위해서는 저장소 폴더(.hg) 내에 있는 hgrc 파일에 인증 정보를 기록해주면 됩니다.
[paths] default = https://username:password@bitbucket.org/myproject1/이렇게 하면 인증 정보가 자동으로 전달되기 때문에 매번 password를 입력하는 번거로움도 함께 해결됩니다. 대신, hgrc 파일에 기록된 인증 정보가 타인에게 유출되는 것은 주의할 필요가 있습니다.