2015-01-28 4 views
0

저는 신선한 졸업생이며 많은 조건을 가진 분기 또는 단일 웹 프로젝트 인 경우 웹 프로젝트를 만드는 가장 좋은 방법입니다.Team Foundation Server 브랜칭

예제 : 나는 우리 시스템에 대해 다른 통찰력을 가진 다수의 고객을 보유하고 있습니다. 일부 클라이언트는 특정 기능을 사용하려고하지만 다른 기능은 사용하지 않을 것입니다.

해결 방법 1 : 각 클라이언트에 대한 각 분기를 만들어 프로젝트 구축을 분리하십시오.
PROB. 성취 : 동일한 기능을 원하는 여러 고객이있는 경우 프로그램을 반복하는 것이 매우 지루합니다.

해결 방법 2 : 클라이언트에 따라 기능을 활성화 할 수있는 설정 조건이 많은 단일 프로젝트 만 필요합니다.
PROB. ENCOUNTERED : 각 클라이언트마다 고유 한 각 기능에 프로그램 조건이 있어야하므로 속도가 느려집니다. 이 솔루션에서 디버그하는 것이 훨씬 더 어렵습니다.

+2

"[Team Foundation Server 분기] (https://www.google.com/search?q=Team+Foundation+Server+branching)"로 봤습니까? 내가 그랬을 때 첫 번째 히트작은 "[Visual Studio TFS 브랜칭 및 병합 안내] (https://msdn.microsoft.com/en-us/magazine/gg598921.aspx)"이고 세 번째는 "[버전 컨트롤 가이드 (ex-Branching & Merging)] (http://vsarbranchingguide.codeplex.com/) "를 참조하십시오. 그것들은 가능한 최상의 리소스이기 때문에 (후자는 전자의 최신 버전입니다), 나는 당신의 남은 문제가 무엇인지 상상할 수 없습니다. –

+0

@JohnSaunders ok 내 질문에 대해 도움이되지 않아서 죄송합니다. 하지만 내가 여기에서 요구 한 이유는 바로 앞으로 답을 기대하는 것입니다. – zxc

+0

문제는 직접적인 질문이 아닙니다. 하나의 전략을 다른 전략보다 선택하게하는 문제에 대해 논의 했으므로 http://vsarbranchingguide.codeplex.com/을 읽어 보시기 바랍니다. –

답변

6

아마도 가장 쉬운 방법은 플러그인 스타일 시스템을 사용하는 것입니다. 올바르게 정의하면 클라이언트가 원하는 기능 중 하나에 버그가있는 경우 시스템을 쉽게 업데이트 할 수 있습니다. 이제는 모든 기능을 갖춘 프로그램을 계속 보낼 수 있지만 설정 파일에서 기능을 켜고 끌 수 있습니다. 이제는 좋은 로깅 시스템을 갖추어야합니다. 이 두 시스템 모두 상당한 양의 연구가 필요합니다.

+1

좋은 지적 Robert! zxc, 모든 클라이언트에 대한 분기를 만들기 위해 경로를 따라 간다면 프로젝트가 진행됨에 따라 기술적 인 깊이가 커질 것입니다. 또한 CI 및/또는 CD 프로세스를 구현해야 할 경우 브랜치만큼 많은 빌드를 보유해야한다는 것을 상상해보십시오. 그러면 기능 테스트도 복잡해집니다. 그래서 나는 로버트에 동의하고 가능하다면 그렇게 할 것을 제안 할 것입니다. –

3

어떤 종류의 브랜칭을 사용하든 좋습니다. TFS에서 TFVC 대신 Git을 사용하고 Git flow (http://nkdalm.net/Git-Flow)를 사용하여 분기 전략을 사용하는 것이 좋습니다.

지점이 짧으면 (며칠이 아닌) 유용 할 수 있습니다. 각 고객을위한 지회로 끝나면 너무 많은 기술적 괴롭힘과 궁극적으로 복잡성에 빠지게됩니다. 이것은 즐거운 곳이 아닙니다.

고객을 위해 기능을 사용하거나 사용하지 않도록 설정하는 데 유용한 기능 토글 시스템에 투자하고 구현해야합니다. 고객마다 다른 알고리즘이나 동작이 필요하다면 의존성 삽입이나 플러그인을 사용하여 스위치를 구현해야합니다.

좋은 엔지니어링 사례를 사용하고 테스트 형식을 먼저 연습하고 작업 코드를 항상 유지하는 경우 하나 이상의 장기 분기가 필요하지 않습니다.