문제

저는 바자회로 시작했으며 결제 기능이 내가 작업하는 방식에 가장 유용하다는 것을 알았습니다. 즉, "마스터 사본"에서 C/O를 할 수 있고, 개발을 수행 한 다음 변경 사항을 저지르고 있습니다. 새 디렉토리. 그런 다음 "마스터 카피"를 업데이트합니다.

그러나 두 프로젝트를 진행하면 코드의 다른 부분을 변경하고 있다면 어떻게해야합니까? 말하다:

~/master                - master copy
bzr co master ./gui
bzr co master ./engine

그래서 저는 ./gui 디렉토리에서 GUI 관련 작업을하고 있습니다 ./Eengine의 Under-the-Hood Sitsk. 변경 사항을 어떻게 커밋해야합니까? GUI를 먼저 커밋한다면 엔진을 사용하면 엔진에 충돌이 표시 될 것 같아요?

GUI와 엔진을 병합 한 다음 마스터 사본에 하나만 커밋하는 방법이 있습니까?

좀 더 복잡하게 만들기 위해, 내가 이것을한다면 어떻게해야합니까?

bzr branch gui ./mouse

이제 나는 아마도 마우스뿐만 아니라 GUI에서도 작업 해 왔을 것입니다. GUI 및 MOUSE에서 코드를 병합하고 마스터하러 커밋하려면이를 관리하는 가장 좋은 방법은 무엇입니까? 또는 실제로, 나도 :

bzr branch gui ./keyboard

변경된 GUI, 키보드 및 마우스를 변경 한 경우 계층 적으로 병합해야합니다. 즉, 마우스+키보드를 합병 한 다음 GUI와 병합 한 다음 GUI를 마스터에게 커밋합니까?

내가 달성하려는 것이 분명하기를 바랍니다! 시간을 보내 주셔서 감사합니다.

도움이 되었습니까?

해결책

두 개의 체크 아웃이있는 경우, 변경 사항을 하나로 변경할 때마다 먼저 다른 변경 사항에서 변경 사항을 철회해야하며 각 단계에서 충돌을 해결해야합니다. 시간이 지남에 따라 충돌을 해결하기가 더 쉽고 코드가 너무 많이 분기되지 않도록하기 때문에 일반적으로 좋은 생각입니다.

그러나 "GUI"및 "Engine"에서 별도의 개발자가 작업하고 싶거나 두 지점의 개발이 완료 될 때까지 갈등 해결을 저장하려고합니다. 이 경우 "BZR Branch"가있는 독립 분지로 만들어야 할 것입니다. 각 지점은 로컬 커밋을 사용할 수 있으며 서로 충돌에 대해 걱정하지 않습니다. 그런 다음 병합 할 때가되면 3 가지 방법 중 하나를 수행 할 수 있습니다. 모두 동일한 최종 결과를 얻을 수 있습니다.

1. 한 가지를 다른 분기로 병합 한 다음 마스터로 밀어 넣습니다.

cd gui
bzr merge ../engine
# manually fix any conflicts
bzr commit
bzr push #back up to main

위의 방법의 단점은 "GUI"브랜치가 이제 "엔진"이 변경되어 있다는 것입니다. 메인 라인으로 다시 밀면 두 가지를 버리려면 괜찮습니다. 그러나 가지를 더 오래 유지하려면 다음을 수행 할 수 있습니다.

2. 메인 라인으로 병합 :

cd master
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit

여기에는 여전히 "GUI"와 "엔진"이 별도의 지점이라는 상승 여부가 있지만 둘 다 함께 일할 것이라고 확신하기 전에 마스터하라고 약속해야했습니다. 그래서 당신은 정말로 : 아마도 :

3. 병합 분기 생성 :

bzr branch ~/master gui-engine-merge
cd gui-engine-merge
bzr merge ../gui
bzr commit
bzr merge ../engine
# manually fix conflicts
bzr commit
bzr push ~/master
# since this branch was only for merging, you don't need it anymore:
cd ..
rm -r gui-engine-merge

다른 팁

예, BZR은 충돌을 감지하면 엔진 리포지토리의 변경 사항을 확인하지 못하게해야합니다. 일반적으로 체크인 직전에 먼저 "BZR UP"을 수행 한 다음 다른 사람들과 함께 좋은 재생을 수행해야합니다.

질문의 두 번째 부분은 마우스/키보드 분기를 다루는 것이 일반적으로 수행하는 방식입니다. 간단히 GUI DIR에 CD를 한 다음 수행합니다.

bzr merge ../mouse

변경 사항을 병합 한 후 GUI 디렉토리에서 커밋 할 수 있으며 변경 사항을 "마스터"디렉토리로 보냅니다.

저는 BZR 전문가가 아니지만 SVN 리포지토리를 다루는 방식입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top