언제 멀티-모듈 프로젝트로 분할하고 있는 별도의 저장소 나무는?

StackOverflow https://stackoverflow.com/questions/14397

  •  08-06-2019
  •  | 
  •  

문제

현재 우리가 사용하여 프로젝트 기준 subversion 저장소의 레이아웃:

./트렁크
./점
./태그

그러나 우리는 아래로 움직이는 도로의 OSGi 및 모듈 프로젝트,우리는 우리로 끝났다:

./트렁크/뭉치/main
./트렁크/뭉치/modulea
./트렁크/뭉치/moduleb ./태그/뭉치/main-1.0.0
./태그/뭉치/main-1.0.1
./태그/뭉치/modulea-1.0.0

건'여전히 매우 모놀리식에서는 그들이 만드는 모든 모듈 순서대로,하지만 내가 궁금해하기 시작했다면 우리는 해야 리팩터링을 구축/저장소가 더 많은 다음과 같:

./번들/main/트렁크
./번들/main/태그/main-1.0.0
./번들/main/태그/main-1.0.1
./번들/modulea/트렁크
./번들/modulea/태그/modulea-1.0.0

이 본 내가 상상이 각 모듈 건물 자체가,그리고 저장하는 그것의 바이너리에서 저장소에(maven,아이비,또는 다른 경로의 파괴 저장소 자).

이 있는 가이드라인 또는'최고의 모범 사례를 통해'프로젝트를 레이아웃을 한 번에 하나가 모듈?

도움이 되었습니까?

해결책

Subversion 책에는 두 가지 섹션에 이:

블로그 항목에 제목: "전복은 저장소의 레이아웃"

짧은 대답만:하는 동안 당신의 마일이 달라집니다(모든 상황은 개인),의 /bundle/<project>/(trunk|tags|branches) 방식이 오히려 일반적인 가능성이 잘 작동한다.

다른 팁

이것은 매우 개인적인 기본 설정을 다음과 같은 구조에 적합한 대형 프로젝트로 구성된 많은 모듈:

branches
  project-name
    module1
      branch-name
    module2   
      possibly-another-branch-name
    branch-name-on-a-higher-level-including-both-modules
      module1
      module2
tags
  ... (same as branches)
trunk
  project-name
    module1
    module2

나도 자주 사용되는 구조에서 대형 저장소를 포함하는 많은 프로젝트이기 때문에,모든 프로젝트에서 같은 저장소 만든 크로스를 참조하는 프로젝트와 공유하는 코드 사이 그들과 함께 역사—더 쉽습니다.

내가 좋아하는 구조를 사용으로 루트 트렁크,태그 및 가지의 폴더에서 시작하기 때문에서의 경험(큰 저장소의 포함하는 많은 프로젝트),하 프로젝트와 모듈들이지 않는 별도의 범주 또는 가지도록 할 필요가 없 폴더 구조를 만듭니다.그것은 또한 쉽게 개발 체크아웃 전체의 트렁크에 저장소하지 모든 범주 및 분기(는 그들이 필요하지 않의 대부분은 시간).

나는 이제 프로젝트 또는 회사 정책을 하지만입니다.이 있는 경우 하나의 저장소에 대한 각 프로젝트 또는 특정 개발자만 가능성이 작업에 단일 프로젝트에서 저장소에서 시간 뿌리 렁지 않을 수 있습으로 많은 의미.

다만 나의...

나는 그냥을 강조하고 싶 의견에 SVN 문서(이미에서 인용하는 또 다른 대답이,같은 스레드) http://svnbook.red-bean.com/en/1.4/svn.reposadmin.planning.html#svn.reposadmin.projects.chooselayout

발췌한 참조 다음과 같이 구성됩니다./ 트렁크/ calc/ 일정/ 스프레드시트/ ... 태그/ calc/ 일정/ 스프레드시트/ ... 점/ calc/ 일정/ 스프레드시트/

"아무것도 없는 특히 잘못되었에 대해 같은 레이아웃이지만,그것은 또는 보이지 않을 수도 있습니다으로 직관적 인 사용자를 위해.특히 큰,다중 프로젝트 상황에 많은 사용자가 사용하는 사용자 하는 경향이 있습에 익숙해야만 하나 또는 두 개의 프로젝트에서 저장소에 있습니다.하지만 프로젝트로부 형제자매하는 경향이 강조하는 프로젝트 개성과에 초점을 맞추 전체의 설정 프로젝트를 하나의 엔티티입니다.는 사회적 문제이지만.우리는 같은 우리는 원래는 제안 배열에 대한 순수하게 실제적인 이유—의 요청에 대한(하거나 수정,또는 마이그레이션을 다른 곳에)역사 전체의 단일 프로젝트가 있을 때의 단일 저장소 경로를 보유하고 전체 기록—과거,현재,태그 지정,분지에 대한 프로젝트는 프로젝트를 혼자입니다."

내 자신,내가 동의하는 경향이있는 매우 강력하게와 이와 선호하는 다음의 레이아웃:/ utils/ calc/ 트렁크/ 태그/ 점/ 일정/ 트렁크/ 태그/ 점/ ... 사무실/ 스프레드시트/ 트렁크/ 태그/ 점/

는 이유는 단순히는 것이 적절하지 않은 태그를 완료 프로젝트를 설정할 때 원하는 것을 태그만 특정 하위 집합.

의 예를 사용:는 경우 프로젝트 1 에 따라 달라집 moduleA v1.1moduleB v2.3,나는 원하지 않는 새로운 moduleA v2.x 표시에 태그가 있습니다.사실에서,돌아올 때 어떤 일/주/개월 후 이 태그 릴리스,나는 것이 강제로 열어 번들을 설명자에 태그가 있는 버전의 프로젝트 1 을 읽 버전의 moduleA 실제로 필요합니다.

또한,필요한 경우에는 특정의 백업 이 릴리스의 원본 CD 에 저는 그냥 내보내려는 이 태그 다운로드하지 않고 수백 개의 메가바이트 관련이 없는 물건입니다.

그것은 그냥 내 두 개의 센트입니다.

내가 응답되는 비슷한 질문에서 유래 버전은 제어 구조 질문.실제로 그것을 맞는 더 나은 여기 때문에 우리가 하는 무거운 OSGi 개발을 많이 가지고 번들.나 echo Anders 산비 comments:유지 트렁크/태그/지점에 뿌리 수준을 것이기 때문에만점의 제한된 모듈이 있습니다.그것은 또한을 방해하지 않는 모듈을 개별적으로 구축.

내가 복사되지 않습 응답을 했지만 그것은 전적으로 관련 이 질문입니다.

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