Hg 지점 폐쇄


103

hg branch FeatureBranchName개발자가 공유하는 중앙 저장소에 사용 하고 게시 할 FeatureBranchName때 개발이 공식적으로 기본 브랜치와 병합되었을 때 결국 종료하는 방법이 있습니까?

명령을 FeatureBranchName수행 할 때가 보이지 않는 경우에도 도움이됩니다 hg branches.

답변:


158
hg commit --close-branch

브랜치를 마감으로 표시하기에 충분해야합니다. (참조 hg commit)

--close-branch

분기를 닫힌 것으로 표시하고 분기 목록에서 숨 깁니다.

이 스레드를 참조하십시오 .

이 개발 라인이 막 다른 골목에 이르렀 기 때문에 분기를 닫고 더 이상 신경 쓰지 않기를 기대합니다.
따라서 분기가 닫 혔을 때 닫힌 분기를 보도록 명시 적으로 요청하지 않는 한 (예를 들어 분기, 머리, 로그에서) 볼 수 없습니다.

닫힌 브랜치가 저장소에 남아있을 것으로 예상합니다. 그것은 미래에 유용 할 수 있으며, commit --close-branch메시지는 적어도 지점이 폐쇄 된 이유를 설명해야합니다.
가지 치기 는 전혀 다른 것입니다.


참고 : "폐쇄 지점"비즈니스는 Mercurial과 비교할 때 Git에서 누락 된 것으로 보이는 한 가지 측면입니다 .

git의 브랜치는 항상 사용하고 버려야하는 일시적인 것입니다. 제가 아는 한 git은 브랜치 작업이 끝났다는 것을 동료에게 표시 할 방법이 없습니다.
이를 수행하는 유일한 방법은이를 삭제하거나 최종 병합 커밋을보고 분기가 추가 개발에 닫혀 있음을 이해하는 것입니다.

[In Mercurial] 브랜치 작업이 완료되면 저장소에서 삭제할 수 없습니다. 대신 분기를 닫는 커밋을 발행하고 Mercurial은 분기가 닫 혔음을 기록합니다. 리포지토리 기록의 영구적 인 부분으로 남습니다.


3
현재가 아닌 지점을 닫는 방법이 있습니까?
Thomas S.

@ThomasS. 5 년이 지난 지금은 잘 모르겠습니다. 문서는 최근 업데이트되었습니다 : mercurial.808500.n3.nabble.com/…
VonC

1
@ThomasS. 예, 이 답변 은 그 문제에 도움 되었습니다. hg debugsetparent <revision> hg branch <branchOfRevision> 순서가 중요합니다. 이렇게하면 모든 파일이 초기 버전의 파일 인 동안 저장소가 새 개정판에 있다고 생각하게됩니다. 그 후에 --close-branch 커밋을 사용할 수 있지만 -X * 옵션을 사용하여 빈 커밋을 만듭니다. hg commit --close-branch -X * -m "Closing branch."
Maske

8

PruningDeadBranches 에서 찾은 명령 인 분기 닫기를 완료하는 간단한 스크립트를 작성했습니다 .

## 스크립트 ##

#!/bin/bash
#script to close the not required branch in mercurial

hg up -C $1
if [ $? -eq 0 ]; then
    echo "$1 is up"
else
    echo "branch not found, please recheck your argument"
    exit 1
fi 
# if we are here then the branch is up, so we do the following
hg commit --close-branch -m 'this branch no longer required' 
echo "$1 is closed"
hg up -C default
echo "default is up" 

어떻게

저장소의 로컬 사본으로 이동하고 인수를 제공하여이 스크립트를 실행하십시오. 예를 들면 :

$./the_script_above.sh bad_branch_name_to_close

그것은 무엇을합니까

이것은 다음을 수행합니다.

  1. 분기가 존재하는 경우 지정된 분기로 업데이트되거나 오류 메시지와 함께 존재합니다.
  2. 분기를 닫습니다.
  3. 기본 분기에 대한 업데이트.
  4. 중지합니다.

스크립트는 이름에 공백이있는 분기를 처리하지 않습니다.
Jared

@Jared는 브랜치에서 독립적 인 up 명령을 실행할 수 있습니다. 예 : $ hg update yourbranchnamecontainingspace. 공백으로 분기 이름을 만들 수 있다고 생각하지만 update 와 같은 수은 명령을 실행할 때 구문 분석 오류가 발생합니다 . 분기 이름을 매개 변수로 스크립트에 전달하는 동안 공백 문자를 이스케이프하는 것을 고려할 수 있습니다. 건배.
Roshan Poudyal

echo "$1 is up"여기에 중복 되지 않습니까? 년 then이후 fi? 또한 이러한 스크립트는 한 번에 기본값으로 병합하는 옵션을 지원하는 경우 유용 할 수 있습니다.
YakovL

1
@YakovL 예 =). 신고 해 주셔서 감사합니다. 스크립트를 업데이트했습니다. 물론이 옵션 병합 도움이 될 것입니다), I는 향후 업데이트하려고해야하지만 그때까지 당신은 = 귀하의 취향에 스크립트를 확장 할 수 있습니다
의 Roshan Poudyal에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.