2012-10-16 5 views
0

this 행의 git 리포지토리에 대해 미리 테스트 된 커밋 구조가 있습니다. 일종의 자동화 된 integration manager입니다.git에서 분기 삭제를 전파하는 방법은 무엇입니까?

그러나 지점을 삭제할 때 devs 로컬 저장소에서 삭제할 수 있으며 dev가 개인 저장소에 변경 사항을 푸시 할 수 있다는 점에서 문제가 있습니다.하지만 해당 변경 사항은 ' 녹색 "또는"축복받은 "repo 빌드 서버가 분기를 삭제할 때 빌드를 트리거하지 않습니다.

나는 (이것은 다른 많은 DEVS에서 지점을 가지고 것을 염두에 베어링)에 '녹색'의 repo에서 가지의 DEVS 개인의 repo에서 가지 모두 모두를 얻을 스크립트와 발행

를 작성하는 경우 개인에없는 '녹색'에 존재하는 각 지점에 대한

git push origin :BranchName

는,이 dev에 자신의 개인의 repo에서 삭제 한 가지를 제거 할 수 있지만 다른 사람을 모두 떠나?

이 방법이 유용할까요? 이보다 더 좋은 해결책이 있습니까?

+0

흠 .. [git-push 맨 페이지]를 다시 읽은 후에는이 명령이 작동하지 않고 리모컨에있는 많은 브랜치가 삭제 될 것으로 보인다. –

답변

0

시스템이 빌드를 트리거하기 위해 참조 제거를 포착 할 수 있는지 확실하지 않지만 CI 인스턴스가 사용자의 원격 원격 개인 저장소에서 가져 오기 때문에 git remote prune origin을 사용하여 CI의 분기를 제거해야합니다 측면에서 삭제 된 개인 원격 저장소에서 삭제되었습니다. (원산지가 여기에서 복제 되었기 때문에 원격 저장소의 원격 이름이라고 가정합니다.)

CI가 녹색 저장소로 이동함에 따라 지점의 하위 집합을 비교할 수 있습니다. 원격 측에서 현재 가지고있는 내용으로 삭제 된 분기를 찾습니다. 그래서 CI 측에서 당신은 모든 푸시에 그런 일을 수행 할 수 있습니다

git push {green_repo_remote_name} :branch_name_that_exists_only_in_green_repo

UPDATE를 실행

git branch 

과 :

git branch -a | grep {green_repo_remote_name} 

지역 지점의 목록과 비교 :

아래의 설명에 따라 위의 접근법은 녹색 저장소에서 다른 devs 지점을 제거 할 것으로 보인다. 내 잘못이야. 이 내가 그것을보고 같은 것을 해결하기 위해 두 가지 방법은 다음과 같습니다

I. 녹색의 repo에서 dev에 지점을 만드는 중지가 실제로 변경 통합 CI를 사용하십시오 CI는이를 확인해야 dev에 개인의 repo에서의 변화에 ​​따라

을 변경, 녹색 repo에서 일반적으로 알려진 통합 지점을 당겨 그것에 dev 분기를 병합 및 컴파일합니다. 성공하면 녹색 repo에 대한 변경 사항을 다시 푸시하십시오.

II. 녹색 repo에 원격으로 CI repos를 등록하고, 녹색 repo 쪽에서 수신 후 후크로 재생하여 git remote prune *을 트리거합니다. 그러면 각 리모컨의 CI repo에서 제거 된 모든 분기가 효과적으로 제거됩니다.

도움이 되었기를 바랍니다.

+0

감사합니다. 유진.자신의 개인 repo에 자신의 지점을 가진 많은 devs가 있습니다. 그래서 녹색은 현재 로컬 repo (하나 devs 개인 repo에서 클론)에없는 녹색으로 존재하는 많은 가지를 포함 할 수 있습니다. 이 접근 방식은 현재의 devs 개인 저장소에없는 모든 브랜치를 지우지 않을 것인가? 즉, 다른 devs에 속한 모든 브랜치를 잠재적으로 삭제할 것인가? –

+0

업데이트를 참조하십시오. 나는 당신이 그린 레포에있는 다른 개발자로부터 많은 dev 브랜치를 유지할 수 있다는 사실을 놓친 당신의 설정에 의아해했습니다. –

+0

문제가 해결 되었습니까? 그렇다면 도움을 주거나 자신의 정보를 제공하면 답을 받아 들일 수 있다면 좋을 것입니다. 그래서 다른 사람들이 지식으로부터 이익을 얻을 수 있습니다. –

관련 문제