프로젝트에 적합한 버전 제어 선택

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

소프트웨어 프로젝트의 크기에 관계없이 버전 제어를 가능한 한 빨리 사용하는 것이 좋습니다. Azure Repos는 두 가지 유형의 버전 제어인 GitTeam Foundation 버전 제어(TFVC)를 지원합니다.

어떤 버전 제어 시스템을 사용해야 하나요?

신규 프로젝트의 기본 버전 제어 공급자는 Git입니다. 프로젝트에서 버전 제어에 Git을 사용하고 기존 TFVC 프로젝트를 Git으로 이동하기 시작해야 합니다. TFVC는 완전한 기능으로 간주됩니다. Azure DevOps는 TFVC와의 호환성을 기본 있지만 Git은 향후 모든 투자를 받게 됩니다.

동일한 프로젝트에서 Git과 함께 TFVC 리포지토리를 사용할 수 있으므로 중앙 집중식 버전 제어가 필요한 경우 나중에 TFVC를 쉽게 추가할 수 있습니다. 기존 프로젝트에 대한 새 리포지토리 형식을 설정하려면 다음 지침을 사용합니다.

Git(분산)

Git는 분산 버전 제어 시스템입니다. 각 개발자는 자신의 개발 컴퓨터에 소스 리포지토리의 복사본을 가지고 있습니다. 개발자는 개발 컴퓨터에서 각 변경 세트를 커밋하고 네트워크 연결 없이 기록 및 비교와 같은 버전 제어 작업을 수행할 수 있습니다. 분기는 간단합니다. 컨텍스트를 전환해야 할 경우 개인 로컬 분기를 만들 수 있습니다. 한 분기에서 다른 분기로 쉽게 변경하여 코드베이스의 여러 버전으로 전환할 수 있습니다. 나중에 분기를 병합, 게시 또는 삭제할 수 있습니다.

참고 항목

Visual Studio, Azure DevOps Services 및 Azure DevOps Server의 Git은 표준 Git입니다. 타사 Git 서비스와 함께 Visual Studio를 사용할 수 있으며, Azure DevOps Server에서 타사 Git 클라이언트를 사용할 수도 있습니다.

자세한 내용은 Git 및 Azure Repos를 참조 하세요.

TFVC(중앙 집중식)

TFVC(Team Foundation 버전 제어)는 중앙 집중식 버전 제어 시스템입니다. 일반적으로 팀 멤버는 자신의 고유 개발 컴퓨터에 각 파일 버전 하나만 보유합니다. 기록 데이터는 서버에만 보관됩니다. 분기는 경로에 기반을 두며 서버에서 만들어집니다.

TFVC에는 다음 두 가지 워크플로 모델이 있습니다.

  • 서버 작업 영역 - 변경하기 전에 팀 멤버가 파일을 공개적으로 확인합니다. 대부분 작업의 경우 개발자가 서버에 연결해야 합니다. 이 시스템은 워크플로 잠금을 용이하게 합니다. 이러한 방식으로 작동하는 다른 시스템에는 Visual Source 금고, Perforce 및 CVS가 포함됩니다. 서버 작업 영역을 사용하면 분기당 수백만 개의 파일과 큰 이진 파일을 사용하여 매우 큰 코드베이스로 확장할 수 있습니다.

  • 로컬 작업 영역 - 각 팀 구성원은 최신 버전의 코드베이스 복사본을 가져와 필요에 따라 오프라인으로 작동합니다. 개발자는 변경 내용을 체크 인하고 필요 시 충돌을 해결합니다. 이 방식으로 작동하는 또 다른 시스템으로는 Subversion이 있습니다.

자세한 내용은 Team Foundation 버전 제어?

TFVC에서 Git으로 이동

기존 TFVC 리포지토리가 있는 경우 git-tfs 도구를 사용하여 Git 리포지토리로 마이그레이션할 수 있습니다. 이 도구를 사용하면 몇 가지 명령으로 TFVC 리포지토리를 Git 리포지토리 로 마이그레이션할 수 있습니다.

Git 및 TFVC 기능

다음 표에서는 TFVC 및 Git이 버전 제어의 기본 기능을 지원하는 방법에 대한 요약을 제공합니다.

기능

TFVC

Git


변경

팀 구성원은 개발 머신에서 파일을 동시에 변경할 수 있습니다. 변경 집합을 만들 때 서버에 업로드(검사)합니다. 언제든지 변경 내용을 업로드할 수 있습니다. 그러나 충돌로 인해 중단될 수 있습니다.

변경 집합을 검사 후 변경 집합주석을 변경할 수 있습니다. 변경 집합을 작업 항목에 연결하고 완료된 빌드와 연결할 수 있습니다.

