본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
Section 33.5: 빈 디렉토리 다루기 (git-svn 환경)
git 은 디렉토리라는 개념을 인식하지 못하며, 단지 파일들과 각 파일들의 filepath 정보만을 이용해 동작하게 되어있다. 이는 git 이 비어있는 디렉토리는 추적 (track) 하지 않는다는 것을 의미한다. 그러나, SVN 은 그렇지 않다. 따라서 git-svn 을 사용한다는 것은, git 에서의 빈 디렉토리 관련하여 생기는 어떠한 변경사항도 SVN에 전파되지 않는다는 것을 의미한다.
커밋 발행시 --rmdir
옵션을 사용하면 디렉토리에서 이러한 문제를 해결할 수 있으며, 로컬에서 한 디렉토리에 존재하는 마지막 파일을 삭제한 경우, 해당 빈 디렉토리를 SVN 에서 삭제하여 줄 것이다:
git svn dcommit --rmdir
안타깝게도, 이 방법은 이미 빈 상태로 존재하는 디렉토리까지 삭제하여 주지는 않는다: 이는 사용자가 직접 삭제하여 주어야 한다.
해당 옵션을 dcommit
수행시마다 추가해 주어야 하는 번거로움을 피하고 싶거나, git GUI 도구를 (SourceTree 같은) 사용하는 경우 등 만약의 경우를 위해 해당 옵션을 명령어의 기본적인 동작으로 지정하려면 아래와 같이 수행한다:
git config --global svn.rmdir true
위 명령어는 사용자의 .gitconfig 파일을 수정하여 아래와 같은 라인을 추가한다:
[svn]
rmdir = true
SVN 에서 비어있는 상태로 남아있어야 하는 모든 추적되지 않는 (untracked) 파일과 디렉토리들을 모두 삭제하려면 아래와 같은 명령어를 사용한다:
git clean -fd
주의: 위 명령어는 추적되지 않는 (untracked) 모든 파일과 디렉토리들을 삭제할 것이며, 이는 SVN 에서는 추적되어야 하는 (tracked) 대상에 대해서도 마찬가지로 동작한다. 만약 SVN 에서 추적되는 빈 디렉토리를 다시 생성해야 할 경우 아래와 같은 명령어를 사용한다.
git svn mkdirs
실제적으로 보았을 때, 이는 작업 디렉토리에서 추적되지 않는 파일들과 디렉토리를 정리하고 싶다면 항상 두 명령어를 같이 사용하여 SVN 에서 추적하는 빈 디렉토리까지 생성해야 한다는 것을 의미한다:
git clean -fd && git svn mkdirs
[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)
'번역 > Git Notes for Professionals' 카테고리의 다른 글
34.1: 저장소에 대한 archive 생성하기 (0) | 2020.02.03 |
---|---|
34: Archive (0) | 2020.02.03 |
33.4: SVN 으로부터 최신 변경사항을 가져오기 (0) | 2020.01.31 |
33.3: 로컬에서 작업하기 (git-svn 환경) (0) | 2020.01.31 |
33.2: 로컬 변경사항을 SVN 에 push 하기 (0) | 2020.01.30 |