1.2.3.3. svn:ignore
svn:ignore 속성은 어떤 종류의 Subversion 조작이 무시한다 파일 패턴의 리스트를 포함하고 있습니다. 아마 가장 자주(잘) 이용된다 특수 속성으로, global-ignores 실행시 설정 옵션과 함께 이용됩니다.. 그것을 사용해, 버전화되어 있지 않은 파일과 디렉토리를 svn status와 같은 커멘드의 대상으로부터 제외합니다.
svn:ignore속성의 배후에 있는 이유는 간단하게 설명할 수 있습니다. Subversion은, 작업 카피 디렉토리에 있는 모든 파일과 서브 디렉토리 하지만 버전 관리하에 있다고는 가정하지 않습니다. 리소스는svn add (을)를 사용해 명시적으로 Subversion 관리하에 둘 필요가 있습니다. 결과적으로 자주 작업 카피중이 많은 리소스가 버전 관리하에 없는 것이 있습니다.
svn status 커멘드는 출력의 일부로서 작업 카피에 어느 버전화되어 있지 않은 파일이나 사브디레트크리를, global-ignores 옵션(혹은 그 편입의 디폴트치에 의하고)에 의해, 아직 필터되어 있지 않은 것에 대한 보고 표시합니다. 이와 같이 행동하는 것은, 유저가, 어느 리소스를 버전 관리하에 추가하는 것을 잊었을 때에, 그것을 알 수 있도록(듯이) 하기 (위해)때문입니다.
그러나 Subversion은 무시해야 할 모든 리소스의 이름을 추측할 수 있다 (뜻)이유가 아닙니다. 게다가 매우 자주(잘), 특정의 저장소(repository)의, 모든 작업 카피중에서 무시하고 싶은 것이 있기도 합니다. 그 저장소(repository)의 모든 유저에게, 각각의 실행시 설정 area에 특정의 리소스 패턴을 추가하도록(듯이) 강요하는 것은, 부담이 된다 만이 아니고, 유저가 체크아웃 한 다른 작업 카피의 설정에 의해 망가져 버리는 위험이 있습니다.
이것을 해결하려면 , 어느 디렉토리에 나타날지도 모르는 리소스를 구별해 무시할 수 있는 것 같은 패턴을, 디렉토리 자체에 보존하는 것입니다. 버전화 되지 않는 리소스가 좋게 있는 예로, 기본적으로는 디렉토리 마다 독특하지만, 나타나는 일이 있는 것은, 프로그램의 컴파일로부터의 출력 등이 있습니다. 혹은이 본자신을 예를 들면 HTML, PDF, PostScript 파일등으로, 이것들은 있는 DocBook XML 입력 파일을, 좀 더 읽기 쉬운 출력 형식으로 변환한 결과 생성되는 것입니다.
CVS 유저에게 있어서의 무시 패턴
Subversion의svn:ignore 속성은 CVS 의 . cvsignore 파일에 구문도 기능도 매우 잘 닮았습니다. 실제조사 있고, CVS 작업 카피를 Subversion (으)로 이행하는 경우,. cvsignore 의 무시 패턴을 직접 svn propset 커멘드 의 입력 파일로 할 수가 있습니다:
1 2 |
]$ svn propset svn:ignore -F . cvsignore . property `svn:ignore' set on '. ' |
그러나, CVS 와 Subversion가 패턴을 무시하는 방법에는 몇개의 차이가 있습니다. 두 개의 시스템은 무시 패턴을 다른 타이밍에 이용해, 무시 패턴이 적용되는 대상 정원않고일까 차이점이 있습니다. 게다가 Subversion은 무시 패턴이 아무것도 없는 상태에 되돌리기 위한 ! 패턴은 사용할 수가 없습니다.
이러한 의미로,svn:ignore속성이 해결법으로 됩니다. 그 값은 파일 패턴의 복수행의 모임으로, 일행에 하나의 패턴을 씁니다. 속성은, 패턴을 적용하고 싶으면 생각하는 디렉토리로 설정됩니다. 예를 들어,svn status로부터의 이하의 출력이 있었다고 합니다:
1 2 3 4 5 6 7 8 |
]$ svn status calc M calc/button.c ? calc/calculator ? calc/data.c ? calc/debug_log ? calc/debug_log. 1 ? calc/debug_log. 2. gz ? calc/debug_log. 3. gz |
이 예에서는,button.c에 대한데에인가의 속성의 변경을 했습니다만, 작업 카피중에는 몇개의 버전 관리해 없는 파일도 있어, 그것은 이 경우, 원시 코드로부터 컴파일 한calculator 프로그램, data.c라는 이름의 원시 코드, 그리고, 디버그 출력의 로그 파일입니다. 이것으로, 빌드 시스템은 항상 calculator를 생성하는 것을 알고 있습니다. 그리고, 테스트 프로그램은 항상 이러한 디버그 로그 파일을 남기는 일도 알고 있습니다. 이러한 사실은 당신의 것 만이 아니고, 어느 작업 카피에 있어서도 올바른 일입니다. 그리고svn status (을)를 실행할 때마다 이러한 파일을 보는 것에 흥미가 있는 것은 아닌 것도 알고 있습니다. 그래서,svn propedit svn:ignore calc (을)를 사용해 몇개의 무시 패턴을calc 디렉토리에 추가합니다. 예를 들어svn:ignore 속성의 새롭다 값으로서 이하를 추가할지도 모릅니다:
1 2 |
calculator debug_log* |
이 속성을 추가하면(자),calc디렉토리상에 로컬인 속성 변경을 손에 넣을 수가 있습니다. 그러나,svn status 출력에 대해 무엇이 바뀌었는지를 주의해 주세요:
1 2 3 4 |
]$ svn status M calc M calc/button.c ? calc/data.c |
이것으로, 보고 싶지 않은 파일이 출력으로부터 전부 사라졌습니다. 물론 이러한 파일은 아직 작업 카피에 있습니다. Subversion 는 그것이 존재하고 있어, 버전 관리하에 없는 것에 도착해 (은)는 아무것도 말하지 않습니다. 이것으로, 표시로부터 시시한 파일을 전부 없앤다 한편, 좀 더 주의할 필요가 있는 아이템에 대해서는 그대로 하는 예를 들어, 버전 관리하에 추가하는 것을 잊은 원시 코드 파일 등은, 여전히 표시됩니다.
무시하는 파일을 보고 싶은 경우는, Subversion에 –no-ignore 옵션을 건네줄 수가 있습니다:
1 2 3 4 5 6 7 8 |
$ svn status --no-ignore M calc/button.c I calc/calculator ? calc/data.c I calc/debug_log I calc/debug_log. 1 I calc/debug_log. 2. gz I calc/debug_log. 3. gz |
출처 : http://wiki.kldp.org/wiki.php/SubversionBook/AdvancedTopics