2012-05-03 4 views
0

거대한 소스 트리에서 Mercurial에 의해 추적되는 하나의 하위 폴더 만 있으면됩니다. 어떤 점잖은 정규식 도구에서 hgignore에서 이상한 부정적인 lookahead 처리

specific/component/subfolder 

(정규식 코치, regexpal.com는) 다음과

^(?!extras).+ 
^extras/(?!extensions).+ 
^extras/extensions/(?!sharing).+ 

있는에

^(?!specific/component/subfolder).+ 

한편 .hgignore 주장 절대적으로 충분한 (이해할 수)입니다 나는 선견자 그룹 안에 슬래시를 넣 자마자 아무것도 얻지 못한다.

버그이를 호출하기 전에 (아마의 또 다른 자체 개발 한 정규식 파서?) 내가 도대체 ​​hgignore이 원하는 것을 간접적 인 단서에 대한

크레딧 :-) 집단 지능을 요구하는 것은

Honing the .hgignore file using a negative lookahead

로 이동

답변

5

.hgignore에서 부정적인 미리보기를 사용하지 마십시오. 정말. 스택 오버플로에서 누군가가 제안 할 때마다 나는 의도 한 기능이 아니기 때문에 잘 작동하지 않는다는 것을 알리는 데 차임합니다. Mercurial의 .hgignore 파일이 화이트리스트 시스템으로되어 있다면 실제 화이트리스트 구문을 갖게됩니다. 그것은 블랙리스트이고 그렇게 사용되어야합니다.

부정적인 lookahead 구문은 대부분 자체적 인 정규 표현식 파서가 아니기 때문에 거의 작동합니다. 파이썬에 내장되어 있고 부주의 한 lookahead를 사용하지 않도록 설정하는 것이 좋지만 어쩌면 더 나은 선택이었을 수 있습니다.

두 솔루션 더 나은 사용하는 것보다 결코 - 않을 - 투 - 수 - 만족 - 투 - 당신이 미리 부정적인 모습 처리 :

  • 는 저장소 한 단계 낮은 이동 - 아래 당신이 실제로 원하는 폴더에 추가 재정의 진심

을 무시 -

  • - 또는 블랙리스트 모두를 추적 한 후 파일을 '은 HG 추가'할 트랙이 원하는. 이는 의도 한 기능이 아니며 제대로 작동하지 않지만 이전 버전과의 호환성을 위해 제거 할 수 없습니다.

  • +0

    제안의 엄청난 양 때문에 실제 화이트리스트가 유용한 기능 일 수 있습니까? :) 제 경우에는 귀하의 제안이 적용 가능하지 않으며 대중적인 상황 일 수 있습니다. Hg는 마스터 업스트림 svn에 대한 dev 보충 물입니다. 패치가 같은 디렉토리에 뿌리 내릴 수 있어야합니다. 그리고 개발자는 무언가를 만들 때마다 수동 추가를 기억하는 것이 신뢰할 수 없습니다. 일부 RAD 도구로 생성 될 때 더욱 악화됩니다. 나는 적어도 그러한 해킹 된 화이트리스트 작업에 감사를 표한다. –

    +0

    나는 블랙리스트 만 무시하겠다는 결정을 내리지 않았지만 그것이 맞는 것 같아. 'hg status --unknown --no-status> .hgignore'를 사용하면 현재 존재하고 추가되지 않은 모든 것을 무시할 수 있습니다. 사람들이 자신들이 보호하지 않기로 결정한 모든 것을 "적어도 한 번은"앞에 붙이면, 내가 Mercurial의 UI에서 보았던주의적인 측면에 부합하는 것처럼 보일 것입니다. –

    +0

    이 기능은 다음에서 설명합니다. http://mercurial.selenic.com/bts/issue712 –