2009-05-15 5 views
7

현재 asp.net 애플리케이션을 소스 세이프에서 TFS로 마이그레이션하고 있습니다. 현재 핵심 라이브러리 (서비스, 비즈니스 로직, 엔티티, 데이터 액세스 등)를 공유하는 3 ~ 4 개의 매우 유사한 앱 (전자 상거래라고합시다)이 있습니다.TFS에서 프로젝트 간 공유 코드 병합 및 분기

응용 프로그램은 내가 (즉, 맞는 경우) 코드의 공유와 대신 설정 지점을 중지 할 유사하지만 동일하지 그래서 하나의 응용 프로그램은 기능 등

을받지 않습니다 다른 사람을 설정받을 수 있습니다 Application A : s 핵심 라이브러리에서 무언가를 변경하면 변경 사항을 자동으로 가져 오는 대신 다른 분기와 병합해야합니다. 트렁크에서 업데이트 할 때 놀라움을 피하기 위해 갑자기 핵심 프로젝트가 다른 프로젝트로 변경되어이 프로젝트가 어떤 식 으로든 중단됩니다.

TFS에서 어떻게 설정해야합니까? 다른 코어의 부모 인 모든 프로젝트에서 직접 사용하지 않는 "메인"코어를 하나의 코어에서 변경 한 다음 다른 코어에 배포 할 수 있도록해야합니까? 그것이 의미가 있으며 TFS에 쉽게 설치할 수 있습니까?

답변

3

귀하의 의견에 따라 Feature branchesCodePlex 웹 사이트에서 의견을 제시해주십시오.

시나리오 4 -이 시나리오에서는 기능
에 대한 지점, 당신은 개발 브랜치를 생성, 지점에서 작업을 수행 한 다음 메인 소스 트리로 다시 작업 을 병합합니다. 제품 특징에 따라 개발 지점을 구성하십시오. .

내 팀 프로젝트

 Development -> Isolated development branch container 
     Feature A -> Feature branch 
      Source 
     Feature B -> Feature branch 
      Source 
     Feature C -> Feature branch 
      Source 
     Main  -> Main Integration branch 
      Source 

우리는 ALOS 가까운 장래에 TFSSS에서 이동 : 다음 는 기능 개발을 위해 분기 을 보여주는 물리적이다.

내가 알기로, 우리는 SS 저장소를 온라인 상태로 유지하고 TFS에 새로 시작합니다. 우리의 프레임 워크은 아마도 TFS에 자체 프로젝트를 갖게 될 것입니다. 프로젝트 관련 공유 단위는 수시로 병합해야합니다.


리포지토리 구조는 사용자의 특정 상황에 따라 다릅니다. 모든 지점 시나리오에는 특정 장점과 단점이 있습니다.

  • 얼마나 많은 프로젝트
  • 얼마나 많은 개발자
  • 는 개발자가
  • 가 동시 핫픽스가 필요하십니까 최선을 다하고 있습니다
  • 당신이 서비스는 한 번 봐

팩 필요합니까 CodePlex branching guide으로 TFS 구조에 대한 정보에 근거한 결정을 내리는 데 필요한 모든 정보를 얻을 수 있습니다. cheat sheets을 인쇄하여 빠른 참조를 위해 벽에 고정하십시오.

이주의 메시지에 지점 계획, 에주의를 실행하기 전에 - 당신이 작성하는 모든 분기 는 비용이 그래서 당신은 그것에서 어떤 가치를 얻을 수 있는지 확인해야 않습니다. TFS에서 분기의 메커니즘은 단일 마우스 오른쪽 버튼 분기 명령으로 단순화됩니다. 그러나 분기 코드 의 총 비용은 감소 된 코드 속도로 주 코드로 병합되고 병합 충돌이 발생하며 추가로 테스트가 비용이 많이 듭니다.

+0

꽤 좋은 리소스입니다. 그러나 그것은 나의 딜레마를 해결하지 못합니다. 난 정말이 하나 개의 프로젝트 내에서 분기하는 방법에 대해 이야기하고 있지 않다 그러나 나는 몇 가지 코드 (다소)를 공유하는 세 가지 프로젝트가 대신있다. –

2

"사본"을 별도로 만들 필요가 있는지 여부를 이미 조사한 것으로 가정합니다. "팀 프로젝트"의 TFS 개념은 매우 큰 고수준 컨테이너라는 것을 기억하십시오. 대부분의 IT 상점이 "프로젝트"를 고려하는 것과 같은 것은 아닙니다. "Microsoft Vista"또는 "Office 2007"을 프로젝트로 생각하지 말고 팀 프로젝트 감각으로 "XYZ의 미수금 시스템"을 프로젝트로 생각하십시오.

TFS를위한 단일 팀 프로젝트를 결정한 클라이언트가 있습니다. 이것에 아무런 문제가 없습니다 - 그리고 그것은 많은 경우에있어서 가장 좋은 시나리오입니다.

응용 프로그램 사본간에 별도의 강력한 격리가 필요하고 별도의 팀 프로젝트가 있어야합니다.

당신이 말했듯이 여전히 애플리케이션 인스턴스간에 코드를 공유해야합니다. 내가 강하게 권하는 첫 번째 방법은 "잘라 내기 및 붙여 넣기"공유에서 벗어나는 것입니다. 내가 진정으로 별도의 솔루션에 공유 코드를 분리하고 바이너리를 생성 할 것입니다 (아마도 당신은 이미 이런 짓을했습니다!)

이는 CodePlex의 TFS에 덮여 : http://tfsguide.codeplex.com/

나는했습니다 또 다른 방법 여러 클라이언트를 위해 - 공유 된 코드가 포함 된 팀 프로젝트를 갖는 것입니다. "Build"는 공유 코드에 대한 바이너리를 생성하고 "Deploy"는 "알려진 위치"(즉, 빌드 시스템의 UNC 공유)에 복사합니다.

" Framework "을 사용하여 단순히"AdditionalReferencesPath "항목 그룹을 사용하여 알려진 위치의 위치를 ​​포함 시켰습니다.

더욱이 -이 도구는 http://tfsdepreplicator.codeplex.com/이 도움이 될 수 있습니다. 이렇게하면 "프레임 워크"솔루션이 구축 될 때마다 "고객"프로젝트에 대해 자동으로 트리거되도록 빌드 할 수 있습니다.

0

간단히 말해서 'TFS 프로젝트'를 하나만 설정하고 다른 프로젝트를 정리하면됩니다. 즉,개별 응용 프로그램 및 각 공유 라이브러리를 하나의 TFS 프로젝트 아래에 별도의 폴더로 저장할 수 있습니다. 다른 방법은 각 개별 응용 프로그램에 공유 라이브러리의 특정 (바이너리) 빌드를 포함하는 것입니다. 그런 다음 각 응용 프로그램을 자체 TFS 프로젝트로 구성 할 수 있습니다. 즉, TFS를 사용하지 않고 변경 사항을 병합하거나 분기 할 수 없습니다. 명령 줄 (그리고 부팅 할 몇 가지 확실하지 않은 명령).