2013-01-07 4 views
2

VSS2005에서 VisualSVN으로 코드를 마이 그 레이션하려고합니다 (동시에 TeamCity에 추가).공유 공통 코드 (SVN으로 이동)로 여러 개의 작은 솔루션을 구성하는 방법

이것은 코드 파일/폴더를 재구성 할 수있는 기회를 제공하며, "지역"이나 모든 프로젝트에 공통된 코드가 포함 된 여러 개의 작은 솔루션을 구성하는 방법에 대한 조언을 찾고 있습니다. .

winforms, MVC3 사이트, 콘솔/서비스 응용 프로그램 등 일반적으로 특정 부서와 관련된 많은 작은 내부 응용 프로그램이 있습니다. 대부분의 부서에는 함께 일하는 것에 대한 "공통"코드가 있으며 대부분의 프로젝트에 공통적 인 확장 방법과 같은 일반적인 코드가 있습니다.

기본적으로 VS2010은 .sln 파일을 포함하는 "솔루션"폴더를 만들고 그 아래에 "Project"폴더를 만듭니다. 즉 모든 것이 잘 이산 의미 -하지만 프로젝트를 공유하는 프로젝트는 당신이 무엇을 참조 할 수 있습니다 알고

"특정 솔루션"을 표시하기 때문에, 더 어렵지만, 특정 디스크의 구조가 "외모"솔루션

CommonCode 
--CCProj1 
--CCProj2 
HR.ServiceApp 
-HR.ServiceApp.sln 
--HR.SmallApp1.DAL 
--HR.SmallApp1.Service 
HR.WinFormsApp 
-HR.WinFormsApp.sln 
--HR.SmallApp2.DAL 
--HR.SmallApp2.WinForms 

대안은 다음과 같이 구조화 될 수있다 : 하나 개의 폴더에 모든 HR 코드를 배치

CommonCode 
--CCProj1 
--CCProj2 
HR 
-HR.Service.sln 
-HR.WinForm.sln 
--HR.DAL 
--HR.Service 
--HR.WinForms 

을 -하지만 여러 솔루션을 새로운 사용자를위한 약간 불분명 될 수 있을까?

(특히 SVN로의 이동에 주목) 다른 사람들이 일반적으로 아주 기꺼이받을 것입니다 않습니다 무엇에 대한 조언


또 다른 대안

HR 
-HR.Common 
--HR.Common.Repository 
---HR.Common.Repository.sln 
----HR.Common.DAL 
-----HR.Common.DAL.csproj 
----HR.Common.BLL 
-----HR.Common.BLL.csproj 
-HR.Services 
--HR.Services.Service1.sln 
---HR.Services.Service1 
----HR.Services.Service1.csproj 
--HR.Services.Service2.sln 
---HR.Services.Service2 
----HR.Services.Service2.csproj 

답변

1

논리적 인 소프트웨어 구성과 SVN 구조를 분리하여 관리해야한다고 생각합니다.

- common_code_1 
- common_code_2 
- project_one 
- project_three 
- winform01 
- humanresources_MVC3_site 
- console_service_app01 

프로젝트와 공통 코드의 내부 구조는 원하는 모양과 논리적 실행 종속 사이에있을 수 있습니다 : "일반적인 구조가"

- trunk 
    - <general structure> 
- branches 
    - release_bugfix01 
     - <general structure> 
    - release02_rc1 
     - <general structure> 
- tags 
    - release01 
    - release02 

:이 같은 일반적인 구조를 만들 것 프로젝트 및 공통 코드는 저장소 외부에서 정의되어야합니다.

당신은 SVN Book

+0

감사의 표준 레이아웃에 대한 자세한 내용을보실 수 있습니다 - 그러나, 이것은 "일반적인 구조는"모두 함께 묶여 있음을 의미합니까? 아니면 내가 잘못 생각하고 있니? 비록 "라이브러리"유형 코드도 공유하고 있지만 실제로는 거의 프로젝트 중 일부만 서로 관련되어 있습니다 (코드 용어). – BlueChippy

+0

또한 SVN의 빠른 "재생"에서 프로젝트에도 트렁크/분기/태그 폴더가있는 것으로 나타 났습니까? 내 T/B/Tg 안에 T/B/Tg가 있습니까? – BlueChippy

+0

레이아웃을 선택할 수 있습니다. 모든 프로젝트가 진행되거나 프로젝트 (및 공통 코드)가 있고 각 T/B/Tg 레이아웃 내부에 하나의 트렁크 만있는 전체 저장소를 브랜치하고 태그하도록 전역 T/B/Tg를 정의 할 수 있습니다. 프로젝트 개발주기를 더 많이 알지 못해도 저장소 레이아웃을 정의하는 것은 프로젝트/프로젝트 수명주기입니다. 더 말할 수 없습니다. –

2

구조에 대한 답변에 대한 질문 더 귀하의 팀보다 Q & 사이트. 당신이 보여 주었던 것처럼 다양한 해결책이 있으며 각각은 그 장점을 가질 것입니다. 그것은 당신 팀에 가장 안성맞춤 인 것에 달려 있습니다.

이 점이 SVN과 어떻게 관련되어 있는지에 대해서는 - 그렇지 않습니다. SVN을 사용하면 IDE/프로그래밍 언어 등 불가지론 자처럼 구조화 할 수 있습니다.

그러나 과도기에있는 동안 할 수있는 일은 다양한 코드로 구성된 여러 가지 분기를 만드는 것입니다 구조를 사용하여 각기 다른 방식으로 팀에 데모 할 수 있습니다. 일단 결정을 내리면 최고의 코드를 트렁크에 병합하십시오. 이 브랜치를 관리하려면 SVN 저장소의 최상위 레벨에 트렁크, 분기 및 태그 폴더가 있어야합니다.