현재 Mercurial 개정 해시를 인쇄 하시겠습니까?


124

Mercurial에서 현재 개정 해시를 추출하는 것보다 더 좋은 방법이 있습니까?

hg log -l1|grep changeset|cut -d: -f3

?

내 webapp 배포 스크립트의 일부는 업로드 된 앱 tarball에 고유 한 수정 해시를 "태그"합니다.


2
hg log -l 1당신에게 가장 최근의 변경 집합, 현재 업데이트하고 반드시 하나를 제공합니다! -f 플래그는 hg 로그 출력을 현재 작업 디렉토리의 조상으로 제한하므로 hg log -f -l1원하는 것에 더 가깝습니다.
방수

답변:


196

시험:

hg id -i

예:

$ hg id -i
adc56745e928

22
전체 해시 사용을 원하면 사람들이 아래 솔루션을 놓친 경우 : hg --debug id -i템플릿 지원을 원하면 사용 hg parent --template '{node}' 하지 마십시오 hg log -l 1, 현재 작업 복사본 변경 집합이 아니라 최신 저장소 변경 집합입니다.
조셉 Lisee

7
스크립트에서 --debug를 사용하는 것은 권장되지 않습니다. 그 출력은 이전 버전과의 호환성없이 덜 신중하게 제어됩니다. 템플릿을 사용하십시오. 로그로 수행하려면 .점을 개정으로 사용 하십시오.
Ry4an Brase

감사합니다 Ry4an 저는 "-r"에 대해 몰랐습니다. 현재 작업 복사본 개정을 참조합니다. "로그"에서 "부모"로 전환하는 것이 더 나은 방법 인 것 같습니다.
Joseph Lisee 2013-06-13

문제가 없습니다. hg help revisions그와 hg help revsets같은 미친 강력한 단축키가 있습니다.
Ry4an Brase 2012-06-13

그러나 AFAIK 때문에, 질문에 대한 가장 구체적인 대답없는 hg id -i글로벌 해시 ID의 인쇄 단지 짧은 (12 자) 형태와 이후 hg identify부족 --templateafaics을하기 때문에 바로 수정하고 다른 아무것도를 추출 할 수있는 방법이 없습니다 man 페이지를 말한다 는 요약을 인쇄합니다.
Shelby Moore III

41
hg --debug id -i

커밋되지 않은 변경 사항이 있으면 플러스가있는 긴 해시를 출력합니다.


그것은 3.1.2의 기본값 인 것 같습니다
닉네임

1
Ry4an의 의견 으로 인한 반대 투표 .
Shelby Moore III

20

부모 명령과 함께 --template을 사용할 수 있습니다. 저는 이것을 사용하여 긴 해시를 얻습니다.

hg parent --template '{node}'

hg 매뉴얼 페이지 hg parents에는 DEPRECATED 라고 표시 되어 있지만이 답변을 작성한 경우에는 그렇지 않았을 수 있습니다. 커밋되지 않은 병합이있는 경우 두 개의 상위 개정이 있습니다.
Shelby Moore III

2
누군가 hg 부모가 더 이상 사용되지 않는 이유와 대신 무엇을 사용해야하는지 말해 줄 수 있습니까?
Vincent

17

답변과 답변을 요약하면 이것이 현재 버전 의 고유 한 (짧은 형식이 아닌) 식별자 를 인쇄하는 가장 좋은 방법 인 것 같습니다 .

hg log -l 1 --template '{node}\n' -r .

이 생길 경우 참고 커밋 병합.(점)만을 표시 첫째 부모 실무 그룹의 두 부모를.
Shelby Moore III

9
hg log -l 1 --template '{node|short}\n'

참조 워드 프로세서 , 단락과 다음 "하는 주형의 기본".


2
나는 거의 이것을 원했지만 긴 해시를 사용했습니다. lid이를 log -l 1 --template '{node}\n'정확히 달성 하기위한 별칭 -전체 개정 ID를 인쇄합니다.
Michael Ekstrand 2011

6
가장 최근에 가져온 변경 집합을 인쇄합니다. 작업 디렉토리를 이전 변경 세트로 업데이트 할 수 있습니다. 업데이트 된 변경 세트를 인쇄하려면 "hg id"를 사용하십시오. 유일한 문제는 "hg id"가 템플릿을 지원하지 않거나 긴 해시를 인쇄하는 옵션이 없다는 것입니다 (누군가가 그렇게하는 방법을 알지 않는 한).
Eiver

1
Eiver가 말했듯이 이것은 작업 복사본의 실제 개정판을 저장소의 최신 버전 만 인쇄하지 않습니다. 이 솔루션을 사용하면 추적 오류가 발생할 수 있기 때문에이 솔루션을 거부했습니다.
Joseph Lisee 2012-06-11

1
Ditto Joe의 반대 투표입니다. 또한 @Eiver hg --debug id -i는 다른 곳에서 말한 것처럼 사용 합니다.
AJP

3

가장 구체적인 non-DEPRECATED 명령 --template은 간결함이 필요한 경우에만 개정 정보를 인쇄 할 수 있습니다 (질문에서 암시 함) :

hg log -l 1 -b . -T '{rev}:{node|short}\n'

또는 고유 한 긴 형태의 해시 :

hg log -l 1 -r . -T '{node}\n'

-b .또는 branch(.)(지점 이름 점) 현재 작업 디렉토리 분기를 의미 하고 -r .있는 현재 작업 디렉토리 개정, 의미 문서화hg help revsetshg help revisions.

이 생길 경우 참고 커밋 병합.(점)만을 표시 첫째 부모 실무 그룹의 두 부모를.


3

다른 사람들이 지적했듯이 log -l.

출력이 제한되고 템플릿을 지원하지 않는 hg log -r .사용과 달리 자세한 정보를 얻기 위해 사용 합니다 hg id. 또한 약간의 같은 별칭을 만들 수 있습니다 here = log -r .및 사용을 hg here. 해시 만 사용하려면 hg log -r . --template '{node}\n'.


1

TortoiseHg를 사용하는 경우 Workbench에서 개정 행을 마우스 오른쪽 버튼으로 클릭하고 "해시 복사"를 선택합니다 ( 문서에 따라 ).

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.