SVN 저장소를 설정할 준비가되었으며 누군가 repo 구조에 대한 좋은 예가 있는지 궁금해하고있었습니다. 나는 현재 생각하고 :SVN 저장소 구조
개발
.. 응용 프로그램
.... 앱 1
...... 트렁크
...... 가지
...... 태그
.. 데이터베이스
.. 타사
이 구조는 아마도 우리가 필요로하는 모든 것을 잡을 수 있지만, 내가하고 싶습니다 그것은 조금 더 입자 화되었다. 이견있는 사람?
SVN 저장소를 설정할 준비가되었으며 누군가 repo 구조에 대한 좋은 예가 있는지 궁금해하고있었습니다. 나는 현재 생각하고 :SVN 저장소 구조
개발
.. 응용 프로그램
.... 앱 1
...... 트렁크
...... 가지
...... 태그
.. 데이터베이스
.. 타사
이 구조는 아마도 우리가 필요로하는 모든 것을 잡을 수 있지만, 내가하고 싶습니다 그것은 조금 더 입자 화되었다. 이견있는 사람?
우리는 비슷한 모델로 시작했지만 약간 성가신 것으로 나타났습니다. 주된 문제는 릴리스에서 코드베이스를 분기하려는 경우 각 구성 요소에 분기를 만들어야한다는 것입니다.
는 대신, 우리는 다음과 같은 방식을 고려했습니다
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을 구현하려는 경우가 아니라면 제대로 작동합니다.
SVN은 특정 시간 (예 : 릴리스 등에 사용할 수 있음)의 소스 트리의 '스냅 샷을 정시에'가져 오는 태그를 제공합니다.
하지만 저장소를 더 세분화하려는 경우 여러 저장소를 설정하는 것이 좋습니다.
물론 'trunk'폴더 내에서 소스 코드 제어를 사용하지 않을 경우 일반적인 디렉토리 계층 구조를 설정해야합니다.
우리도 이걸로 strugling했습니다.
일부 공유 라이브러리가 여러 응용 프로그램의 일부이고 동일한 버전의 모든 것을 갖고 싶다는 사실을 알게되었습니다. 그러므로 우리는 우리가하는 모든 것을 단 하나의 repostitory에두기로 결정했습니다. We 've는 2 년 이상 동안이 방법으로 일하고 있었고, 함께 일하는 것이 매우 좋다.
모든 구성에는 pro와 con가 있지만 전체 저장소가 하나만 있으면 모든 파일을 올바른 버전으로 함께 사용할 수 있습니다. 여러 트렁크로 작업하는 경우 가상 폴더 또는 링크가 포함 된 트릭이 있습니다 (용어를 잊어 버렸습니다). 서로 링크되어 있지만 실제로 있었던 지점으로 돌아가는 것은 매우 어렵습니다.
각각의 설정에는 프로와 단점이 있지만, 큰 회사가 아닌 경우 하나의 상위 폴더가있는 모든 저장소에 모든 것을 넣을 것을 제안합니다.
현재 나의 접근 방식은 하나의 저장소 아래에있는 모든 논리적 응용 프로그램 경계에서 시스템을 손상시키는 것입니다.
예를 들어, 또한 테스트 스위트를 가지고 서비스와이 프로젝트에 assoicated 여러 응용 프로그램을 가지고 우리를 할 수 있습니다
/project1/application1/
trunk/
Src
Test
Database
tags/
branches/
application2/
trunk/
Src
Test
tags/
branches/
데이터베이스를 상상하지만, 각 "논리적"어플리케이션 경계에 대한 제어를 해제 처리합니다. 릴리스 제어가 필요한 위치와 위치를 고려하여 지점/태그/트렁크 구조의 위치로 설정합니다.
전체 트렁크를 체크 아웃하고 싶지 않기 때문에 전체 저장소의 루트에있는 단일 트렁크/분기/태그 폴더가 마음에 들지 않으며 부분 분기 체크 아웃을 엉망으로 만들고 싶지 않습니다. 결과. (당신은 동의하지 않을 수 있으며 귀하의 마일리지는 다를 수 있습니다 등)
우리는 항상 각각의 "솔루션"에 대해 별도의 SVN 저장소를 만듭니다. 이 저장소는 단순한 트렁크, 분기 및 태그 구조를 갖습니다.
(우리가 소스 코드를 제어하는) 의존적 인 프레임 워크는 각각 별도의 저장소를 가지고 있습니다. 그런 다음 일반적으로 바이너리를 특정 프로젝트에 사용합니다.
모든 것에 대해 단일 저장소를 사용하면 거대한 저장소를 사용하는 것이 매우 빠를 가능성이 매우 높습니다. 즉, 일이 느리고 조금 추적하기가 어려울 수 있음을 의미합니다. 분명히, 그것은 당신의 정확한 유스 케이스에 달렸지 만, 개인적으로 나는 프로젝트 당 저장소를 선택하고 필요한 경우 svn : externals를 사용할 것이다.
사실, 난 SVN 가능하면 걸쳐 분산 VCS를 선택하는 것입니다 만, 각각의 자신에 ...
당신은 "더 과립 조금"이란 무엇을 의미합니까? –
granulated - 세분화되거나 입자가 나타납니다. - 무료 온라인 사전. 내 생각에 그는이 구조를 더 구체화하고 싶다고 생각했다. – mauris
우리는 repo를 생성하는 시스템의 요구 사항을 모른 채 실제로 도움을 줄 수 없습니다. –