팀 구성원은 개발 머신에서 파일을 동시에 변경할 수 있습니다. 개발 머신에서 커밋을 팀에 기여하지 않고 만듭니다. 준비가 되면 서버에 업로드(푸시)하기 전에 최신 커밋을 끌어와야 합니다. 끌어오면 충돌로 인해 중단될 수 있습니다.

최신 로컬 커밋을 수정할 수 있습니다. 이전 커밋은 변경할 수 없습니다. 커밋을 작업 항목에 연결하고 완료된 빌드와 연결할 수 있습니다.

명령 프롬프트에서 로컬 커밋을 수정하고 결합할 수 있습니다.

분기

경로 기반 분기는 주로 기능 팀과 릴리스 간의 변경 위험을 격리하기 위해 오랜 구문으로 사용됩니다. 팀 구성원은 일반적으로 작업 중인 각 분기에 대해 다른 작업 영역을 설정합니다.

각 분기의 변경 내용은 서로 독립적이므로 한 분기에서 다른 분기로 전환하기 전에 검사 필요가 없습니다. 형제 분기 간에 병합하려면 기본 없는 병합이 필요합니다.

분기 구조와 변경 집합이 병합된 위치를 시각화할 수 있습니다.

Team Foundation 버전 제어 위험을 격리하려면 분기 사용을 참조하세요.

분기는 가볍고 경로는 독립적입니다. 많은 개발자가 코딩하는 각각의 새로운 기능에 대한 분기를 만들고, 때로는 매일 분기를 만듭니다. 한 분기에서 다른 분기로 쉽게 변경하여 코드베이스의 여러 버전으로 전환할 수 있습니다. 개발 머신에만 존재하는 분기를 만들고 준비가 되면 공유할 수 있습니다.
분기를 전환하기 전에 변경 내용을 커밋, 분기, 숨김 또는 실행 취소해야 합니다. 병합은 간단하고 분기의 기반이 되는 커밋과 독립적입니다. 비교 분기 분기에서 존재하는 커밋을 확인할 수 있습니다.

Git 분기를 사용하여 컨텍스트 전환, 작업 일시 중단 및 위험 격리를 참조하세요.

충돌 해결

가져오기, 검사, 병합 또는 해제할 때 충돌을 해결해야 할 수 있습니다. Visual Studio에서 모든 유형의 충돌을 해결할 수 있습니다.

끌어오거나 병합할 때 충돌을 해결해야 할 수 있습니다. Visual Studio 또는 명령 프롬프트에서 콘텐츠 충돌을 해결할 수 있습니다.

File Storage

큰 이진 파일에서 검사 수 있습니다. NuGet을 조합하거나 대안으로 사용할 수도 있습니다.

일반 파일과 마찬가지로 작은 이진 파일에서 검사 수 있습니다. 큰 이진 파일로 작업하는 경우 Git-LFS를 사용하여 Azure Repos에 큰 이진 파일을 저장합니다.

기록

파일 기록은 클라이언트 개발 컴퓨터에서 복제본(replica) 아니므로 서버에 연결된 경우에만 볼 수 있습니다. Visual Studio 및 웹 포털에서 기록을 볼 수 있습니다. 파일에 주석을 추가하여 누가 줄을 변경했는지, 언제 변경했는지 확인할 수 있습니다.

파일 기록은 클라이언트 개발 컴퓨터에서 복제본(replica) 기록되며 서버에 연결되지 않은 경우에도 볼 수 있습니다. Visual Studio 및 웹 포털에서 기록을 볼 수 있습니다. 파일에 주석을 추가하여 누가 줄을 변경했는지, 언제 변경했는지 확인할 수 있습니다.

파일 태그 지정

Visual Studio 또는 명령 프롬프트에서 하나 이상의 파일 버전에 레이블을 적용할 수 있습니다. 각 파일에는 다른 버전에 적용된 레이블이 있을 수 있습니다.

명령 프롬프트에서 개별 커밋에 태그를 적용할 수 있습니다. Visual Studio 기록 창에서 태그를 봅니다.

변경 내용 롤백

하나 이상의 변경 집합을 롤백할 수 있습니다 .

커밋을 되돌리기 수 있습니다.

확장

소규모 프로젝트를 빠르게 시작할 수 있습니다. 매우 큰 프로젝트로 확장할 수 있지만 코드베이스를 모듈화하려면 미리 계획해야 합니다. 프로젝트에서 여러 리포지토리를 만들 수 있습니다.

서버

다음 표에는 각 버전 제어 시스템에 대해 지원되는 서버에서 사용할 수 있는 기능이 요약되어 있습니다.

기능

TFVC

Git


서버

Azure DevOps Services, Azure DevOps Server

Azure DevOps Services, Azure DevOps Server 및 Git 타사 서비스

경고

팀 구성원은 검사 발생 시 전자 메일 경고를 받을 수 있습니다.

