2011-11-17 1 views
2

TeamCity Visual Stuio 플러그인에서 "Mercurial 용 원격 실행 (개인 빌드)"기능 추가에 관심이 있습니다.Mercurial에 임시 명명 된 분기 만들기 다음 존재에서 삭제

v6.5부터 TeamCity는 "원격 실행 분기 트리거"를 지원합니다. TeamCity는 TeamCity의 트리거와 일치하는 명명 된 분기가 푸시되면 해당 분기의 개인 빌드를 실행합니다.

아이디어는 현재 분기 (현재 default라고 가정 해 봅시다)에서 현재 나가는 변경 집합을 가져 와서 remote-run이라는 임시 명명 된 분기로 이동시키는 것입니다. 그런 다음 CI로 푸시되어 개인 빌드가 트리거되고 개인 빌드가 성공하면 변경 사항이 원래 분기로 이동되어 remote-run 분기가 삭제됩니다.

  1. 는 그것도 의미가 있습니까 :

    나는이에 대한 몇 가지 질문이?
  2. 어떤 확장 프로그램을 사용해야합니까? 나는 MqExtension이 내가 필요로하는 모든 것을한다고 믿지만 대안이 있습니까?
  3. 사용자가 원격 실행 중에 추가 변경 사항을 커밋하면 어떻게됩니까? "임시 분기"변경 집합이 원래 분기로 어떻게 다시 병합됩니까?

현재 타겟팅하고있는 시나리오는 다음과 같습니다. 기본 분기에서 작업하는 동안 사용자가 3 개의 새 수정본을 추가합니다. 그런 다음 TeamCity에서 이러한 변경 사항을 개인 빌드로 실행하려고하지만 그는이 수정 사항을 특수하게 지사에 맡기는 것을 잊었습니다. 대신, 내 추가 기능은 나가는 변경 사항을 가져 와서 지사에 배치합니다. 개인 빌드가 성공하면 변경 사항은 원래 (기본) 분기에 다시 배치되고 원격 저장소로 푸시됩니다. 이 같은

뭔가 :

[default] A---B---C---D 

B, CD 새로운 버전입니다 가정, 나는 도구이 원하는 :

[default] A 
      \ 
      [remote-run] B---C---D 

을 그리고 당신이 일을 끝낼 후, 원래로 돌아 상태 : 예 :

[default] A---B---C---D 

EDIT : Mq를 사용하여 변경 사항을 다른 지점으로 옮길 수 있었지만 매우 쉽게 마무리되었습니다. 불행하게도, 나는이 변화를 되돌릴 방법을 모른다. :)

희망이있다!

답변

1

정확히 'hg rebase'명령입니다. 귀하의 경우에 사용

hg rebase -s B -d A --detach 

최신 버전 (최신 야간 빌드)을 사용하고 있는지 확인하십시오. 최근이 특정 상황에 영향을 줄 수있는 버그가 수정되었습니다. 또한이 작업을 수행하려면 'rebase'확장을 활성화해야합니다. 확인 요 파일 ~/.hgrc (또는 mercurial.ini) 라인 다음했는지 확인 :

[extensions] 
rebase = 

편집 :를 내가 (방법 로컬 분기를 제거하는) 반대 질문에 대답 보인다. 새로운 명명 된 분기를 만들고 B, C, D 버전을 가져 오기 위해서는 다음 명령 순서를 따라야합니다.

hg qimport -r tip:B  #Revisions B,C,D will be imported into mq 
          #(here B is revision id of the "B" commit) 
hg qpop --all    #Unapply all patches 
hg branch remote-run  #Create a new branch 
hg qpush --all   #Push patches into the new branch 
hg qfinish -a    #Transform applied patches to regular commits 
+1

주 : 1. 2 차 및 다음 실행에는'hg branch -f'를 사용해야합니다. 2. qpush가 진짜 brach *를 만들지 모르겠다. –

2

성공적인 빌드시 TeamCity에 VCS 루트 태그를 지정할 수 있습니다. 별도의 분기없이 각 성공적인 빌드에 기본적으로 태그를 지정하는 것이 더 합리적이지 않을 수 있습니다.

당신의 임무 뒤에있는 동기가 확실하지 않습니다. 어떤 워크 플로우에서 혜택을 받고 싶습니까?

항목 3에 대해서는 자동 병합을 기본값으로 되돌릴 수있는 방법이 없습니다. 병합 충돌이있는 경우 "개인 빌드"에 대한 빌드 구성에 넣은 명령 스크립트는 특히 "CI"가 아닌 안정적인 상태로 되돌아 가려면 손을 잡고 있어야합니다.

죄송합니다. 첫 번째 패스에서 더 이상 도움을 드릴 수 없습니다.

+0

안녕하세요, 제 질문이 업데이트되었습니다. –