2012-07-03 4 views
3

나는 이것이 작동해야한다고 말하는 RE 검사기가 있습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?!?Mercurial .hgignore 좌절

나는 무시하려고 무엇을

예 :

apps/cms/templates/cms/test_bup_DEPRECATED/widgets/page_link.html 

그리고 내 .hgignore 파일 : 나는 모든 종류의 것없이 성공 :(

또 다른 시도했다

syntax: regexp 
^static 
.*_DEPRECATED.* 

을 실패 시도 :

syntax: glob 
_DEPRECATED/* 

UPDATE : 나는이에 .hgignore 파일 편집 :

syntax: glob 
**_DEPRECATED/** 

을하지만 HG 일 아직도이 일이에 대한

$ hg st | grep DEPR 
A apps/cms/templates/cms/test_DEPRECATED/base.html 

같은 결과 :

syntax: glob 
_DEPRECATED 
+0

답변 : 먼저 파일이 추적되지 않는지 확인하십시오. hg forget

; hg com -m 'Grr'glob 추가 * _DEPRECATED (또는 dirs에만 후행 슬래시 추가) –

+0

아니요, 후행 슬래시가 작동하도록하려면 아니요, regex를 사용하십시오. –

+0

다시 한번 감사드립니다. Mark : –

답변

8

첫째, .hgignore 이미 의욕에 의해 추적 파일을 무시하지 않습니다. 귀하의 예는 파일이 이미 추적을 나타냅니다

$ hg st | grep DEPR 
A apps/cms/templates/cms/test_DEPRECATED/base.html 

파일은 이미 추가,하지만 노력하지되었다. 파일을 잊어 버리려면 hg forget을 사용하면 무시 패턴이 적용됩니다.

.hgignore 패턴은 경로의 어떤 부분 일치, 그래서 이것은 당신이 필요로하는 모든 것입니다 :

syntax: regexp 
_DEPRECATED/ 

주 당신이 디렉토리에 대한 후행 슬래시를 할 수 있습니다하거나뿐만 아니라 _DEPRECATED로 끝나는 파일과 일치한다, 그렇지 않으면 삭제 그것.

무시 패턴을 해결하려면 TortoiseHg의 GUI 무시 (thg ignore)가 매우 유용합니다. 추적되지 않고 무시되지 않은 모든 파일을 표시하며 올바른 파일이 무시 될 때까지 패턴을 입력 할 수 있습니다.

+0

감사합니다. _DEPRECATED /하지 않음 _DEPRECATED/작동하지 않음 :) –

+0

regexp에 *가 필요하지 않습니다. glob가 않습니다. 위의 regexp를 사용했습니다. 또한, 글로브는 여전히/DEPRECATED로 끝나는 파일을 차단합니다. 현명하게 선택해 :) –

0

내가 그것을 생각을 당신이 정규 표현식에 가지고있는 * 문자입니다. 나는 *가 0 이상을 의미하기 때문에 그 정규 표현식은 문자열의 위치 0에서 일치 할 것이고 hgignore는 실수로 해석하여 모든 표현식을 무효화합니다.

문자열의 31 번째 문자와 일치하므로 "따옴표없이" "사용하지 않을"수 있습니다. _DEPRECATED 문자열이 포함 된 파일을 무시하려고하는 것처럼이 하위 집합을 선택했습니다. 이것이 당신이하려고하는 것과 다르다면 알려주세요. 나는 당신이 사용할 수있는 다른 정규 표현식을 생각해 낼 것입니다.

또한 "정적"문자로 시작하는 파일을 무시하려고합니다. 다른 줄이 그 것처럼 보이기 때문입니다.

또한 사용할 수있는 glob 구문이 정규식보다 간단합니다. 이 구문을 사용하면 전체 디렉토리를 쉽게 무시할 수 있습니다. 프로젝트를 어떻게 레이아웃했는지 모르겠지만 전체 디렉토리를 무시하면 목표를 달성하는 것이 쉬운 방법입니다.

자세한 설명서는 여기에 있습니다 : http://www.selenic.com/mercurial/hgignore.5.html

+0

고마워요. 위의 업데이트를 참조하십시오. –

+0

"구문 : regexp", 다음 줄 "_DEPRECATED"는 무엇입니까 –

1

정답 :

syntax: glob 
**_DEPRECATED/** 

예 :

$ cat .hgignore 
syntax: glob 
**_DEPRECATED/** 
$ find . | fgrep -v /.hg/ 
. 
./.hgignore 
./apps 
./apps/cms 
./apps/cms/templates 
./apps/cms/templates/cms 
./apps/cms/templates/cms/file 
./apps/cms/templates/cms/test_bup_DEPRECATED 
./apps/cms/templates/cms/test_bup_DEPRECATED/widgets 
./apps/cms/templates/cms/test_bup_DEPRECATED/widgets/page_link.html 
$ hg st 
? apps/cms/templates/cms/file 
+0

고마워요. 위의 업데이트를 참조하십시오. –

+0

하지만 파일을 수은에 추가했습니다! 물론 그것을 보여줍니다! 감사합니다, 파일을 잊어 버렸으나 커밋되었지만 glob는 다음과 같아야합니다 : *이 응용 프로그램은 /etc/cms/template/csms/test_DEPRECATED/base.html에 있습니다. –

+0

감사합니다.이 파일은 추적 할 수 없습니다 (위의 Mark의 대답을 참조하십시오.) –