2011-09-01 5 views
0

복수를 유지하는 방법 관련 Visual Studio 솔루션/프로젝트를 SVN 리포지토리 (또는 여러 리포지토리)로 구성 했습니까?svn의 솔루션 구성

예.

/svnroot 
    /common 
     /trunk 
     /Company.Core 
     /Company.Connections 
     /Company.Data 
    /app1 
     /trunk 
     /A1.DAL 
     /A1... 
    /app2 
     /trunk 
     /A2.DAL 
     /A2... 

그 이유는 그들이 공통의 프로젝트를 사용하기 때문에,

+ Application_1 
    - Company.Core 
    - Company.Connections 
    - Company.Data 
    - Company.A1.DAL 
    - Company.A1.BL 
    - Company.A1.UX 

+ Application_2 
    - Company.Core 
    - Company.Connections 
    - Company.Data 
    - Company.A2.DAL 
    - Company.A2.BL 
    - Company.A2.UX 

오른쪽하지 Application_1 및 Application_2 모두 동일한 SVN 루트공유 : 나는 두 응용 프로그램 몇 가지 일반적인 프로젝트를 공유 (솔루션)가 이는 모든 릴리즈가 공통 폴더에서 사용 가능한 최신 어셈블리를 가지며 각 머신에서 체크 아웃이 항상 일관성을 유지한다는 것입니다.

그래서 내가 알고 싶은 것입니다 :

  • 는 각 솔루션이 실제로 자신의 저장소를해야합니까?
  • 그렇다면 공통 프로젝트를 어떻게 공유하고 최신 상태로 유지해야합니까?
  • 공통 어셈블리를 이미 빌드 된 종속성 (.dll)으로 추가하고 각 솔루션 리포지토리에 개별적으로 커밋합니까? 어떻게 그러한 빌드를 자동화합니까?

답변

2

리포지토리를 설정하는 방법은 전적으로 귀하에게 달려 있으며 조직에서 어떻게 작동하는지 전적으로 다릅니다. 저는 이것을 위해 여러 가지 접근법을 보았습니다. 그리고 수년에 걸쳐 확실한 조언을 찾지 못했습니다.

마지막 부분이 심하게 작성된

그건 편집. "조언이 없다"는 말은 "다음과 같이 저장소를 구성해야합니다 ..."라는 조언이 전혀 없다는 것입니다. 모든 조언은 "이것이 우리에게 효과가있는 것"이며 모든 조언은 repo 레이아웃은 이고 레이아웃은 다양합니다. 그래서 저는 "모든 조직에 적용되는 충실한 조언"을 의미하지 않았습니다.

최종 편집하지만, 저장소는 우리가 얼마나 매우 가까운 구성되어있다. 우리는 수 백개의 프로젝트를 가지고 있고 루트에서 몇 개의 노드를 가지고 있습니다. 이들 모두는 동일한 저장소에 있습니다.

다른 노드의 솔루션에서 프로젝트에 대한 참조로 추가하는 공통 기능을 가진 프로젝트를 보유하고있는 공용 디렉토리가 있습니다. 그것은 우리가 시행 착오 과정에서 많은 구조 조정을 통해 얻은 것입니다. 그리고 그것은 우리를 위해 일하는 hth 것입니다. 그래서 당신의 구조에 대한 엄지 손가락을 줄 것입니다.

내가 당신이 트렁크를 오는 설명한 구조를 하나 명의 저장소를해야한다고 생각 특정 지점
  • 대답합니다.
  • 이렇게하면 코드를 한 번의 결제로 얻을 수 있으므로 모든 것을 유지 관리하고 최신 상태로 유지하기가 쉽습니다. 모든 항목이 동일한 저장소에 있으므로 참조를 추가하기 만하면됩니다.
  • 마지막으로 우리의 일반적인 경험 법칙은 항상 필요한 경우 프로젝트에 참조를 추가하고 일반적인 dll이 필요한 곳을 제외하고는 바이너리를 체크인하지 않으며 소스가 없습니다 (예 : 세 번째 부분 구성 요소). 예를 들어 우리는 "common"폴더의 "shared dlls"에 Microsoft.AntiXss dll과 Idunno.Anti-Csrf dll이 있습니다.

부수적으로,이 구조는 또한 빌드 서버를 쉽게 설정할 수있게했습니다. CruiseControl.NET 빌드 서버를 설정하면 Visual Studio에서와 마찬가지로 .sln 파일을 가리켜 한 번만 체크 아웃하고 빌드 할 수 있습니다. 하나의 레포에서 그것을 가지고 내가 방금 만든 지침에 따라 우리의 빌드를 설정하는 것이 매우 쉬워졌습니다.

+0

고마워요, 저는 우리가 정말로 나쁜 것을하고 있다고 생각했지만, 이것들은 모두 유효합니다. 나는 바이너리를 체크인하고 싶지 않다. 그리고 우리 repo를 여러 repos로 나누면 아마도 필요할 것이다. – dilbert