code

수은의 모범 사례 : 분기 대 복제, 부분 병합?

codestyles 2020. 10. 22. 08:03
반응형

수은의 모범 사례 : 분기 대 복제, 부분 병합?


... 나는 의욕과 간단한 재료로 사용 (오긴했는데 그래서 add, commit, diff)와 .hgignore 파일에 대해 알게 (야호!) 생성 및 나뭇 가지 사이를 전환의 요령을 입수했습니다 ( branch, update -C).

그래도 두 가지 주요 질문이 있습니다.

  1. 내가 "Branch1"지점에 있고 "Branch2"지점에서 일부 변경 사항을 가져 오려는 경우 어떻게해야합니까? 특히 모든 변경 사항이 하나의 하위 디렉토리에있는 경우. (그냥 전체 저장소를 복제 한 다음 Beyond Compare와 같은 디렉터리 병합 도구를 사용하여 편집 내용을 선택하고 선택할 수 있습니다.하지만 하나의 파일 또는 하나의 디렉터리에서 변경 사항을 격리하는 방법이 있어야 할 것 같습니다.)

  2. 로 분기를 전환하는 update -C것이 너무 쉬워 보이므로을 사용하는 이유가 궁금 clone합니다. 몇 가지 이유 만 생각할 수 있습니다 (아래 참조). 내가 놓친 다른 이유가 있습니까?

    ㅏ. 한 번에 두 가지 버전 / 브랜치에 대해 작업해야하는 경우 (예 : 성능 메트릭 차이 수행)

    비. 백업용 ( clone물리적으로 다른 위치에있는 네트워크 드라이브에 대한 저장소)

    씨. 위에서 언급 한 것처럼 pick & choose 병합을 수행합니다.


나는 클론을 사용합니다.

  • 수명이 짧은 지역 지점
  • 다른 개발 머신 및 서버에 복제

이전의 사용은 저에게 매우 드뭅니다. 주로 완전히 포기하고 싶은 아이디어를 시도 할 때입니다. 병합하려면 모든 변경 사항을 병합하고 싶습니다. 이러한 종류의 분기는 주로 서로 다른 개발자의 분기를 추적하여 서로 방해하지 않습니다. 이 마지막 요점을 명확히하기 위해 :

  • 저는 계속해서 변경 작업을하고 동료 개발자 변경 사항을 가져 오면 내 변경 사항을 가져옵니다.
  • 나에게 편리 할 때 이러한 분기 중 하나 (또는 ​​모두)의 모든 변경 사항을 내 분기로 병합합니다.

기능 브랜치 또는 더 오래 사용되는 브랜치의 경우 병합없이 저장소간에 더 편안하게 공유되는 명명 된 브랜치를 사용합니다. 또한 선택적으로 병합하려는 경우 "느낌"이 더 좋습니다.

기본적으로 나는 이것을 이렇게 봅니다.

  • 명명 된 분기는 앱의 다른 분기 또는 버전을 개발하기위한 것입니다.
  • 클론은 앱의 동일한 버전에 대한 다양한 기여를 관리하기위한 것입니다.

그것이 실제로는 정책의 문제이지만 내 생각입니다.


질문 1의 경우 "변경"이 의미하는 바에 대해 좀 더 명확해야합니다. 다음 중 무엇을 의미합니까?

  1. "다른 브랜치의 변경 세트 중 일부를이 브랜치로 가져오고 싶습니다."
  2. " 다른 분기에있는 파일 의 전부는 아니지만 일부의 최신 버전을이 파일 로 가져오고 싶습니다 ."

항목 1을 의미하는 경우 Transplant 확장, 특히 몇 가지 변경 집합을 선택하는 아이디어를 살펴 봐야합니다.

항목 2를 의미하는 경우 다음을 수행합니다.

  • 변경 사항을 가져올 분기로 업데이트하십시오.
  • hg revert -r <branch you want to merge> --include <files to update>해당 파일의 내용을 다른 분기에있는 방식으로 변경하는 데 사용 합니다.
  • hg commit이러한 변경 사항을 분기에 새 변경 집합으로 커밋하는 데 사용 합니다.

질문 2에 관해서는, 나 자신을 분기하기 위해 저장소 클론을 사용하지 않기 때문에 모르겠습니다. 명명 된 분기 또는 익명 분기를 사용합니다 (때로는 책갈피가 있음).


또 다른 옵션이 있습니다. 수은 대기열입니다.

아이디어는 현재 작업 디렉토리 위에 패치 스택 (커밋 없음, "실제"패치)을 갖는 것입니다. 그런 다음 적용된 패치를 추가 또는 제거하고, 하나를 추가하고, 제거하고, 다른 패치를 추가하는 등의 작업을 수행 할 수 있습니다. 하나의 단일 패치 또는 그 하위 집합은 분기에서 수행하려는 새로운 "기능"이됩니다. 그런 다음 평소와 같이 패치를 적용 할 수 있습니다 (변경 사항이므로). 다른 사람과 함께 작업하면 브랜치가 더 유용 할 것입니다 ...?

참고 URL : https://stackoverflow.com/questions/448567/best-practices-in-mercurial-branch-vs-clone-and-partial-merges

반응형