2011-10-07 5 views
2

기사의/품질 관리을/자주 묻는 질문/책을 많이 읽은 후 나는 스키마 버전 관리 프로젝트 버전 (간의 호환성을 설명 에 가 [전공]. [MINOR가]. [REV]를 가장 유용한 버전 스키마가 생각하는가 개발자, 마케팅을위한 것이 아닙니다).버전에서 버전/빌드 구성 요소를 어떻게 유지합니까?

주요 변경 사항은 호환되지 않는 뒤로하고

사소한 변경은 역 호환 등 파일의 GUID에 프로젝트 이름, 경로를 변경이 필요합니다. 새로운 기능 소개를 표시하십시오.

보안/버그 수정을 위해 REV. 역방향 및 순방향 호환.

많은 프로젝트가 릴리스 서버 (FTP)에 을 저장 한 내부 라이브러리에 의존합니다. 종속 라이브러리에

 
    1.0.0 
    1.1.0 
    1.1.1 

경로 LIB 디렉토리에 자동 다운로드에 대한 빌드 스크립트로 코딩 버전의 구성 요소 및 하드 을 포함한다 : 그들은처럼, 서로 다른 버전이있다.

질문 : 집 개발을위한 빌드 스크립트 에 라이브러리 경로를 포함시키는 것이 일반적인 관행입니까?

질문 : 라이브러리 이름에 버전 번호를 포함 시키거나 을 포함하지 않는 것이 가장 좋습니다. 포함 할 구성 요소는 무엇입니까? 예를 들어 당신이 포함 된 경우

 
    libfoo-1.so 
    libfoo-1.2.jar 
    libfoo-2.3.14.dll 

[MAJOR] 당신이 소스 에 libary 이름을 인라인 수 있으며, 버전 변경으로 당신이 어떤 코드를 수정할 필요가 없습니다. 라이브러리의 이름은 고정되어 있으므로 런타임에 라이브러리 버전을 요청할 수 있습니다 (적절한 함수 호출).

당신이 포함 된 경우 [MAJOR]. [MINOR] 구성 요소에 영향을받는 모든 프로젝트를 업데이트 할 필요 모든 사소한 변화 (을 LoadLibrary에 대한 호출을 CLASSPATH의 ENV var에). 그리고 런타임에 라이브러리를 검색하기위한 표준 메커니즘은 보통 과 같이 와일드 카드 (예 : "libbar-2. *")로로드 할 수 없으므로 런타임에 버전을 확인할 수 없습니다.

[REV]을 포함한다고 생각합니다. 이 구성 요소를 어떻게 든 버그 보고서로 제공하기 만하면 이 필요합니다.

질문 : 같은 경로에 패키지 출시 : 나는 그런 스키마를 실현하기 위해 계획

 
    /srv/projs/foo/1.2.2 

이전 경로에서

 
    /srv/projs/foo/1.2 

에 심볼릭 링크를 만들었습니다. 따라서 모든 종속 프로젝트에서는 최신 라이브러리를 얻으려면 어떤 단계를 거치지 않아도됩니다. 어느 누구도 그러한 스키마를 사용합니까?

+0

http://groups.google.com/group/comp.software.config-mgmt/browse_thread/thread/3c80ada4047720f0# – gavenkoa

답변

2

여전히 (임의의) SCM을 사용하지 않으면 잘못된 경로에 있습니다.당신이 사용 SCM과 통합 될 수 빌더를 사용하지 마십시오 경우 - 당신은 (* 어떤 버전 번호 거기에없이) 파일을 다시

영구적 이름이 잘못된 길을 유지하는 가장 쉬운 방법입니다 소스 (빌드시에는 아무 것도 수정하지 말아야 함)

+0

같은 질문을 던집니다. SCM : Software Configuration Management라고 할 때? – gavenkoa

+0

아니요, ** 여기 ** 저는 (부분적으로, 일부 영역에서는) 소프트웨어 구성 관리로도 작동하는 "소스 제어 관리"에 대한 SCM에 대해 말했습니다. SVN 및 외부 + 태그, 또는 Mercurial + 서브 모듈 –

관련 문제