Mercurial 시스템은 버전관리에서 제외할 파일을 지정하기 위해, 저장소의 root 디렉토리에 .hgignore 라는 파일을 이용함.

 

Mercurial 저장소의 working directory에는 사용하는 에디터에서 자동으로 만들어내는 백업파일이나 컴파일러에서 만들어내는 파일 등, tracking 되어서는 안될 파일들이 있음.

이런 파일들은 .hgignore 파일을 이용해 버전관리에서 예외처리가 가능함.

.hgignore 파일은 수동으로 생성해야 함.

이 파일은 보통 버전관리에 포함시켜 다른 저장소와 예외처리 파일리스트를 공유하는 방식으로 이용됨.

 

untracked 파일 중 .hgignore에 지정된 패턴에 매칭되는 파일은 버전관리에서 제외됨.

예를 들어, 저장소에 a/b/file.c 라는 파일이 있을 경우, .hgignore 파일에 다음과 같은 패턴이 지정되어 있으면 file.c 파일은 버전관리에서 제외됨.

a/b/file.c 혹은 a/b 혹은 a

 

.hgignore에 지정된 패턴에 매칭되는 파일이라도 이미 tracked 상태인 파일은 계속 버전관리에 포함됨.

untracked 파일이 있고, .hgignore에 지정된 패턴에 매칭되는 파일이라도 명시적으로 hg add 명령어를 통해 버전관리에 포함시키는 것이 가능함.

 

 

Syntax

ignore 파일은 패턴리스트가 포함된 plain text 파일로, 한 라인에 한 패턴씩 지정됨. 빈 라인은 무시됨.

#은 주석으로 간주되며, \는 escape 문자로 간주됨.

몇가지 패턴문법이 지원되며, 기본값은 Python/Perl 스타일의 정규식.

 

문법을 지정하고 싶을 경우 아래처럼 지정.

syntax: NAME


NAME은 regexp(정규식), glob(shell-style glob) 중 하나를 지정 가능.

지정한 문법은 다른 문법이 지정되기 전까지 나머지 라인 전체에 적용됨.

 

문법이 glob, regexp가 아닐 경우 해당 문법은 저장소 root 디렉토리를 기준으로 함.

확장자가 .c 로 끝나는 모든 파일을 지정할 경우,

glob은 *.c 이고, regexp는 \.c$ 로 지정함.

regexp에서 root 디렉토리 지정은 ^로 시작.

 

아래는 .hgignore 파일의 예제.


# glob syntax 사용
syntax: glob
 
*.elc
*.pyc
*~
 
# regexp syntax로 변환
syntax: regexp
^\.pc/







Posted by bloodguy
,