msysgit 으로 윈도우에서 git을 쓸 때 한글로 된 파일,폴더명이 깨져서 나오는 문제
안녕하세요,
리눅스에서 git을 쓰는 데는 별 문제가 없는데,
msysgit 1.7.8 을 윈도우XP에서 쓰려니 이래저래 험난하더군요.
git bash 에서 ls나 diff 등을 할 때의 한글이 깨지는 문제는 이래저래 구글링하며 해결했습니다만
(관련 내용은 http://gypark.pe.kr/wiki/Git 에 정리해두었습니다)
파일명 자체에 한글이 포함되어 있을 때는 여러 git 명령어의 출력이 코드값으로 나오더군요.
예를 들어 D:\Temp\korean 폴더를 만들고 git init 한 후, 여기에 "가각.txt" 라는 이름의 파일을 만들고 git status 하면
raymundo@SARASA /d/Temp/korean (master) $ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # "\260\241\260\242.txt" nothing added to commit but untracked files present (use "git add" to track)
"\260\241\260\242.txt" 이렇게 파일명이 출력됩니다. 이건 cp949로 인코딩된 "가각" (B0A1 B0A2)의 8진수 표기로군요.
뭐 딱히 이 상태에서 commit 을 하거나 diff 를 보거나 하는데 큰 지장은 없습니다만, 이렇게 깨진 파일이 다수 생기는 상태에서는 status 로 살펴보거나 할 때마다 꽤나 눈에 거슬리고...
git commit 할 때도, 제 경우는 자동으로 에디터에 채워지는 메시지에서 파일명 부분의 주석을 해제하여 로그에 같이 남기는 편인데,
# Please enter the commit message for your changes. Lines starting (중략) # new file: "\260\241\260\242.txt"
위와 같이 나오면 로그를 본들 의미가 없어서.. 일일이 손으로 파일명을 수정해주고 있자니 너무 불편합니다.
그나마 git gui 를 하여 gui 툴을 띄우면 여기서는 한글파일명이 제대로 보이기는 하는데, gui툴이 영 손에 안 익어 bash창에서 명령어를 입력하는 것보다 불편한 건 둘째치고, 이 때도 커밋 메시지에 파일명을 넣으려면 결국 손으로 치던가 bash창에서 ls한 후 마우스로 긁어 붙이거나 등등...
윈도우에서 git 쓰시는 분들은 어떻게들 하고 계신지요?
요즘은 어떤가 모르겠는데 적어도 예전에는
요즘은 어떤가 모르겠는데 적어도 예전에는 cygwin에서 i18n을 제대로 지원하지 않았던 것 같네요.
일본인인가가 파일시스템 utf8 패치를 만들었었는데 당시에는 몇가지 기술적인 이유로 cygwin에 수용이 안되었던 것으로 기억합니다.
아니, 그런데 msysgit은 cygwin을 안쓰는거였던가? ㅠㅠ 어쨌건 cp949 로케일이 제대로 지원되지 않는 문제 아닐까 싶고 그러면 별 방법이 없지 않을까 싶네요. 직접 패치를 하지 않는 이상.
저도 이런 자잘한 문제들 때문에 괴로워하다가 결국 윈도우 커맨드라인 환경을 포기하고 그냥 리눅으로 넘어왔;;; 살맛;;;
네 cygwin을 쓰지 않는 거라서요 ^^ 답변
네 cygwin을 쓰지 않는 거라서요 ^^ 답변 감사드립니다~
좋은 하루 되세요!
아직 써보지는 않았지만 msysgit
아직 써보지는 않았지만 msysgit 1.7.10(정확히는 1.7.10-preview20120409)부터 유니코드를 지원하기 시작했다고 하니 버전 업 해보시면 어떨지요.
https://groups.google.com/group/msysgit/browse_thread/thread/de5b858203ee4de9
생산적인 댓글을 달자
오호, 네 알아보도록 하겠습니다. 감사합니다. ^_^
오호, 네 알아보도록 하겠습니다. 감사합니다. ^_^
좋은 하루 되세요!
헉, 설치해봤는데... 뭐랄까, 상황이 매우
헉, 설치해봤는데... 뭐랄까, 상황이 매우 악화되었습니다.
bash 쉘에서 한글 입력도 안 되고 (구글링해서 본 대로 .inputrc 등에 설정을 해서 한글 입출력 세팅 등을 했었는데, 그 세팅을 바꿔봐도 무소용)
git status 했더니만
한글 디렉토리 안에 있는 파일은 다 삭제된 걸로 인식하질 않나...
문제의 원인을 찾고 해결할 엄두조차 안 나서 일단 제거하고 1.7.8로 돌아가야 할 것 같아요. 저기서 말하는 유니코드 지원은 이 문제와는 별개인 게 아닌가 싶습니다.
좋은 하루 되세요!
저런... 괜한 정보를 드려서 죄송하네요.
저런... 괜한 정보를 드려서 죄송하네요.
생산적인 댓글을 달자
아이고 무슨 말씀을요. 유니코드 지원이란 말 나오면
아이고 무슨 말씀을요. 유니코드 지원이란 말 나오면 일단 눈이 번쩍 뜨이는 게 당연하고,
제가 찾았더라도 당연히 시도해봤을 텐데요. 신경써 주신 게 감사할 뿐이죠. ^_^
좋은 하루 되세요!
msysGit-netinstall-1.7.10-preview20120409.exe 로 해보니
http://code.google.com/p/msysgit/downloads/detail?name=msysGit-netinstall-1.7.10-preview20120409.exe&can=2&q=
으로 현재 최신 devel branch 로 빌드 해보니 utf-8 지원 합니다만 autocompletion 은 여전히 안되네요
아 물론
git config core.quotepath false
하셔야 합니다
아 물론 git config
... 아이고ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 이걸 왜 못 찾았나몰라요...
상황이 완전히 달라졌습니다. 리눅스 윈도우 양쪽에서 조금 더 테스트해 본 다음에 정리결과 올릴께요.
좋은 하루 되세요!
사실 몇 시간 전에, 이 파일명이 깨지는 문제가
사실 몇 시간 전에, 이 파일명이 깨지는 문제가 윈도우에서만 있는 게 아니라 리눅스에서도 마찬가지더라는 걸 발견하고는, 그 얘기를 하려고 들어왔던 건데, 위에 burnssun님의 리플을 보고 기절하는 줄 알았습니다.
혹시나 싶어서 git-config 의 매뉴얼 문서를 열어놓고는, 수많은 옵션을 (git는 인간적으로 명령어와 명령어별 옵션이 너무 많은 듯ㅠㅠ) 다 볼 엄두가 안 나서 "encoding" "charset" 등으로만 검색했는데, "quote"를 검색했어야 하는 거였더군요. 깔끔하게 백슬래쉬와 8진수 코드로 나올 때 알아챘어야 했는데.
.
.
암튼,
core.quotepath 옵션을 false 로 주고,
1) Linux, LANG=ko_KR.UTF-8, putty 접속(캐릭터셋 설정 UTF-8), git version 1.7.9.rc0
2) 같은 Linux, LANG=ko_KR.EUCKR, putty 접속(캐릭터셋 설정 cp949), git version 1.7.9.rc0
3) 윈도우XP, git-bash 창, git version 1.7.8.msysgit.0
세 군데서 파일이름에 한글이 들어간 파일을 수정한 후 git diff, git ls-files, git status 를 해보았습니다.
첨부한 스크린샷에서 보면
1), 2) 리눅스의 경우
파일도 이름이 UTF-8로 된 것과 EUC-KR로 된 것 두 개를 준비했는데요, 두 파일 중에 putty 캐릭터셋과 일치하는 인코딩으로 된 파일명은 잘 나왔습니다. 물론 다른 하나의 파일명은 깨져서 나왔지만.
3) 윈도우의 경우
이게 참 알쏭달쏭한데, 파일명 인코딩은 당연히 cp949로 되어 있을 거고요.
git diff 와 git ls-files 에서는 파일명이 잘 나오는데,
(diff할 때 파일 내용이 깨지는 건 내용이 UTF-8로 되어 있어서 그러니 됐고... 사실 이것도 알아서 변환되면 좋으련만)
git status 에서는 여전히 깨져서 나오는데, 왜 그러는 건지 짐작도 못 하겠네요.
* 더 희한한 건, git status | cat 이렇게 파이프 한번 거쳐주면 그땐 잘 나옵니다
* 그래서 혹시 터미널 컬러 출력과 뭐가 꼬이나 싶어서 color.status=never 로 바꿔줬는데 소용 없었습니다.
.
.
그리고 세 경우 다 git commit 할 때 자동으로 구성되는 커밋 메시지에는 파일명이 제대로 한글이 구성되어 나왔습니다.
다만 조심해야 할 게 vim의 경우 fileencodings 옵션에 UTF-8과 cp949를 다 포함해두었더니, cp949 문자열이 들어올 때 자동으로 fileencoding을 cp949로 잡아버리더군요. 신경써주어야 하겠고, 제 경우는 vimrc 파일에 다음과 같이 적었습니다
.
.
암튼, 제가 가장 불편하게 생각했던 게 git status 였는데, core.quotepath 옵션을 false 로 하고, cat 등에 파이프로 넘겨주면 한글 파일명도 제대로 나온다...는 정도로 정리가 되었습니다.
그리고 msysgit 1.7.10 관련 메일링 리스트에 보면 (위에 sohn9086님이 알려주신)
https://groups.google.com/group/msysgit/browse_thread/thread/de5b858203ee4de9
non-ASCII filename 에 관한 얘기가 있긴 한데,
그래서 이게 해결이 되었다는 얘기인지 아닌지 영 모르겠습니다 -ㅅ-;
설치도 해봤는데 당장 bash 창에서 ls 나 한글입력 자체가 안 먹히는 터라 더 테스트해볼 맘도 안 들어서 제거해버렸네요. 나중에 시간날때 다시 해보겠습니다.
좋은 하루 되세요!
님 짱!!! 이런 댓글을 보게 되다니...
님 짱!!!
이런 댓글을 보게 되다니...
--------
From Buenos Aires, Argentina
No sere feliz pero tengo computadora.... jaja
닥치고 Ubuntu!!!!!
To Serve My Lord Jesus
blog: http://sehoonpark.com.ar
http://me2day.net/sheep
덕분에 답답한거 하나 해결했네요.
레이문도님 git 글 보면서 ckw로 교체도 하면서 놀았는데,
어느순간 한글파일이 status에서 8진수 나오는거 발견하고는 한참동안 이리저리 설정해도 안됐는데...
결국 core.quotepath 설정으로 status에서도 한글이 나오네요... 이제 쉘에서만 한글입력 안되는거 빼고는 다 된듯..ㅎㅎ
저의 git 버전은 1.8.0.msysgit.0
덕분에 해결했네요...감사합니다.^^
이런 상큼한 팁이 다 있나요! ㅠㅠ
어디 이런 튜토리얼급 초간지 Q&A 글이 다 있습니까? ㅠㅠ 스샷까지 올리시다니... 덜덜덜...
git 의 시대가 10년은 더 연장된 듯 한 느낌입니다. ㅠㅠ)b 초간디 작살.
현재 어떤 상황인지 정리를 안 하면 제가 헷갈려서
현재 어떤 상황인지 정리를 안 하면 제가 헷갈려서 말이죠 ^^;
좋은 하루 되세요!
댓글 달기