2013-08-30 6 views
10
수은

와 커밋 수행, 내가 어떤과 같이 커밋 메시지와 함께 빈 커밋 할 수 있습니까?빈은 의욕 큐 확장자로

hg commit -m "message" 

을하지만, HG 그냥 "아무것도 변경되지"라고하고 커밋하지 않으며, 나는 그것을 무시하는 어떤 "강제"옵션이 표시되지 않는 : 나는 단순히 시도했다.

내 동기에 대해 궁금한 점이 있다면 : 특수 저장소에 푸시하는 인프라를 테스트하고 자동 테스트를 실행합니다. 어떤 테스트를 실행할지를 알려주는 tipmost 커밋의 커밋 메시지에 특별한 문자열을 넣어야한다. 분명히, 나는 실제 저장소에 푸시 할 때이 문자열을 원하지 않습니다. 커밋을 두 번 수정하는 대신 (한 번 특수 문자열을 추가하고 두 번째로 제거하려면) 빈 커밋을 추가 한 다음 다시 롤백하는 것이 좋습니다. 그러면 mq를 사용하여이 작업을 수행 할 수 있습니다. 그러나 나는 mq없이 그것을 할 수있는 방법을 찾고 싶습니다.

답변

4

당신은 그 지점을 닫는 것 커밋 할 수 있습니다 :

hg commit --close-branch -m "message" 

업데이트 :

당신은 한 번에 지점을 닫을 수 있지만, 다른과 다시 열 수 있습니다 커밋. 파일을 변경하지 않고 분기를 다시 여는 가장 간단한 방법은 일부 수정 사항을 태그하는 것입니다. 따라서 빈 커밋에는 hg commit --close-branch을 사용하고 다시 열려면 hg tag을 사용할 수 있습니다.

업데이트 v2를

사실 당신은 단지 hg tag 명령으로 비어있는 새 커밋을 만들 수 있습니다. 커밋 메시지를 설정하기위한 매개 변수는 -m입니다. 당신이 정말이 태그의 정확성에 대해 상관하지 않는 경우, 당신은 -f 매개 변수 hg tag를 호출하여 하나의 태그 이름을 사용할 수 있습니다 : 당신은 빈 커밋을 만들 hg commit --amend을 사용할 수 있습니다

hg tag t1 -f -m "message" 
+1

이러한 작업은 지점 폐쇄와 태그 생성 이벤트와 역사를 더럽 히지 것인가? – HighCommander4

+0

분기를 닫으면 기록이 오염되지 않습니다. 새로운 변경 집합을 추가합니다. 태그 생성은 특정 커밋 메시지와 함께 새로운 변경 집합을 추가하지만,'-m' 매개 변수로 그것을 오버라이드 할 수 있습니다. – rpeshkov

+2

안녕하세요, 실제로 지점을 닫지 않고 새 태그를 만들 수 있습니다. 태그는 신경 쓰지 않고 커밋 메시지 만 신경 쓰면, 하나의 태그 만 사용하고'-f' 플래그로 설정할 수 있습니다. 그래서, 당신은'hg tag t1 -f -m "message"로 빈 커밋을 만들 수 있습니다. – rpeshkov

11

.

임의 커밋을 생성하고 변경 사항을 취소하십시오. 이후에 두 커밋을 함께 접습니다.

예 :

touch tmp        # create dummy file 
hg add tmp        # add file and... 
hg commit -m "tmp"      # ... commit 
hg rm tmp        # remove the file again and ... 
hg commit --amend -m "empty commit"  # ... commit 
+0

'hg commit --close-branch'와 비슷하게 이것은 진정한 빈 커밋을 생성하지 않을 것입니다 - 그것은 여전히 ​​변경 세트에 마커를 남기고 수정 백업 번들을 생성합니다.그러나 분기를 열린 상태로 유지하려고 할 때 분기를 마킹하는 것이 잠재적으로 혼란스럽지 않은 효과가 있다고 생각합니다. – iamnotmaynard

+0

이미 원격 저장소에 푸시 한 경우이 작업이 수행되지 않습니다. – matteo

+4

@matteo 왜 안됩니까? 두가지'hg commit' 명령 사이에 넣지 않으면, 당신은 괜찮습니다. –