파이썬 프로그램에서 들여 쓰기에 탭을 사용하지만 대신 공백을 사용하는 사람들과 협력하고 싶습니다 (git 사용).
푸시 / 페치시 git이 공백과 탭 (예 : 4 공백 = 1 탭) 사이를 자동으로 변환하는 방법이 있습니까? (CR / LF 변환과 유사)
파이썬 프로그램에서 들여 쓰기에 탭을 사용하지만 대신 공백을 사용하는 사람들과 협력하고 싶습니다 (git 사용).
푸시 / 페치시 git이 공백과 탭 (예 : 4 공백 = 1 탭) 사이를 자동으로 변환하는 방법이 있습니까? (CR / LF 변환과 유사)
답변:
완벽한 솔루션은 다음과 같습니다.
저장소에서 .git/info/attributes
다음을 포함 하는 파일 을 추가하십시오 .
*.py filter=tabspace
리눅스 / 유닉스
이제 다음 명령을 실행하십시오 :
git config --global filter.tabspace.smudge 'unexpand --tabs=4 --first-only'
git config --global filter.tabspace.clean 'expand --tabs=4 --initial'
OS X
먼저 brew와 함께 coreutils를 설치하십시오.
brew install coreutils
이제 다음 명령을 실행하십시오 :
git config --global filter.tabspace.smudge 'gunexpand --tabs=4 --first-only'
git config --global filter.tabspace.clean 'gexpand --tabs=4 --initial'
모든 시스템
이제 프로젝트의 모든 파일을 확인할 수 있습니다. 당신은 그것을 할 수 있습니다 :
git checkout HEAD -- **
모든 파이썬 파일에는 공백 대신 탭이 있습니다.
편집 : 강제 체크 아웃 명령을 변경했습니다. 물론 일을 먼저해야합니다.
homebrew
후 실행 brew install coreutils
)
예, 잠재적 해결책 중 하나는 git 속성 필터 드라이버 ( GitPro book 참조 )를 사용하여 얼룩 / 청소 메커니즘을 정의하는 것입니다.
그런 식으로:
Git 저장소 내의 모든 파일에 적용되는 필터에 대해이 필터 드라이버 (여기 이름은 ' tabspace
')를 .git/info/attributes
다음과 같은 내용으로 선언 할 수 있습니다 .
*.py filter=tabspace
이제 다음 명령을 실행하십시오 :
# local config for the current repo
git config filter.tabspace.smudge 'script_to_make_tabs'
git config filter.tabspace.clean 'script_to_make_spaces'
--global
모든 협업 프로젝트에 공간을 보낼 것이므로 플래그를 제거해야합니다 .
.gitattributes
. 그러나 예, 구성이 리포지토리에 로컬로 유지되는지 이해하는 것이 더 쉽습니다. 답변을 편집했습니다.
~/.gitconfig
[filter "tabspace"]
smudge = unexpand --tabs=4 --first-only
clean = expand --tabs=4 --initial
[filter "tabspace2"]
smudge = unexpand --tabs=2 --first-only
clean = expand --tabs=2 --initial
그런 다음 두 개의 파일이 있습니다.
attributes
*.js filter=tabspace
*.html filter=tabspace
*.css filter=tabspace
*.json filter=tabspace
과 attributes2
*.js filter=tabspace2
*.html filter=tabspace2
*.css filter=tabspace2
*.json filter=tabspace2
mkdir project
cd project
git init
cp ~/path/to/attributes .git/info/
그렇게하면 마침내 github에서 작업을 푸시 할 때 8 space tabs
모든 브라우저에서 기본 동작 인 코드보기에서 바보처럼 보이지 않습니다 .
mkdir project
cd project
git init
cp ~/path/to/attributes2 .git/info/attributes
git remote add origin git@github.com:some/repo.git
git pull origin branch
이렇게하면 2 space indented
프로젝트 에서 일반 탭으로 작업 할 수 있습니다.
물론 4 space to 2 space
내가 게시 한 프로젝트에 기여하고 개발하는 동안 2 개의 공백을 사용하는 경향이있는 경우 유사한 변환 솔루션을 작성할 수 있습니다 .
.gitattributes
Windows를 사용하는 경우 @Olivier Verdier의 솔루션을 작동 시키기 위한 몇 가지 추가 단계 가 있습니다.