msysgit 으로 윈도우에서 git을 쓸 때 한글로 된 파일,폴더명이 깨져서 나오는 문제

raymundo의 이미지

안녕하세요,

리눅스에서 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 로케일이 제대로 지원되지 않는 문제 아닐까 싶고 그러면 별 방법이 없지 않을까 싶네요. 직접 패치를 하지 않는 이상.
저도 이런 자잘한 문제들 때문에 괴로워하다가 결국 윈도우 커맨드라인 환경을 포기하고 그냥 리눅으로 넘어왔;;; 살맛;;;

raymundo의 이미지

네 cygwin을 쓰지 않는 거라서요 ^^ 답변 감사드립니다~

좋은 하루 되세요!

sohn9086의 이미지

아직 써보지는 않았지만 msysgit 1.7.10(정확히는 1.7.10-preview20120409)부터 유니코드를 지원하기 시작했다고 하니 버전 업 해보시면 어떨지요.

https://groups.google.com/group/msysgit/browse_thread/thread/de5b858203ee4de9

생산적인 댓글을 달자

raymundo의 이미지

오호, 네 알아보도록 하겠습니다. 감사합니다. ^_^

좋은 하루 되세요!

raymundo의 이미지

헉, 설치해봤는데... 뭐랄까, 상황이 매우 악화되었습니다.

bash 쉘에서 한글 입력도 안 되고 (구글링해서 본 대로 .inputrc 등에 설정을 해서 한글 입출력 세팅 등을 했었는데, 그 세팅을 바꿔봐도 무소용)

git status 했더니만
한글 디렉토리 안에 있는 파일은 다 삭제된 걸로 인식하질 않나...

문제의 원인을 찾고 해결할 엄두조차 안 나서 일단 제거하고 1.7.8로 돌아가야 할 것 같아요. 저기서 말하는 유니코드 지원은 이 문제와는 별개인 게 아닌가 싶습니다.

좋은 하루 되세요!

sohn9086의 이미지

저런... 괜한 정보를 드려서 죄송하네요.

생산적인 댓글을 달자

raymundo의 이미지

아이고 무슨 말씀을요. 유니코드 지원이란 말 나오면 일단 눈이 번쩍 뜨이는 게 당연하고,

제가 찾았더라도 당연히 시도해봤을 텐데요. 신경써 주신 게 감사할 뿐이죠. ^_^

좋은 하루 되세요!

burnssun의 이미지

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

하셔야 합니다

raymundo의 이미지

아 물론
 
git config core.quotepath false
 
하셔야 합니다

... 아이고ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 이걸 왜 못 찾았나몰라요...

상황이 완전히 달라졌습니다. 리눅스 윈도우 양쪽에서 조금 더 테스트해 본 다음에 정리결과 올릴께요.

좋은 하루 되세요!

raymundo의 이미지

사실 몇 시간 전에, 이 파일명이 깨지는 문제가 윈도우에서만 있는 게 아니라 리눅스에서도 마찬가지더라는 걸 발견하고는, 그 얘기를 하려고 들어왔던 건데, 위에 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 파일에 다음과 같이 적었습니다

au BufNewFile,BufRead *.git/COMMIT_EDITMSG
    \ set fileencoding=UTF-8

.
.

암튼, 제가 가장 불편하게 생각했던 게 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 나 한글입력 자체가 안 먹히는 터라 더 테스트해볼 맘도 안 들어서 제거해버렸네요. 나중에 시간날때 다시 해보겠습니다.

댓글 첨부 파일: 
첨부파일 크기
Image icon git_filename_korean.png603.39 KB

좋은 하루 되세요!

sheep의 이미지

님 짱!!!

이런 댓글을 보게 되다니...

--------
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

aplnosun의 이미지

레이문도님 git 글 보면서 ckw로 교체도 하면서 놀았는데,
어느순간 한글파일이 status에서 8진수 나오는거 발견하고는 한참동안 이리저리 설정해도 안됐는데...
결국 core.quotepath 설정으로 status에서도 한글이 나오네요... 이제 쉘에서만 한글입력 안되는거 빼고는 다 된듯..ㅎㅎ
저의 git 버전은 1.8.0.msysgit.0

덕분에 해결했네요...감사합니다.^^

jachin의 이미지

어디 이런 튜토리얼급 초간지 Q&A 글이 다 있습니까? ㅠㅠ 스샷까지 올리시다니... 덜덜덜...

git 의 시대가 10년은 더 연장된 듯 한 느낌입니다. ㅠㅠ)b 초간디 작살.

raymundo의 이미지

현재 어떤 상황인지 정리를 안 하면 제가 헷갈려서 말이죠 ^^;

좋은 하루 되세요!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.