반응형

git 은 정말 훌륭한 버전 관리 솔루션입니다. 저의 경우 개발은 덤으로 하고 있기 때문에 이런 버전관리 솔루션이 익숙치는 않고 다만 필요에 의해 사용하는 수준이다 보니 상세한 기능수준까지 활용하는 수준은 아니며 웹서핑을 통해 근근히 필요한 내용을 찾아가며 사용하고 있습니다.

 

저 역시 회사에서 프로젝트 관리를 위하여 git 을 이용하여 변경 시마다 커밋으로 변경 정보를 남기고 관리를 하고 있는 입장인데 오늘 갑자기 문제에 봉착하였습니다.

 

제가 사용하는 프로젝트는 사실 개발 소스코드를 관리하는 목적은 아니고 컬러 배색 테이블을 깃으로 버전 관리를 하고 있는데 이 배색 테이블의 버전 별 변경정보를 배색 관리 툴에서 확인하고 싶어서 git bash 를 열어놓고 diff 라는 명령어를 이용하여 변경 정보를 확인하면서 발생되었습니다.

 

분명 관리되는 파일은 ANSI 로 저장을 하는것으로 알고 있었고 git bash 에서 diff 명령어를 통해 확인된 결과 아래와 같이 꺽쇠로 구분된 형태로 정확한 정보가 표시가 되지 않는 것이었죠.

 

내가 사용한 명령은 아래와 같습니다. 

git diff --color-words 75b59ef5 205a7797

--color-words 옵션을 붙이면 실제 차이가 있는 부분만 보여주는 옵션입니다.

뒤에 두개는 각 커밋의 명칭입니다.

 

어쨌든 문제가 된 결과 화면은 아래와 같습니다.

 

 

회색으로 박스처럼 선택된 영역인데 한글로 저장된 영역에 해당됩니다.

 

상당히 많은 곳을 검색한 결과 정확히 개선이 되는 해법을 찾아 본 프스팅을 남깁니다.

 

 

우선 본인의 git config 파일을 찾아 아래의 줄을 추가하였습니다.

"ecukr" 부분의 내용은 중요하지는 않고 다만 정의된 이름을 의미합니다. 본 포스트의 아래에서 해당 명칭을 호출하게 되는데 그때 사용되는 명칭과 동일하면 됩니다.

[diff "euckr"]
      textconv="iconv -f euc-kr -t utf-8"

 

실제 컨피그 파일 내부

필요한 설정을 추가 한 상태

만약 해당 컨피크 파일이 어디 있는지 모르겠으면 everything 과 같은 툴을 설치한 뒤 .gitconfig 라고 검색하면 어디에 있는지 알수 있습니다.(everything 이라는 툴은 정말 놀라운 툴입니다. 이글을 읽고 있는 분께서도 한번 설치해보시기 바랍니다.) Notepad++ 와 같은 편집기로 수정을 한뒤 저장 해 주도록 합니다.

 

그런 다음 실제 프로젝트가 있는 폴더에 해당 설정을 이용할 것임을 알려 주어야 합니다.

 

실제 위의 설정을 사용할 데이터가 있는 폴더(git 으로 관리중인 폴더)에 .gitattributes 라는 파일을 하나 만들어 준뒤 해당 파일 안에 

 

*.ini diff=euckr

와 같이 한줄 추가해 주고 저장을 해 줍시다.

 

필자의 경우 *.ini 라고 작성하였으므로 해당 디렉토리 하위의 모든 ini 파일에 대하여 diff 시 euckr 로 정의된 텍스트 변환 셋을 적용하도록 설정을 한 것인데 만약 본인의 프로젝트 자료가 .cpp 나 .h 등이 있다면 해당 확장자에도 마찬가지로 적용되도록 아래와 같이 추가할 수 있을 것입니다. 본인의 파일 확장자에 맞도록 추가해주면 됩니다.

 

*.ini diff=euckr
*.cpp diff=euckr
*.h diff=euckr

 

이렇게 하면 해당 파일(.gitattributes)이 포함되어 있는 모든 하위의 폴더에서 diff 명령 실행 시 한글이 깨지지 않고 출력이 되는 것을 확인하였습니다.

 

다시 한번 diff 명령을 실행한 결과:

동일 위치에서 한글로 된 description 이 잘 출력되는 것을 확인할 수 있다.

깔끔하게 해결이 되었네요.

 

 

저와 같은 문제를 겪는 분들께 도움이 되셨으면 합니다.

반응형

'DEV' 카테고리의 다른 글

유튜브 음악, 영상 다운로드 프로그램 - MUSIC DOWNTOWN  (2) 2023.06.20

+ Recent posts