문제
다음 명령을 실행할 때 :
svnlook changed {path} -r {rev}
여기서 {path}는 저장소 경로이고 {rev}는 개정 번호입니다. 다음 출력을 얻습니다.
U trunk/this/is/a/path/Mon fichier avec un nom accentu,.txt
출력은 실제로 :
U trunk/this/is/a/path/Mon fichier avec un nom accentué.txt
"É"및 기타 강조 된 문자는 제대로 표시되지 않습니다 ...
svnlook이 문자를 올바르게 출력하는 방법이 있습니까?
"-XML"옵션과 함께 "SVN Log"를 사용할 수 있으며 적절한 인코딩을 얻을 수 있지만 사전 커밋 후크의 경우이 문제가 필요하며 SVN.EXE는 거래가 아닌 수정품 만 얻을 수 있습니다.
감사
해결책
여기에있는 문제는 사전 커밋 후크가 전복 바이너리에 의해 실행되며, 보안상의 이유로 빈 환경을 후크 스크립트로 전달한다는 것입니다. 빈 환경이하는 것 중에서도 특정 로케일 설정을 제거하여 시스템 기본값 (일반적으로 'C'또는 유사한 것)으로 되돌아갑니다.
올바른 출력을 얻으려면 svnlook
, 당신은 그것을 실행하기 전에 당신이 관심있는 환경을 복원해야합니다. 스크립트가 배쉬 인 경우 다음과 같은 것일 수 있습니다.
#!/bin/bash
export LANG="en_US.UTF-8"
export PATH="/bin:/usr/bin"
# Run svnlook here and get UTF-8 encoded output
일반적으로 '.utf-8'접미사가있는 모든 로케일은 괜찮을 것입니다. 당신이 프랑스어 스피커 인 것처럼 보이면 'FR_FR.UTF-8'로케일은 합리적인 환경이 될 것입니다.
다른 팁
이것을 호출해야합니다.
export LANG="fr_FR"
(또는 개발자의 언어가 무엇이든) svnlook을 사용하기 전에. 쉘 시작 스크립트에서 기본 Lang을 설정할 수도 있으므로 매번 내보낼 필요가 없습니다.