>

TFS Ranger 팀이 제공 한 모범 사례에 따라 TFS를 구성하는 방법을 이해하는 데 문제가 있습니다. 문제는 다음과 같습니다.

회사에 공통 공통 코드 기반을 사용하는 여러 제품이 있습니다.

> $/Core
>  -> /Main/Source (Parent Branch)
> 
> $/Product1
>  -> /Main/Source
>  -> /Main/Source/Core/Source (Child Branch from $/Core)
>  -> /Main/Source/...
> 
> $/Product2
>  -> /Main/Source
>  -> /Main/Source/Core/Source (Child Branch from $/Core)
>  -> /Main/Source/...

따라서 우리는 하나의 팀 콜렉션을 가지고 있으며이 예제에서는 3 개의 팀 프로젝트가 있습니다. ($/*는 팀 프로젝트입니다)

초기 릴리스 브랜치는 약간의 고통입니다./Main to/Releases 또는/Main to/Development에서 분기하는 대신 각 프로젝트를 개별적으로 분기했습니다.(팀 프로젝트가 아닙니다 ... 솔루션 프로젝트입니다.)

이것은 중첩 된 분기 루트를 가질 수 없기 때문입니다. (TFS 오류 : TF203028 및 TF203071 참조)

TFS Ranger Guide 및 분기 릴리스, 핫픽스, 개발에 대한 수정 된 접근 방식에 따르면/Main/Source/Proj1,/Proj2,/Proj3 등이 아닌/Main에서 분기해야합니다. .

이상적으로 :

> $/Product1
> -> /Main/ (Branch - Parent)
> -> /Releases
>    -> /1.x
>       /1 Service Pack (Child Branch from $/Product1/Main
>       -> /1.0
>          -> /1.0 Hotfix (Child Branch from $/Product1/Releases/1.x/1 Service Pack)
>          -> /1.0 RTM (Child Branch from $/Product1/Releases/1.x/1.0/1.0 Hotfix - Read Only)
>          -> /1.0.22 RTM (Child Branch from $/Product1/Releases/1.x/1.0/1.0 Hotfix - Read Only)
>       -> /1.5
>          -> /1.5 Hotfix (Child Branch from $/Product1/Releases/1.x/1 Service Pack)
>          -> /1.5 RTM (Child Branch from $/Product1/Releases/1.x/1.5/1.5 Hotfix - Read Only)

솔루션 : 1. 각 공유 브랜치 (예 : $/Core)를 다시 일반 폴더로 변환 할 수 있습니다. 이 방법으로/Main 아래의 폴더는 분기 루트가 아닙니다. 그런 다음 $/Product1/Main/Source/Core/Source에서 기본 $/Core/Source로 기본리스 병합을 수행 할 수 있습니다.

베이스리스 병합에 대한 경험이있는 사람이 있습니다. 내가 Microsoft에서 읽은 것은 평범하지 않아야 할 예외입니다. MS는 TFS를 사용하여 프로젝트를 올바르게 설정하면 기본없는 병합을 수행 할 필요가 없다고 말합니다.

팀 프로젝트로 분기 할 때 어떻게 가능합니까?!? 모든 소프트웨어 개발 회사에서는 제품간에 라이브러리를 공유하는 것이 일반적입니다.

다른 해결책도 열려 있습니다.

감사합니다!


  • 답변 # 1

    링에 옵션을 넣습니다. 유용하지 않을 수도 있습니다. 그것이 위안이라면 나는 이것에 대해 잠시 동안 숙고하고 있었고 완전히 만족스러운 해결책을 찾지 못했습니다. 정말 좋은 질문이며 다른 사람들 이이 문제를 어떻게 해결했는지 보는 데 관심이 있습니다.

    가능한 한 소스에서 빌드하는 것이 좋은 아이디어로 여겨지지만 팀 프로젝트 사이의 브랜치 팬은 아닙니다. 공통 코드가 있고 2 ~ 3 개의 다른 팀 프로젝트간에 분기해야하는 경우 분기를 관리 할 수 ​​있지만 팀 프로젝트가 20 개 또는 30 개 (또는 100 개) 인 경우 병합 관리는 골치가됩니다. 소비하는 팀 프로젝트에서 작업하는 개발자가 히스토리 등을 볼 수없는 것과 같이 "마스터"에서 동일한 권한을 가지고 있지 않은 경우 다른 문제가있을 수 있습니다. 물론 팀 프로젝트간에 공유해야하는 코드가있는 경우 다른 프로젝트 컬렉션에서는 어쨌든 분기 할 수 없습니다.

    그런 점을 염두에두고, 써드 파티 라이브러리를 취급하고 이진 참조를 사용하는 것과 같은 방식으로 공통 코드를 처리 할 것을 제안합니다. 일단 당신이 그 사고 방식에 들어가면 많은 옵션을 사용할 수 있습니다. (여기에 몇 개 있지만 아마도 더있을 것입니다)

    <올>

    패키지 용 병합 모듈과 함께 바이너리를 드롭 위치에 복사하여 공통 코드를 빌드 할 수 있습니다 (MSI를 사용하는 경우). 그런 다음 놓기 위치에 대한 2 진 참조를 작성하고 병합 모듈을 가져 오기 위해 패키징에 사용하는 모든 것을 가져옵니다. 이 시나리오에서는 드롭 위치가 안정적인지 확인해야합니다 (그리고 훼손 방지를 위해 대부분의 개발자 만 읽을 수 있음)

    옵션 1과 유사하지만 NuGet과 같은 도구를 사용하여 참조를 관리하면 새 버전의 바이너리를 참조하는 프로세스가 자동화됩니다.

    이진을 분기의 $/Product1/branch/lib/common 폴더에 체크인하고 상대 경로를 사용하여 참조 할 수 있습니다

    내가 말했듯이, 다른 SOER가 TFS를 사용하여 공유 코드 문제를 어떻게 해결했는지 듣고 싶습니다.

    편집 : 이것에 대해 8 년 동안 생각한 후에 Nuget 패키지는 앞으로 나아갈 길입니다. 여전히 답변과 투표권을 얻으므로 나머지 답변은 그대로 두었습니다. 패키지에 대한 종속성을 빌드하고 이진 저장소 (nuget/Nexus/Artifactory/Azure Artifacts 등)에 저장하는 것은이 문제를 해결하는 표준 방법입니다.

  • 답변 # 2

    TFS 2010 Branching Revisited :

    이 문제를 해결하는 방법으로 TFS 2010 기본없는 병합 기능에 대한 신뢰 모드를 제공하고 싶습니다. Wrox 책 "Professional Team Foundation Server 2010"을 선택하는 것이 좋습니다.

    이 문제에 대해 깊이 설명하고 근거없는 병합의 사용을 옹호하지는 않지만 이와 같은 시나리오에서 사용하는 방법에 대해 설명합니다.

    이 질문은 4 월에 처음 해결 된 이후로 사용되어 왔으며, 기본이없는 병합에 문제가있는 상황은 아직 발생하지 않았습니다. 이 책과 ALM 레인저 팀이 권장하는 분기 설정을 자세히 설명하는 이미지를 게시하고 싶습니다.

  • 답변 # 3

    원하는 것을 달성하려면 먼저 루트 아래의 모든 분기를 폴더로 변환하면 루트를 폴더로 변환 할 수 있습니다.

    우리는 다른 브랜치에서 병합하는 것을 고수하고 나서베이스리스 병합으로 갔다. 작동 방식을 파악하는 데 어느 정도 시간이 걸렸지 만 지점 간 병합을 수행 한 다음 이들 간의 관계를 만드는 데 성공했습니다.

    tf merge /baseless "D:\TFS2010\Root\ServicePack" "D:\TFS2010\Root\MainLine" /recursive
    

    베이스리스 병합을 완료하면 모든 파일을 체크인해야합니다. 그래도 브랜치 간의 관계가 생성되지 않습니다.

    이 작업을 수행하려면 ServicePack 분기 (예 :)를 클릭 한 다음 파일 메뉴에서 소스 제어->분기 및 병합->상위를 클릭하십시오. 거기에서 재 부모하는 옵션이 있습니다. 완료되면, 이러한 브랜치간에 병합 할 때마다 브랜치 간의 일반 병합처럼 수행 할 수 있습니다.

  • 답변 # 4

    지금 TFS를 구성하고 있으며 같은 문제. 요점은 근거없는 병합이 필요 없다는 것입니다. 해결 방법 :

    <올>

    부모 지점 만들기 와이즈 비즈 와이즈 비즈

    하위 지점 폴더 삭제

    와이즈 비즈

    SAME이름으로 폴더 만들기와이즈 비즈 와이즈 비즈

    이제 변경 사항을$/Core/Main에서$/Product1/Main/Core및 그 뒤로 병합 할 수 있습니다.
    핵심 브랜치에서는 시각화가 작동하지 않지만 괜찮습니다.;)

  • 답변 # 5

    공통 코드를 공유하려면 다음 해결책을 시도해보십시오.

    와이즈 비즈

    소스 제어의 다른 곳에서 프로젝트를 추가 할 수있는 대화 상자가 나타납니다.

    이와 같은 프로젝트를 공유하면 소스 제어 구조가 약간 강화됩니다.

    공통 코드를 변경하면 자동으로 체크 아웃되지 않습니다. 따라서 프로젝트 차이를 참조하는 것은 TFS에서도 작동한다는 점과 비슷합니다.

    원래 답변

    $/Core/Main

    Create child branch

  • 이전 excel - 시트의 모든 빨간색 행에 액세스하는 방법은 무엇입니까?
  • 다음 python 3.x - DNA 서열에 대한 word2vec 프로그램의 코드 오류