2016-08-08 12 views
0

현재 40 개 프로젝트로 구성된 C#의 대규모 솔루션이 있습니다..net 솔루션의 하위 프로젝트를 SVN에 개별적으로 체크인

다른 클라이언트를위한 두 번째 솔루션은 거의 동일하며 일부 프로젝트는 생략하고 첫 번째 솔루션에는없는 다른 프로젝트를 많이 사용합니다.

코드를 더 쉽게 관리 할 수 ​​있도록 개별 프로젝트로 SVN 솔루션에 포함 된 각 프로젝트를 확인하고 싶습니다. 그러나 시도한 SVN 클라이언트 중 아무 것도 수동으로 차례대로 각 프로젝트를 추가하지 않아도이를 지원하는 것으로 보입니다.

원하는 결과는 다음과 같습니다

1)은 다음 솔루션을 닫고, 클라이언트 A에 대한 솔루션을 열고 공통 프로젝트 2) 변경 사항을 커밋을 변경합니다. 3) 클라이언트 B의 솔루션을 엽니 다. '1'의 변경 사항은 클라이언트 B 솔루션에서 사용할 수 있습니다. 4) 클라이언트 B에만 해당하는 프로젝트를 변경합니다.이 작업이 커밋되면 '1'의 변경 사항이 보류 중으로 표시되지 않습니다.

AnkhSVN 및 VisualSVN을 사용해 보았습니다. 두 경우 모두 프로젝트를 선택하고 Add selected projects to Subversion을 실행하면 루트 솔루션을 추가 할 수 있지만 프로젝트는 개별적으로 추가 할 수 없습니다.

가장 가까운 곳은 Tortoise입니다.하지만 각 프로젝트를 수동으로 추가하는 작업은 많은 소스 프로젝트에서 실현 가능한 옵션이 아닙니다.

편집 : 일반적인 솔루션과 두 개의 개별 클라이언트 특정 솔루션을 사용하면 코드를 SVN으로 커밋하는 문제를 해결할 수 있지만 미리 컴파일해야 할 DLL에 대해 컴파일해야합니다.

처음에는이 방법을 실험했지만 VS가 DLL을 올바르게 다시로드하지 못하기 때문에 디버깅에 문제가있었습니다.

자동화 된 프로세스를 사용하여 프로젝트를 추가 할 수 있는지 여부는 확실하지 않지만 총알을 물고 코드를 작성하기 전에 제안을 환영합니다.

감사합니다.

답변

1

나는이 시나리오에서 3 개 토탈 솔루션을 추천 할 것입니다 :

  1. 클라이언트 해결책
  2. 클라이언트 B 솔루션
  3. 공통 솔루션

각각은 자신의 저장소로 백업 할 수 있습니다. 이제 공통 코드를 dll 집합으로 게시 할 수 있습니다 (또는 사설 Nuget 서버를 설정하고 일반적인 솔루션을 Nuget 패키지로 변환하여 멋지게 얻을 수 있음). 그리고 클라이언트 솔루션에서이를 참조하십시오.

+0

나는 이것을 선택 사항으로 생각했다. 문제는 우리가 테스트 할 때 디버깅을 위해 IDE에있는 전체 솔루션 코드가 필요하다는 것입니다. 처음에는 DLL에 대해 컴파일했지만 디버깅에 문제가있었습니다. 지금까지 일반적인 코드에 대한 Nuget repo는 내가 찾고자하는 것과 가장 비슷하지만 여전히 그다지 중요하지 않습니다. 나는 SVN이 이런 방식으로 사용되도록 설계된 적이 없다고 확신한다. – Alex

+0

그게 무슨 시험입니까 :) – Dave

+0

그래,하지만 지금은 코드베이스에 대한 단위 테스트가 많지 않습니다.나는 리팩토링과 테스트를 함께 진행하고 있지만 시간 제약으로 인해 매우 느리게 진행되었습니다. 우리는 최종 릴리스를 생성하기 위해 빌드 스크립트를 사용하지만 컴파일 된 아티팩트를 아직 서버로 푸시하지 않습니다. 본질적으로, 나는 Paven 지옥이없는 Maven 프로젝트와 비슷한 동작을 시도하고있다. – Alex