소스 컨트롤 브랜치 구축
-
21-08-2019 - |
문제
현재 업무용으로 다양한 소스 제어 솔루션을 평가 중이며 분기에 대해 몇 가지 질문이 있습니다.
나는 분기하는 방법에 대한 기본적인 이해를 가지고 있지만 빌드 시스템(CruiseControl.net)이 분기를 가져와 빌드할 수 있는 방법을 잘 모르겠습니다.
우리는 다른 프로젝트에 의존하는 많은 프로젝트를 가지고 있습니다.유틸리티 > 데이터 액세스 > 비즈니스 로직 > 공통 GUI > (웹 사이트 | 데스크톱 클라이언트)
저장소를 어떻게 구성합니까? (차이가 있는 경우 Vault) 빌드 머신이 다음을 수행할 수 있도록 합니다.
- 트렁크 만들기
- '최신' 브랜치 구축
대략적인 폴더 구조 및/또는 CruiseControl에서 이동하는 방법에 대한 설명이 있으면 좋을 것입니다.
감사해요
편집하다:
명확성을 더하기 위해 개발에는 트렁크를 사용한 다음 각 릴리스마다 브랜치를 사용할 예정입니다.
해결책
Mark가 제안한 솔루션은 프로젝트의 릴리스 주기가 다른 경우에 잘 작동합니다(프로젝트 1의 버전은 1.0이고 프로젝트 2의 버전은 이미 1.1입니다).모든 프로젝트가 상호 의존적이라면 간단한 구조로 시작하겠습니다.
My Big Project
|
+-- trunk
| |
| +-- utils
| |
| +-- data
| |
| +-- business
| |
| +-- gui (web)
| |
| +-- gui (swing)
|
+-- branches
|
+-- tags
그렇게 하면 분기가 확실하게 이루어집니다. 모든 것 (전체 코드) 브랜치/태그를 수행할 때.그렇지 않으면 태그를 지정할 때 항상 하나의 프로젝트를 놓칠 위험이 있습니다.
빌드 서버는 단순히 트렁크(모든 항목 포함) 또는 하나의 태그/분기(모든 항목 포함)를 확인하고 릴리스를 빌드/설치합니다.
utils 패키지가 안정되면 언제든지 형제 프로젝트로 "업그레이드"하고 Maven/Ivy를 사용하여 종속성을 관리할 수 있습니다.
다른 팁
'최신 지점'이란 무엇을 의미합니까? 지점은 트렁크 외부의 확장 된 devlopment에 사용해야합니다 - 트렁크는 언제나 최신 생산 코드를 포함합니다.
각 프로젝트에는 있어야합니다 trunk
그리고 branches
폴더 :
Project 1
|-> trunk
|-> branches
Project 2
|-> trunk
|-> branches
etc.
그런 다음 빌드 머신은 원하는 곳에 트렁크 또는 분기를 로컬로 체크 아웃 할 수 있습니다 (상호 연결 프로젝트의 경우 상대 디렉토리 경로가 작동하도록 설정해야합니다). pseudoscript에서 :
checkout project1/trunk /builds/project1
build /builds/project1
그리고
checkout project1/branches/myBranch /builds/project1
build /builds/project1
블라디미르의 체계에서 태그와 가지가 어떻게 사용되는지 명확하게하기 위해. 제품의 버전 1.x가 은퇴했고, 버전 2.1이 전 세계에 있으며 버전 3.0에서 작업하고 있다고 가정 해 봅시다.
trunk <- you're working on version 3.0 here
project1
project2
branches
ReleaseBranch-1.0
ReleaseBranch-2.0 <-- fixes to version 2.1 (the current production version) get committed here, then merged into the trunk
tags
Release-1.0 <-- a copy of the source that was used to build version 1.0
Release-1.1
Release-1.2
Release-2.0
Release-2.1
지속적인 통합/빌드 서버에는 두 가지 프로세스가 필요합니다.
- 버전 제어 시스템의 트렁크를 가리키는 것
- 버전 제어 시스템에서 ReleaseBranch-2.0을 가리키는 것
그 책 전복이있는 실용적인 버전 제어 전복을 위해 설계되었지만 위에서 설명한대로 저장소를 구성하는 방법으로 이동합니다.