저는 Bazaar를 처음 접했습니다. Subversion과 git의 배경에서 Bazaar를 처음 접했습니다. 나는 몇 가지 기본 개념을 잘 알고 있다고 생각했지만 이미 첫 번째 커밋에서 걸림돌을 쳤다.Bazaar : 끌어 오기 - 병합 - 커밋 후 주류에 버블 병합
프로젝트는 Launchpad에서 호스팅됩니다. 나는 bzr branch
으로 로컬 지사 ("working")를 만들었습니다. 나는 변경하고 새로운 파일을 추가하고 다른 파일을 개명했다. 잠시 동안 팀의 다른 사람이 변경 사항을 저지르고 푸시했습니다. 내가 로컬 내 변화를 bzr commit
3. Team Member A
2. Me (trivial commit of .bzrignore)
1. Original commit
오늘 아침 :이 시점에서 커밋 역사는 다음과 같이 보였다. 커밋 번호는 3으로보고되었는데 서버와 동기화 할 때 잘못 조정했다고 생각했습니다. 내가 bzr merge
했다
Using saved parent location: bzr+ssh://bazaar.launchpad.net/... bzr: ERROR: These branches have diverged. Use the missing command to see how. Use the merge command to reconcile them.
: 나는 bzr pull
을했을 때 나는이 메시지를 받았습니다. 충돌은 발견되지 않았지만 현지 지사에서 수정 된 파일 3 개가 남았습니다. 나는 그 사람들을 검사하고 저들에게 저에게 커밋 4로보고 된 코멘트를 저지른 바 있습니다. 그렇다면 아무런 오류도보고하지 않은 bzr push
을했습니다.
이제 커밋 역사 (bzr log --include-merges
)은 다음과 같습니다
4. My merge commit
2.1.1 Team Member A
3. My commit this morning
2. My .bzrignore commit
1. Original commit
직렬화 트렁크 라인을 유지하고 이러한 거품을 병합 피하기 위해 여기에 높은 욕망이있다. (놀랍게도, Launchpad는 2.1.1 커밋을 표시하지 않으므로 필자는 그것을 덮어 쓴 것처럼 보입니다.)이 상황에서 가장 좋은 워크 플로는 이러한 거품을 피하기 위해 무엇입니까? 내가 먼저 뽑아야합니까? 다른 사람의 코드를 내 로컬 커밋되지 않은 변경 내용과 병합하지 않아도됩니다.
또한 rebase가 git에서 주로 사용되지만 Bazaar에서 일반적으로 승인되지 않은 것으로 보입니다. bzr-rebase 플러그인 사용을 피할 수 있다면 좋을 것입니다.
아래 답변에 더하여, 해당 분기의 config에 append_revisions_only 옵션을 설정하여이 문제를 막을 수도 있습니다. 이 설정을 사용하면 예제와 같이 수정 순서를 재정렬 할 때 커밋을 진행할 수 없습니다. – dOxxx
그래, 나는 내 게시 후 이것을 제안하는 답변을 보았다. http://stackoverflow.com/questions/5413602/monotonically-increasing-bazaar-trunk-revision-numbers 그러나 Bazaar의 베스트 프랙티스는 "옳은 것"에 대한 우리 자신의 생각에 부합해야합니다. –
기본적으로 append_revisions_only가 켜져 있어야하는지 여부에 대한 논쟁이 실제로 있습니다. 왜냐하면 꺼짐 동작이 거의 항상 사용자를 놀라게하기 때문입니다. 따라서 해킹이나 비표준 동작으로 생각하지 마십시오. 미래에 다시는 놀라지 않을 것 같아요. – dOxxx