문제

Mercurial을 사용한 커밋에서 일부 파일의 변경 사항을 무시할 수 있는 방법이 있습니까?

127.0.0.1을 가리키는 기본 oracle tnsnames.ora 파일이 있지만 일부 개발자는 다른 시스템을 가리키도록 수정하지만 기본 파일을 변경하고 싶지 않은 특정 상황이 있습니다.

Subversion에서는 이것을 커밋 시 무시 변경 목록에 간단히 추가했습니다.수은에서 이것을 수행하는 방법이 있습니까?

도움이 되었습니까?

해결책

"HG Commit"명령에서 생략하려는 파일이 이미 "추적 된"경우 -X 옵션을 사용해야합니다. -X로 전달 된 패턴은 매우 유연하여 예를 들어 실행할 수 있습니다.

% hg stat
A etc/foo.conf
M src/bar.c
M lib/libbar/loader.c
% hg commit -X '**.conf'

소스 트리의 깊이에 관계없이 ".conf"확장자가있는 파일을 커밋하지 않도록합니다. 위에 표시된 작업 공간에서 이것은 "src/bar.c"와 "lib/libbar/loader.c"이지만 "etc/foo.conf"를 커밋합니다.

여러 파일 이름을 제외하려면 다중 -X 옵션을 사용하십시오.

% hg commit -X '**.conf' -X '**.sh'

다른 팁

전통적으로 이 문제는 파일 자체의 버전을 관리하는 것이 아니라 다른 사람이 사용할 수 있도록 파일 사본의 버전을 템플릿으로 관리하여 해결되었습니다.

그래서 당신은 hg mv tnsnames.ora tnsnames.ora-template, 커밋한 다음 tnsnames.ora-template의 파일 시스템 복사본을 tnsnames.ora에 직접 복사하고 tnsnames.ora를 .hgignore 파일에 추가합니다.

템플릿에 대한 후속 변경 사항은 여전히 ​​푸시되지만 누군가 템플릿을 실제 파일에 복사하지 않는 한 작업 환경은 실제로 변경되지 않습니다.

당신은 'HG Commit -x Excluded_file.ext'와 같은 것에 대한 별명을 할 수 있습니다. 나는 Mercurial을 사용한 적이 없으므로 여기에 Man Page로 가고 있습니다.

Mercurial의 문서에서 .hgignore 파일을 찾으십시오.

다음은 파일을 무시합니다.

       # use glob syntax.
       syntax: glob

       *.elc
       *.pyc
       *~

       # switch to regexp syntax.
       syntax: regexp
       ^\.pc/
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top