MQ 대.Mercurial의 지점
-
12-12-2019 - |
해결책
명명된 분기에 비해 MQ의 주요 장점은 다음과 같습니다.
패치를 수정할 수 있습니다.이를 통해 기록을 편집할 수 있으므로 업스트림 코드 위에 깨끗하고 논리적인 일련의 패치를 유지할 수 있습니다.패치에서 실수를 발견하면 새로운 커밋을 하는 대신 패치를 새로 고칩니다.
패치의 변경 사항은 업스트림 변경 사항과 완전히 분리됩니다.두 개의 브랜치를 병합하면 두 가지 개발 흐름이 혼합됩니다.이로 인해 업스트림 분기에서 들어오는 변경 사항을 확인하지 않고는 변경 사항을 확인하기가 어렵습니다.
패치 이름은 일시적입니다.때를
hg qfinish
패치가 적용된 경우 커밋에 패치 이름이 남아 있지 않습니다.따라서 MQ를 전혀 알 수 없으므로 업스트림 저장소와 먼저 조정하지 않고도 MQ를 사용할 수 있습니다.병합을 방지합니다.업스트림의 최신 코드와 병합하는 대신 리베이스 적용된 패치.이것은 당신에게 더 간단한 역사를 제공합니다.당신이 모든 패치를 만든 것처럼 가장했기 때문에 기록은 분명히 가짜입니다. ~ 후에 업스트림에서 코드 보기 — 실제로는 업스트림 이상과 병렬로 코드를 만들었을 때 움직이는 업스트림 끝에 패치를 추가하세요.
변경 세트에 영구 분기 이름이 없습니다.사람들은 가끔 명명된 분기를 일회용으로 처리 명명된 가지가 역사에 고정되어 있다는 사실을 알게 되면 화를 냅니다.(실제로 지점 이름을 다음과 같이 설정할 수 있습니다.
hg branch
패치를 적용하기 전에 이 점이 그렇게 나쁘지는 않습니다.)
MQ의 단점은 다음과 같습니다.
학습할 수 있는 추가 도구입니다.강력하지만 발에 총을 쏠 수 있는 기회도 더 많이 제공합니다.달리기
hg qdelete
정말 그럴거야 삭제 패치를 적용하여 데이터를 버릴 수 있습니다.(나는 이것이 괜찮다고 생각하지만, 우리 메일링 리스트에 와서 이것에 대해 불평하는 Git 사용자가 있었습니다.)다른 사람과 협력하는 것이 훨씬 더 어려워집니다.너 ~할 수 있다 회전하다
.hg/patches
저장소에 넣고 저장소 사이에 패치를 푸시/풀하지만 단일 개발자 이상이면 그렇게 하기가 어렵습니다.문제는 두 명 이상의 사람이 동일한 패치를 새로 고치면 결국 패치를 병합하게 된다는 것입니다.변경 세트에 영구 분기 이름이 없습니다.명명된 분기를 올바르게 사용하고 안정적인 장기 분기 이름을 사용하는 경우 MQ를 사용할 때 이를 놓칠 수 있습니다.
다른 팁
좋은 질문.때에 따라 다르지.개인적으로 나는 Mercurial Branching System을 싫어하며, 내가 할 수있는 경우 (분기 대신 북마크를 사용) 할 수있을 때 그것을 피하려고 노력합니다.
MQ는 훌륭한 권력과 위대한 함정을 가진 훌륭한 도구입니다. pbranch 를 사용하는 것을 고려할 수도 있습니다.
MQ는 프로젝트에 X를 추가하고 업스트림 코드로 업데이트 된 패치를 유지하는 것과 같은 프로젝트에 대한 패치 세트를 생성하고 유지 관리 해야하는 경우 훌륭한 도구입니다.
북마크 (또는 원한다면 분기)는 업스트림 코드로 병합되어야하는 짧은 개발 작업에 좋습니다.