2011-05-10 3 views
7

내 상위 - 업 (ups)에 git를 판매하기위한 첨단에 맞다. 어쨌든 그들은 우리의 말을 듣고 있습니다. 내가 확신 할 수없는 한 가지가 있습니다. 사람들이이 문제를 어떻게 다루는 지보고 싶습니다. 기본적으로 내 질문은 근본적인 이해에서 나온다. 한 쌍의 브랜치가 더 멀리 떨어져있게 될수록 합병이 어려워진다.토픽 브랜치와의 병합 충돌을 완화하기위한 워크 플로우 전략

이 간단한 워크 플로를 제안하는 것이 좋습니다. 마스터 (릴리스) 분기, 개발 분기 및 토픽 분기가 있다고 가정 해보십시오. 각기 다른 개발자가 별도의 주제 분기를 수행하고 있으며, 해당 주제 분기를 작업 코드가 있다고 느낄 때마다 중앙 저장소로 끌어 당깁니다. 주기적으로 개발자가 요청할 때 관리자 (해당 조직에서 "기술 주역"이라는 제목이 있음)는 기능 지사에서 개발 지사로 병합합니다. 즉, 준비 서버에 설치되어 테스트를 마친 후 기능 테스트가 완료되면 마스터와 통합되어 프로덕션으로 푸시됩니다.

여기 내 질문이 있습니다. 개발자는 주제 분기를 정기적으로 병합해야합니까? 이렇게하면 모든 개발자가 공정하게 깔끔하게 다시 병합 될 것입니다 (또는 적어도 손을 뗄 수 없기 전에 충돌을 최소한 catch합니다). 관리자가 그 점에 대해 싫어하는 유일한 점은 프로젝트에 코드를 제공하기보다는 툴을 사용하기 위해해야 ​​할 일입니다. 생각?

답변

3

우리 모두는 갈등이 있음을 알고 있습니다. 문제는 정말로입니다 : 누가 갈등을 해결해야합니까?

이 충돌을 일으킨 변경 사항에 가장 가까운 사람이 문제를 해결하면 도움이됩니다. 유지 관리자가이 (또는 다른 개발자)를 처리하게하면 코드가 무엇인지 모를 수도 있습니다. 그래서 예, devs 아마 병합 충돌을 해결할 책임이 있어야합니다. 그것은 상쇄 관계에 있습니다.

문제는 워크 플로우와 관련이 있으며 상사가 기술 담당자가 자신의 시간을 사용하여 충돌을 해결하는 것을 좋아하지 않을 수도 있습니다. 그렇지 않으면이 모델은 전혀 나쁜 것이 아닙니다. 기술 책임자가 맡고있는이 역할은 흔히 "통합 자"라고하며 흔히 충돌을 해결해야하며 개발자는 코드에 대해 알아야하고 개발자와 많은 커뮤니케이션이 필요하다는 것을 의미합니다 (이 시나리오를 단순화 할 수있는 다른 도구가 있습니다).

개발자가 서버에서 주제 분기를 푸시하지 않고 대신 로컬에서 주제 분기를 유지하고 예를 들어 마스터하고 서버에서 개발하십시오. 대신 개발자가 개발, 병합, 충돌 문제를 로컬에서 해결하고 테스트를 수행하기 전에 로컬로 테스트하십시오. 그런 식으로 devs는 개발을 추진할 수 있고 기술 책임자는 테스트 개발에 초점을 맞출 수 있고 성능 테스트와 같은 다른 유형의 테스트를 수행 할 수 있습니다.

그러나 여전히 통합 자 역할을 원하면 git 다시. 통합 프로그램을 통해 분기를 정기적으로 병합하고, 충돌을 해결하고, 병합을 실행 취소하도록 재설정 할 수 있으며, git은 충돌이 어떻게 해결되었는지 자동으로 기록합니다. 이것은 작업 충돌을 최소화하는 아주 좋은 방법입니다. git hook으로 자동화 할 수도 있습니다. 스크립트로 병합하고 충돌이 발생한 경우 통합 업체에 알리십시오.

일부 읽기 :

http://www.kernel.org/pub/software/scm/git/docs/git-rerere.html

http://gitfu.wordpress.com/2008/04/20/git-rerere-rereremember-what-you-did-last-time/

건배

+0

감사합니다, @Magnus.나는 rerere를 들었다. 그러나 나의 머리는 일반적으로 git에 관해 회전하고 있었다. 그래서 나는 그것에 파묻지 않았다. 나는 다시 한번 살펴 보겠다. –

+0

@ Dan : 흥미로운 질문에 감사드립니다. 건배. – ralphtheninja