2008. 5. 16. 14:33

Subversion의 svn:ignore 속성

Subversion의 속성중 가장 많이 사용하고 유용하게 사용하는 속성이
svn:ignore 속성이 아닐까 생각합니다.

svn:ignore 속성을 어떤때 사용하는지 예를 한번 들어보도록 하죠.
리눅스에서 C 프로그램을 작성하고 있다고 한다면 다음과 같은 파일들이 있을 겁니다.
  • .c, .h 확장자의 소스파일들
  • 빌드를 자동(?)으로 수행해줄 Makefile
  • .o 확장자의 오브젝트 파일들
  • 최종적으로 생성되는 .out 실행파일들

이 중에서 실제 버전 관리되어야 할 파일은 소스파일들과 Makefile뿐입니다.
오브젝트 파일과 실행파일은 버전관리되어서는 안되겠죠.

작업사본(working copy)의 상태를 확인하기 위해서 "svn status" 명령을 실행해보죠
$ svn status
M     a.c
M     a.h
M     Makefile
?      a.o
?      a.out


a.o와 a.out 파일이 위와 같이 "?"로 표시되지 않을 수도 있습니다.
(subversion 설정 파일에서 .o 파일이 자동으로 ignore 리스트에 추가되어있다면
위와 같이 a.o와 a.out 파일의 앞에 "?"로 표시되지 않을 것 입니다.)

만약 위와 같은 오브젝트 파일이 수십개가 있다고 생각해보면,
"svn status" 명령을 내릴 때마다, 버전 관리와는 상관없는 오브젝트 파일들을 계속해서 봐야만 합니다.

이럴때 사용하는 것이 svn:ignore 속성입니다.
이 속성의 의미는 여기에 등록된 파일들 및 디렉토리들은 버전관리하지 않는 것이 확실하므로
무시하라는 의미입니다.


그럼 개발환경별로 무시해야될 파일들이 어떤것들이 있는지 알아보죠.

리눅스에서 C 프로그램을 작성한다면 다음과 같은 파일들이 될 것입니다.
  • 오브젝트파일(*.o)
  • 디펜던시 파일(*.d 혹은 .depend)
  • 최종 실행파일

윈도우의 VC6 프로젝트라면 다음과 같습니다.
  • Debug, Release 디렉토리
  • *.aps, *.ncb, *.opt, *.plg, *.clw, *.positions, README.TXT

윈도우의 VS2005 프로젝트(VC++)라면 다음과 같습니다.
  • Debug, Release 디렉토리
  • *.ncb, *.suo, README.TXT 파일들

자! 그럼 이제 실제 속성들을 어떻게 설정하는지를 볼까요.
리눅스의 콘솔이라면 간단합니다.

$ cat ignore.list
*.o
*.d
.depend
*.out
$ svn propset -R svn:ignore -F ignore.list .
혹은 기존에 있던 svn:ignore 속성을 수정하려면
$ svn propedit svn:ignore .

윈도우에서 콘솔을 사용한다면, 도스 창에서 위명령을 써야겠지요.
아니면 TortoiseSVN을 사용하셔도 됩니다.