2013-04-27 4 views
1

일반 버전 제어 질문이 있습니다. 최근에 응용 프로그램을 작성하고 새로운 기능을 사용하여 현재 작업을 기반으로 계획을 세웠습니다.
내 의도는 두 가지 다른 응용 프로그램 ("my application", and "my application plus")로 끝나는 것입니다. 둘 모두 동일한 핵심 코드를 기반으로하지만 더 많은 기능이 내장 된 버전 중 하나입니다.
제 질문은 버전 관리 설정을 사용하는 방법이 있습니까? 두 개의 서로 다른 저장소 (내가 생각하기는하지만) 저장소 중 하나가 다른 저장소를 참조합니다.
기본적으로 하나의 응용 프로그램에서 핵심 요소 중 하나를 변경하면 둘 다 변경됩니다.여러 버전으로 버전 관리

브랜칭이 대답 일지 모르지만, 브랜치는 나중에 빌드를 중단하거나 중단하지 않고 나중에 다시 병합하려는 의도로 약간의 코드 섹션을 만드는 데 사용되었다고 생각했습니다. 내 시나리오는 조금 다릅니다.

아이디어가 있으십니까?

+2

버전 관리와 변형을 분리하는 것이 좋습니다. 즉, 다른 소프트웨어 모듈이 아닌 다른 (빌드) 구성으로 변형을 구현하는 것이 좋습니다. – nosid

+1

코어 라이브러리에 코어 기능이 있고 코어 라이브러리에 링크 된 별도의 저장소에 애드온이 있습니다. – tripleee

답변

-1

일반적으로 분기를 돕는 시스템 (예 : git)을 사용하고 별도의 분기 (예 : master, master-plus)를 사용합니다. 모든 버전에서 git rebase (또는 git merge)이 기본 앱에서 더하기 버전으로 변경됩니다.

PS : 당신은 무조건 일부 플러그인 방식의 종류 및 두 가지의 repos

베이스 응용 프로그램이 이미 작성되어있는 경우
-1

와 동일한 기능을 수행 할 수 있고 당신은 서브 모듈에 대해 생각 나는 당신을 추천 그것의 확장 버전을 구현하고자하는 Git의 기능입니다 (여기에서 확인하십시오 : http://git-scm.com/book/en/Git-Tools-Submodules). 그것은 전체 응용 프로그램 또는 그것의 핵심에 대해서만 좋은 해결책이 될 수 있습니다. 그것을 사용하는 것을 고려하십시오.

1

예. 가능합니다.

필자는 최근에 최대 5 명의 동시 개발자가있는 프로젝트에서 다음 전략을 사용했으며 제대로 작동했습니다. 이 경우 base 코드는 핵심 독점 제품이며 plusbase 코드의 고객 맞춤입니다.

우리는 base과 같은 프로젝트 공간이 있습니다.

repo/ 
- base/ 
+ trunk 
+ branches 
+ tags 

plus에 대한 프로젝트 공간을 동일한 저장소에 만들었습니다.

repo/ 
-base/ 
+ branches 
+ tags 
+ trunk 

-plus/ 
+ branches 
+ tags 
[new trunk will go here] 

사용 svn copy

plus/trunkbase/trunk를 복제합니다.

baseplus은 이제 공통 조상을 공유합니다. plusbase/trunk을 주기적으로 plus/trunk에 병합하여 최신 상태로 유지합니다. 그리고 관례 상 우리는 플러스에서베이스로 합병되지 않았습니다.

Fork Strategy

투입 할 때 보장 개발자가 훈련 남아 있었다 (내가 발견) 가장 어려운 부분. base 코드를 plus에 넣고 나중에 다시 포트 할 수 있도록 코드를 시작하면 혼란에 빠지기 쉽습니다. 합병은 대개 매우 직설적이었다.

레코드의 경우 다시 svn에서이 작업을 수행하지 않으므로 git를 사용합니다. 나는 전에 그것을했기 때문에 svn 용어로 설명했다.

덧붙여 말하면, branch은 기능 분기, 핫픽스, 릴리스 통합, 공급 업체 분기 ... 모든 분기 등 여러 가지 목적으로 사용될 수 있지만 관습에 따라 다른 것을 의미합니다. 제가 묘사 한 것은 여전히 ​​길에있는 가지입니다. 관행에 의해서 원래의 줄기로 다시 통합되지 않는 것입니다. 일명 포크.