[mercurial] Mercurial : 지점의 이름을 바꿀 수 있습니까?

우리는 이제 “스테이징”브랜치를 가지고 있는데, 여기서 “스테이징”은 훨씬 더 의미 적으로 적합 해 보입니다. 이것을 처리하기위한 좋은 전략은 무엇입니까?



답변

stiging지점으로 업데이트 하고 새 지점을 만듭니다. 그런 다음 이전 지점을 닫으십시오.

요약해서 말하자면:

hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch


답변

향후 독자 : rebase확장 기능을 사용하면 다음 과 같이 동일한 상위를 사용하여 새 분기를 만들고 stiging전체 분기 기록을 해당 분기로 옮길 수 있습니다.

hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging

이것은 stiging하나의 부모 만 있다고 가정합니다 . 물론 명시적인 개정 번호를 대신 사용할 수 있습니다.

분기하는 경우 : 1 참고 stiging다른 분기와 병합을 포함, 내가 생각하는 만큼,이 그들을 보존하는 것 stagingstiging같은 부모가 있습니다. 그러나 나는 확실히 두 번 확인했다.

참고 2 :이 작업은 기록을 편집하므로 이전 브랜치는 복제 된 리포지토리에서 사라지지 않습니다 ( rebase문서 참조 ). 모든 사람이 새로 복제 할 수 없다면 대규모 그룹에게는 그다지 실용적인 해결책이 아닐 수도 있습니다.

참고 3 / 편집 (@JasonRCoombs 제공) : 이제 단계 가 수은 표준 rebase이므로 이미 푸시 된 변경 세트를 수정하지 않습니다. 단계를 다시 초안 (으로 변경)으로 변경 hg phases하거나 이전 지점을 원래 위치에 그대로 두거나 적절하게 이름이 지정된 사본을 만듭니다 (예 :`hg rebase –keep ‘).


답변

변경 세트가 있으면 분기 확장 과 함께 변환 확장 을 사용하여 이름을 변경해야합니다. 모든 사람은 새로운 저장소를 복제하거나 이전 지점을 제거해야합니다.


답변

“스테이징”이라는 새 브랜치를 만들고 다른 것을 잊어 버리십시오.


답변

이것은 기록을 수정하며 고급 Mercurial 사용자만을위한 것입니다. 그게 무슨 뜻인지 모르면하지 마십시오.

스테이징이 로컬 전용 인 경우, graftstrip 조합으로 스테이징으로 변경할 수 있습니다 . 스테이징이 발생한 조상 체인지 셋으로 업데이트합니다. 스테이징 브랜치를 작성하고 스테이징에서 스테이징으로 각 커미트를 접목하십시오. 스테이징은 이제 스테이징 사본이어야합니다. 마지막으로, 첫 번째 커밋을 제거하여 stiging을 제거하십시오.

hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch


답변