프로그래밍_Programing/C#

[번외] TortoiseSVN log export 했을 때 문자깨짐 문제

NineTIN 2016. 12. 16. 20:44

SVN에서 Show Log창을 띄우면

지금까지의 커밋 로그를 확인 할 수 있다.

다만, 확인만 할 수 있을 뿐

내보내기(Export)는 할 수 없다.

(그림1. 복사 붙여넣기 해도 이렇게 나올 뿐...)




그렇다고 기능이 없는건 아니다 먼저, TortoiseSVN에서 log를 Export 하고 싶으면

아래와 같이 'command line client tools' 를 설치해야한다.


설치가 되었다면


Power Shell을 실행해서 

프로젝트 리포지토리가 있는 곳 cd 명령어로 이동한다.

그 다음은 다음과 같이 명령어를 쳐 주면 된다.


svn log -v --xml >export.xml



그러면 XML 파일이 생성되고

그걸 Excel로 읽어 들이기만 하면 된다!


(그림2. 아무 문제 없이 엑셀로 열었을 경우)



하지만 중대한 문제가 있으니...

바로 기입한 코멘트 문자가 깨져 버린 다는 것....-_-;;


(주. 원래는 일본어 입니다.)





이를 해결하기 위해 온갖 방법을 사용하다 의외의 사실을 발견! 

먼저 문자가 깨지는 이유인데

PowerShell에서 command line tools로 커맨드를 보내는 상황 즉! 클래식 커맨드를 보내는 상황인데

XML은 인코딩값이 UTF-8인데도 불구하고

PowerShell은 인코딩 설정변수 $OutputEncoding 의 디폴트 값이 US-ASCII 이기 때문!


그래서 

찾아낸 방법은

다음과 같은 PowerShell 스크립트를 작성한다.


#콘솔 출력을 UTF8로 변경
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
#로그 데이터를 취득
$log = & svn @('log', '-v', '--xml')
#인코딩을 다시 되돌림
[System.Console]::OutputEncoding = [System.Text.Encoding]::Default
#그 결과 값을 취득
$log



저장 한 뒤


.\MyShell.ps1 > export.xml


해주면 끝!