문제

나는 정책에 따라 특정 프로젝트에서 CVS를 사용해야 하는 의무가 있으므로 실제로 Git과 같은 다른 것으로 전환하고 싶어도 그렇게 할 수 없습니다.

그래서 내 실제 질문은 다음과 같습니다.우리는 릴리스를 할 때마다 CVS에 새로운 브랜치를 생성하는 관례가 있습니다(태그도 지정하지만 이는 요점을 벗어났습니다).우리는 이를 버전 브랜치라고 부르며 이를 통해 쉽게 특정 버전을 확인하고 핫픽스를 변경할 수 있습니다. 이것이 바로 마이너 릴리스입니다.

하지만 이제 대규모의 위험이 따르는 변경 사항이 다가오고 있으며 Git에서 작업 중이라면 눈 깜짝할 사이에 기능 분기를 생성하게 될 것입니다.그러나 CVS에서 작업하면서 다른 프로젝트에서 기능 브랜치를 생성하려고 시도했는데 상황이 금방 지저분해지는 것을 발견했습니다.결국 많은 브랜치를 갖게 되었고 어느 ​​브랜치가 동기화되었는지, 병합이 필요한 브랜치, 더 이상 사용되지 않는 브랜치를 추적할 수 없게 되었습니다.

그렇다면 물음표에 조금씩 가까워지면서 CVS에서 기능 분기를 사용하는 것이 가능할까요?그만한 가치가 있기에는 너무 많은 문제가 있습니까? 아니면 결국 사용하지 않은 것에 대해 후회하게 될까요?총알을 물고 HEAD에서 코딩을 시작해야 하지만 가능한 가장 눈에 띄지 않는 방식으로 변경 사항을 도입하기 위해 코딩 프로세스를 구부려야 할까요?

도움이 되었습니까?

해결책

기능 브랜치에서 개발하는 유일한 사람이라면 Git을 "샌드박스 개발" 시스템으로 사용하고 변경 사항이 완료되면 이를 CVS 저장소에 병합할 수 있습니다.

중간 작업 제품에 대한 소스 제어의 이점을 계속 얻을 수 있습니다.

다른 팁

분기 전략에 대한 훌륭한 토론이 있습니다 스트리밍 라인 도움이 될 수 있습니다 - 기능 분기 사용의 장점과 단점을 설명합니다.

또한 코드 라인 Owenership 및 구현하려는 정책에 대한 옵션도 다룹니다.

고려해야 할 한 가지는 실제로하는 것입니다 닫다 메인 트렁크와 다시 병합되면 기능 지점. 이러한 맥락에서, 닫는 것은 단순히 실제 삭제가 아니라 지점을 포기하는 것을 의미합니다.

작업이 병합되면 실제로 지점이 "존재"할 필요가 없습니다.

기능 분기가 어떤 지점인지 신속하게 식별하기 위해, 이름 지정 컨벤션 누출 "feat_my_feature"또는 "feat_20080926"(시작 날짜?)를 사용하는 것이 좋습니다. 이로 인해 저장소 구조를 탐색 할 때 모든 기능 분기를 쉽게 무시할 수 있습니다.

나는 이것이 일반적인 관행이었던 몇 년 동안 환경에서 일해 왔으며 정말 고통 스러웠습니다. 합병이 많은 시간을 소비하고 지연의 원천이기 때문에 프로젝트 계획의 일부인지 확인하십시오.

지점을 문서화하고 구체적인 책임을 지정하면 약간 도움이되었습니다.

우리는 두 가지가 분기되면 CVS가 잘 작동하지 않기 때문에 변경 사항을 점차적으로 병합하는 도구 (한 번에 한 번에 한 번 변경)를 만들어야했습니다.

종종 동기화 (적어도 일주일에 한 번).

회고 적으로 접근하는 가장 좋은 방법은 스크럼을 사용하여 다양한 이정표에서 발산이 최소화되고 위험한 발달을 분할하는 것입니다.

나는 또한 당신이 읽는 것을 권장합니다 SCM 패턴. 이 책에는 많은 좋은 조언이 포함되어 있습니다.

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