Mercurial에서 특정 파일 만 커밋하려고합니다. 변경 사항을 커밋하려고 할 때마다 자동 추가 기능이있는 hg 때문에 모든 파일을 커밋하려고합니다. 그러나 특정 파일이 아직 "준비"되지 않았기 때문에 원하지 않습니다.
있다
hg commit -I thefile.foo
그러나 이것은 하나의 파일에만 해당됩니다. 나에게 더 좋은 방법은 Git에서와 같이 자동 추가를 끌 수 있다면 것입니다. 이게 가능해?
Mercurial에서 특정 파일 만 커밋하려고합니다. 변경 사항을 커밋하려고 할 때마다 자동 추가 기능이있는 hg 때문에 모든 파일을 커밋하려고합니다. 그러나 특정 파일이 아직 "준비"되지 않았기 때문에 원하지 않습니다.
있다
hg commit -I thefile.foo
그러나 이것은 하나의 파일에만 해당됩니다. 나에게 더 좋은 방법은 Git에서와 같이 자동 추가를 끌 수 있다면 것입니다. 이게 가능해?
답변:
tonfa는 다음과 같이 명령 줄에서 파일을 지정할 수 있습니다.
$ hg commit foo.c foo.h dir/
그게 효과가 있고 그게 제가 항상하는 일입니다. --include
찾은 플래그를 사용할 수도 있으며 다음 과 같이 여러 번 사용할 수 있습니다.
$ hg commit -I foo.c -I "**/*.h"
당신은 심지어 사용할 수 있습니다 파일 세트 를 하여 커밋 할 파일 을 선택할 수도 있습니다.
$ hg commit "set:size(1k - 1MB) and not binary()"
자동 추가 동작을 끄고 Mercurial이 Git처럼 작동하도록하는 설정은 없습니다. 그러나 mq 확장 이 중요 할 수 있습니다. 이것은 고급 확장이지만 할 수 있습니다.
$ hg qnew feature-x # create new patch
$ hg qrefresh -s foo.c # add a file to the current patch
$ hg qrefresh -s bar.c # add another file to the patch
$ hg qfinish -a # convert applied patches to normal changesets
하지만 명령 줄에 파일 이름을 지정하는 것만으로도 충분하다고 생각하기 때문에이 목적으로 MQ를 실제로 사용하지는 않습니다.
3.8 부터는hg commit --interactive
파일을 선택하는 데 사용할 수도 있습니다 (3.8 이전 에는 유사한 기능을 위해 crecord 확장자 를 사용할 수 있습니다 ). --interactive
(또는 -i
) 플래그를 사용하면 커밋에 포함 할 파일을 요청하는 HG의 원인이됩니다. 추가 보너스로 파일 내에 청크를 포함 / 제외 할 수도 있습니다.
다음은 인터페이스의 예입니다. 이것은 (실제로 crecord의) 오래된 스크린 샷이므로 인터페이스가 약간 변경되었습니다 (하지만 기본은 동일합니다).
해당 인터페이스를 얻으려면 curses 인터페이스를 활성화해야합니다. 단일 실행에 대해 hg commit --config ui.interface=curses --interactive
또는 일반적으로 다음을 추가하여 수행 할 수 있습니다 .hgrc
.
[ui]
interface = curses
hg ci foo bar baz