2017-02-22 5 views
2

나는 하나의 브랜치가있는 프로젝트를 가지고있다. 필자는 이제이 단일 분기에 대해 반복적으로 작업 해 왔으며 태그를 사용하여 버전 번호 마일스톤을 표시했습니다.여러 헤드가있는 저장소를 관리 할 때 단점은 무엇입니까?

프로젝트의 소스 코드가 1.0.7과 1.1.0 (현재) 태그 사이에서 꽤 많이 변경되었습니다. 그러나 1.0.7에는 버그 수정이 필요한 사용자가 있습니다. 그래서 나는 소스를 체크 아웃하고 태그 1.0.7로 업데이트하고 픽스를 구현하고 커밋했다. 그것은 1.0.8로 태그가 붙여졌고 아마도 1.0.x 라인의 마지막 커밋 일 것입니다.

이제 기본 분기에 머리가 두 개 있습니다. 나는 그것을 기대했다. 그러나 BitBucket 계정으로 푸시하려고 시도 할 때 "푸시가 새로운 원격 헤드를 만듭니다"라는 경고가 나타났습니다. 이 메시지를 읽으면서, 나는 왜 메시지가 거기에 있는지를 설명하는 많은 답을 얻었고, 대부분의 사람들은 대답이 합병 되기만을 요구한다. 그러나, 나는이 경우에 내가 그것을 원한다고 생각하지 않는다. 두 지점은 호환되지 않습니다.

-f 옵션을 사용하여 원격 저장소에 새로운 헤드를 강제로 밀어 넣을 수있는 것처럼 보입니다. 그러나 hg 도움말과 이유에 대한 많은 설명없이 웹의 다양한 게시물에 의해 실망한 것으로 보입니다. 그래서 이것을하는 것이 단점은 무엇입니까? 마치 내가 계속 작업하고 싶은 태그/리비전으로 업데이트 할 수있는 것 같습니다. 내가 그 머리를 BitBucket 계좌로 밀어 넣으면, 나는 어떤 식 으로든 발에서 자신을 총으로 쏠 것인가?

+1

당신의 사용법은 전혀 신경 쓰지 않습니다. 주된 이의 제기는 repo를 복제 한 후에 어떤 changeset가 업데이트되어야하는지 완전히 명확하지 않을 수 있다고 생각합니다. – storm

답변

3

여러개의 머리를 갖는 것이 완벽합니다.

머리가 여러 개이고 목적이 조금이라도있는 경우 다른 사람들이 계속해야 할 곳과 최신 개발 내용이 포함 된 머리를보기가 어려울 수 있습니다. 새로운 기능이 추가되었습니다.

그러나 분명히 버전 관리를 사용하는 지점의 태그를 사용하면 해당 문제가 존재하지 않습니다.

작은 catch가 하나 있습니다. Mercurial은 복제시 기본 분기의 최신 커밋으로 업데이트합니다 (예 : 마지막 커밋을받은 헤드. 그것이 1.0.x의 머리라면, 불행 할 수도 있습니다. 그러나 '@'북마크를 메인 라인 또는 개발 헤드에 부착하여이 문제를 해결할 수 있습니다. Mercurial은 항상 최신 커밋을 가진 헤드에 상관없이 해당 북마크가있는 경우 해당 헤드를 업데이트합니다.