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을 사용하셔도 됩니다.
2008. 5. 5. 19:09

Subversion의 속성(property)들

Subversion을 고급스럽게 사용하기 위해서는 속성(property)을 반드시 알아야만 합니다.
그래서 오늘은 Subversion의 속성(property)에 대해서 얘기해 볼까 합니다.


콘솔에서 다음 명령을 내려보죠..
$ svn propset --help

무언가 메시지들이 출력될 것입니다.


그럼 먼저 어떤 종류의 속성(property)들이 있는지를 먼저 살펴보죠.
Subversion에서 사용되는 속성(property)은 다음과 같은 것들이 있습니다.
(물론 TortoiseSVN의 속성까지 합치면 더 많죠.)
svn:ignore
svn:kerwords
svn:executable
svn:eol-style
svn:mime-type
svn:externals
svn:need-lock


여기서 실제 자주 사용되는 것은 다음 속성들이 아닐까 생각해봅니다.
svn:ignore
svn:eol-style
svn:externals


자 그럼 이제 각 속성들이 의미하는 것이 무엇인지 살펴보도록 하죠.