문제

현재 업무용으로 다양한 소스 제어 솔루션을 평가 중이며 분기에 대해 몇 가지 질문이 있습니다.

나는 분기하는 방법에 대한 기본적인 이해를 가지고 있지만 빌드 시스템(CruiseControl.net)이 분기를 가져와 빌드할 수 있는 방법을 잘 모르겠습니다.

우리는 다른 프로젝트에 의존하는 많은 프로젝트를 가지고 있습니다.유틸리티 > 데이터 액세스 > 비즈니스 로직 > 공통 GUI > (웹 사이트 | 데스크톱 클라이언트)

저장소를 어떻게 구성합니까? (차이가 있는 경우 Vault) 빌드 머신이 다음을 수행할 수 있도록 합니다.

  1. 트렁크 만들기
  2. '최신' 브랜치 구축

대략적인 폴더 구조 및/또는 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을 가리키는 것

그 책 전복이있는 실용적인 버전 제어 전복을 위해 설계되었지만 위에서 설명한대로 저장소를 구성하는 방법으로 이동합니다.

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