2009-11-19 3 views
6

SVN 저장소를 설정할 준비가되었으며 누군가 repo 구조에 대한 좋은 예가 있는지 궁금해하고있었습니다. 나는 현재 생각하고 :SVN 저장소 구조

개발
.. 응용 프로그램
.... 앱 1
...... 트렁크
...... 가지
...... 태그
.. 데이터베이스
.. 타사

이 구조는 아마도 우리가 필요로하는 모든 것을 잡을 수 있지만, 내가하고 싶습니다 그것은 조금 더 입자 화되었다. 이견있는 사람?

+0

당신은 "더 과립 조금"이란 무엇을 의미합니까? –

+0

granulated - 세분화되거나 입자가 나타납니다. - 무료 온라인 사전. 내 생각에 그는이 구조를 더 구체화하고 싶다고 생각했다. – mauris

+0

우리는 repo를 생성하는 시스템의 요구 사항을 모른 채 실제로 도움을 줄 수 없습니다. –

답변

12

우리는 비슷한 모델로 시작했지만 약간 성가신 것으로 나타났습니다. 주된 문제는 릴리스에서 코드베이스를 분기하려는 경우 각 구성 요소에 분기를 만들어야한다는 것입니다.

는 대신, 우리는 다음과 같은 방식을 고려했습니다

trunk 
    app1 
    app2 
    lib1 
    lib2 
    branches 
    rc-2.0 
     app1, app2, lib1, lib2... 
    some-devs-branch 
     app1, lib2 
    tags 
    release-1.0 
     app1, app2, lib1, lib2... 

내가 제 3 자 물건 완전히 별도의 repo를 가진 좋아한다. red bean book에서 전체 vendor-branching strategy을 구현하려는 경우가 아니라면 제대로 작동합니다.

0

SVN은 특정 시간 (예 : 릴리스 등에 사용할 수 있음)의 소스 트리의 '스냅 샷을 정시에'가져 오는 태그를 제공합니다.

하지만 저장소를 더 세분화하려는 경우 여러 저장소를 설정하는 것이 좋습니다.

물론 'trunk'폴더 내에서 소스 코드 제어를 사용하지 않을 경우 일반적인 디렉토리 계층 구조를 설정해야합니다.

2

우리도 이걸로 strugling했습니다.

일부 공유 라이브러리가 여러 응용 프로그램의 일부이고 동일한 버전의 모든 것을 갖고 싶다는 사실을 알게되었습니다. 그러므로 우리는 우리가하는 모든 것을 단 하나의 repostitory에두기로 결정했습니다. We 've는 2 년 이상 동안이 방법으로 일하고 있었고, 함께 일하는 것이 매우 좋다.

모든 구성에는 pro와 con가 있지만 전체 저장소가 하나만 있으면 모든 파일을 올바른 버전으로 함께 사용할 수 있습니다. 여러 트렁크로 작업하는 경우 가상 폴더 또는 링크가 포함 된 트릭이 있습니다 (용어를 잊어 버렸습니다). 서로 링크되어 있지만 실제로 있었던 지점으로 돌아가는 것은 매우 어렵습니다.

각각의 설정에는 프로와 단점이 있지만, 큰 회사가 아닌 경우 하나의 상위 폴더가있는 모든 저장소에 모든 것을 넣을 것을 제안합니다.

1

현재 나의 접근 방식은 하나의 저장소 아래에있는 모든 논리적 응용 프로그램 경계에서 시스템을 손상시키는 것입니다.

예를 들어, 또한 테스트 스위트를 가지고 서비스와이 프로젝트에 assoicated 여러 응용 프로그램을 가지고 우리를 할 수 있습니다

/project1/application1/ 
         trunk/ 
          Src 
          Test 
          Database 
         tags/ 
         branches/ 
     application2/ 
         trunk/ 
          Src 
          Test 
         tags/ 
         branches/      

데이터베이스를 상상하지만, 각 "논리적"어플리케이션 경계에 대한 제어를 해제 처리합니다. 릴리스 제어가 필요한 위치와 위치를 고려하여 지점/태그/트렁크 구조의 위치로 설정합니다.

전체 트렁크를 체크 아웃하고 싶지 않기 때문에 전체 저장소의 루트에있는 단일 트렁크/분기/태그 폴더가 마음에 들지 않으며 부분 분기 체크 아웃을 엉망으로 만들고 싶지 않습니다. 결과. (당신은 동의하지 않을 수 있으며 귀하의 마일리지는 다를 수 있습니다 등)

0

우리는 항상 각각의 "솔루션"에 대해 별도의 SVN 저장소를 만듭니다. 이 저장소는 단순한 트렁크, 분기 및 태그 구조를 갖습니다.

(우리가 소스 코드를 제어하는) 의존적 인 프레임 워크는 각각 별도의 저장소를 가지고 있습니다. 그런 다음 일반적으로 바이너리를 특정 프로젝트에 사용합니다.

0

모든 것에 대해 단일 저장소를 사용하면 거대한 저장소를 사용하는 것이 매우 빠를 가능성이 매우 높습니다. 즉, 일이 느리고 조금 추적하기가 어려울 수 있음을 의미합니다. 분명히, 그것은 당신의 정확한 유스 케이스에 달렸지 만, 개인적으로 나는 프로젝트 당 저장소를 선택하고 필요한 경우 svn : externals를 사용할 것이다.

사실, 난 SVN 가능하면 걸쳐 분산 VCS를 선택하는 것입니다 만, 각각의 자신에 ...