GitNotes.33-5.md
본 문서는 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)

반응형

+ Recent posts