팀 구성원은 커밋이 서버에 푸시될 때 이메일 경고를 받을 수 있습니다.

감사

팀이 모든 작업을 중앙 집중식 시스템에 검사 때문에 변경 집합검사 사용자를 식별하고 비교를 사용하여 변경된 내용을 확인할 수 있습니다. 파일을 보면 주석을 달아 코드 블록을 변경한 사용자와 코드 블록을 변경한 시기를 식별할 수 있습니다.

커밋을 푸시한 사용자를 식별할 수 있습니다. (누구나 커밋을 한 작성자 또는 사용자로 모든 ID를 클레임할 수 있습니다.) 변경된 시기와 기록, 비교 및 주석을 사용하여 변경된 내용을 식별할 수 있습니다.

빌드(TFBuild에서 자동화)

모든 TFBuild 기능을 사용하여 프로젝트 컬렉션 내에서 원하는 콘텐츠 조합을 빌드할 수 있습니다.

대부분의 TFBuild 기능을 사용하여 한 번에 하나의 프로젝트와 한 번에 하나 이상의 리포지토리를 빌드할 수 있습니다.

코드 검토

devops 개발자의 하루: 작업 일시 중단, 버그 수정 및 코드 검토 수행을 참조하세요. 좀 더 간단한 토론을 위해 웹 포털에서 변경 집합에 대해 주석을 달고 전자 메일을 보낼 수도 있습니다.

끌어오기 요청 검토를 참조 하세요. 좀 더 간단한 토론을 위해 웹 포털에서 커밋에 대한 댓글을 달고 전자 메일을 보낼 수도 있습니다.

Files

각 프로젝트에는 단일 루트 경로 아래의 모든 파일(예: $/FabrikamTFVC)이 포함됩니다. 파일 수준에서 사용 권한을 적용할 수 있습니다. 파일을 잠글 수 있습니다.

Visual Studio에서 웹 포털 및 소스 제어 탐색기를 사용하여 파일을 찾아볼 수 있습니다.

프로젝트는 하나의 서버에만 존재합니다.

각 프로젝트에는 하나 이상의 Git 리포지토리가 포함될 수 있으며 각 Git 리포지토리에는 하나 이상의 분기가 포함될 수 있습니다. 적용할 수 있는 가장 세분화된 권한은 리포지토리 또는 분기에 대한 것입니다. 파일을 잠글 수 없습니다.

웹 포털에서 파일을 찾아볼 수 있습니다.

프로젝트 리포지토리와 Azure에서 호스트되는 웹 사이트에 커밋을 여러 원격 리포지토리에 푸시할 수 있습니다.

품질 게이트

CI(연속 통합) 빌드, 제어된 검사 빌드 및 검사 정책을 사용할 수 있습니다.

분기 정책을 통해 CI 빌드 및 제어된 검사 빌드를 사용할 수 있습니다.

클라이언트

다음 표에는 선택한 버전 제어 시스템에 따라 사용할 수 있는 클라이언트 지원 기능이 요약되어 있습니다.

기능

TFVC

Git


클라이언트 소프트웨어

Visual Studio

Visual Studio, Visual Studio Code, Eclipse 및 기타 타사 도구

Files

Visual Studio에서 소스 제어 탐색기를 사용하거나 Windows 파일 탐색기 또는 명령 프롬프트사용하여 파일을 찾아볼 수 있습니다.

Windows 파일 탐색기 또는 명령 프롬프트를 사용하여 파일을 찾아볼 수 있습니다.

개발 컴퓨터에서 작업 관리

변경, 커밋 및 분기 페이지.

작업 일시 중단

내 작업 페이지에서 작업을 일시 중단하거나 보류 중인 변경 내용 페이지에서 변경 내용을 보류할 수 있습니다. 자세한 내용은 작업 일시 중단 및 선반 관리를 참조하세요.

Visual Studio 또는 명령 프롬프트에서 분기를 만들거나 명령 프롬프트에서 숨길 수 있습니다.

Visual Studio 호환성

지원되는 모든 버전의 Visual Studio를 사용할 수 있습니다.

지원되는 모든 버전의 Visual Studio를 사용할 수 있습니다.

웹 포털

코드베이스(분기 포함)를 찾아보고, 기록을 보고, 변경 집합 및 선반에 주석을 달고, 주석을 달고, 코드베이스의 선택한 부분을 .zip 파일로 임시로 다운로드하는 등의 다른 작업을 수행할 수 있습니다.

코드베이스를 찾아보고, 기록, 비교 분기, 커밋에 주석을 달고 주석을 달고, 코드베이스의 선택한 부분을 .zip 파일로 임시로 다운로드하는 등의 다른 작업을 수행할 수 있습니다.

마이그레이션

TFVC에서 Git으로 마이그레이션하는 방법을 알아보려면 TFVC에서 Git으로 마이그레이션을 참조하세요.