TFVC에서 Git으로 리포지토리 가져오기 및 마이그레이션
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
기존 TFVC 리포지토리에서 동일한 조직 내의 새 Git 리포지토리로 코드를 마이그레이션할 수 있습니다. Git으로 마이그레이션하는 것은 대규모 TFVC 리포지토리 및 팀을 위한 관련 프로세스입니다. TFVC와 같은 중앙 집중식 버전 제어 시스템은 기본적인 방식으로 Git과 다르게 작동합니다. 스위치에는 새 명령을 배우는 것 이상의 작업이 포함됩니다. 신중한 계획이 필요한 파괴적인 변화입니다. 다음 사항을 고려해야 합니다.
- 도구 및 프로세스 수정
- 이진 파일 및 실행 파일 제거
- 팀 교육
마이그레이션을 시작하기 전에 Git에 대한 중앙 집중식 버전 제어 및 다음 마이그레이션을 TFVC에서 Git 섹션으로 읽는 것이 좋습니다.
가져오기 환경은 작은 간단한 TFVC 리포지토리에 적합합니다. 또한 Git에 대한 중앙 집중식 버전 제어 및 TFVC에서 Git 섹션으로 다음 마이그레이션에 설명된 대로 이미 "정리"된 리포지토리에도 적합합니다. 또한 이 섹션에서는 고급 TFVC 리포지토리 구성을 위한 다른 도구도 권장합니다.
Important
TFVC 및 Git 저장소 버전 제어 기록의 차이로 인해 기록을 마이그레이션하지 않는 것이 좋습니다. 이는 Microsoft가 Windows 및 기타 제품을 중앙 집중식 버전 제어에서 Git으로 마이그레이션할 때 사용한 접근 방식입니다.
리포지토리 가져오기
리포지토리, 파일을 선택합니다.
리포지토리 드롭다운에서 리포지토리 가져오기를 선택합니다.
원본 유형 드롭다운에서 TFVC 선택
Git 리포지토리로 가져올 리포지토리/분기/폴더의 경로를 입력합니다. 예를 들어
$/Fabrikam/FabrikamWebsite
TFVC 리포지토리에서 기록을 마이그레이션하려면 기록 마이그레이션을 클릭하고 일 수를 선택합니다. 가장 최근의 변경 집합부터 최대 180일의 기록을 마이그레이션할 수 있습니다. TFVC 리포지토리에 대한 링크는 Git으로 마이그레이션되는 첫 번째 변경 집합의 커밋 메시지 추가됩니다. 이렇게 하면 필요할 때 이전 기록을 쉽게 찾을 수 있습니다.
새 Git 리포지토리에 이름을 지정하고 가져오기를 클릭합니다. 가져오기 크기에 따라 몇 분 안에 Git 리포지토리가 준비됩니다.
문제 해결
이 환경은 마이그레이션을 위해 준비된 작고 간단한 TFVC 리포지토리 또는 리포지토리에 최적화되어 있습니다. 즉, 몇 가지 제한 사항이 있습니다.
- 루트 또는 분기의 내용만 마이그레이션합니다. 예를 들어 1개의 분기와 1개의 폴더가 있는 TFVC 프로젝트가
$/Fabrikam
있는 경우 가져올$/Fabrikam
경로는 분기만 가져오는 동안$/Fabrikam/<branch>
폴더를 가져옵니다. - 가져온 리포지토리 및 연결된 기록(가져온 경우)의 크기는 1GB를 초과할 수 없습니다.
- 최대 180일의 기록을 가져올 수 있습니다.
위의 내용이 가져오기에 대한 차단기인 경우 Git-TFS와 같은 외부 도구를 사용하여 백서를 가져오고 읽는 것이 좋습니다. - Git에 대한 중앙 집중식 버전 제어 및 TFVC에서 Git 섹션으로 다음 마이그레이션
Important
Microsoft 제품, 서비스 또는 플랫폼에서 Git-TFS와 같은 외부 도구를 사용하는 것은 전적으로 사용자의 책임입니다. Microsoft는 이러한 타사 확장의 기능, 안정성 또는 보안을 보증, 지원 또는 보장하지 않습니다.
TFVC에서 Git으로 마이그레이션
중앙 집중식 버전 제어 시스템에서 Git으로 소스 코드를 마이그레이션하기 전에 둘 사이의 차이점을 이해하고 마이그레이션을 준비합니다.
요구 사항
마이그레이션을 더 쉽게 하기 위해 이 문서의 이전 섹션에서 리포지토리 프로시저를 가져오기 전에 여러 요구 사항이 있습니다.
- 단일 분기만 마이그레이션합니다. 마이그레이션을 계획할 때 Git에 대한 새 분기 전략을 선택합니다. 주 분기만 마이그레이션하면 GitFlow 또는 GitHub Flow와 같은 토픽 분기 기반 워크플로가 지원됩니다.
- 마찬가지로 팁 마이그레이션을 수행하여 최신 버전의 소스 코드만 가져옵니다. TFVC 기록이 간단한 경우 팀이 Git에서만 작업할 수 있도록 최대 180일 동안 일부 기록을 마이그레이션할 수 있는 옵션이 있습니다. 자세한 내용은 Git으로 마이그레이션 계획을 참조하세요.
- 리포지토리에서 이미지, 과학 데이터 집합 또는 게임 모델과 같은 이진 자산을 제외합니다. 이러한 자산은 가져오기 도구가 구성하지 않는 Git LFS(대용량 파일 스토리지) 확장을 사용해야 합니다.
- 가져온 리포지토리의 크기를 1GB 미만으로 유지합니다.
리포지토리가 이러한 요구 사항을 충족하지 않는 경우 Git-TFS 도구를 사용하여 마이그레이션을 대신 수행합니다.
Important
Microsoft 제품, 서비스 또는 플랫폼에서 Git-TFS와 같은 외부 도구를 사용하는 것은 전적으로 사용자의 책임입니다. Microsoft는 이러한 타사 확장의 기능, 안정성 또는 보안을 보증, 지원 또는 보장하지 않습니다.
마이그레이션 단계
TFVC에서 마이그레이션하는 프로세스는 일반적으로 간단합니다.
- 로컬 디스크의 TFVC에서 분기의 최신 버전을 확인합니다.
- 리포지토리에서 이진 파일을 제거하고 도구를 빌드하고 NuGet과 같은 패키지 관리 시스템을 설정합니다.
- 버전 제어 관련 구성 지시문을 변환합니다. 예를 들어 파일을
.gitignore
로 변환.tfignore
하고 파일을 .로 변환.tpattributes
합니다.gitattributes
. - 변경 내용을 체크 인하고 Git으로 마이그레이션 을 수행합니다.
1-3단계는 선택 사항입니다. 리포지토리에 이진 파일이 없고 설정하거나 .gitattributes
설정할 .gitignore
필요가 없는 경우 변경 내용 체크 인으로 직접 진행하여 마이그레이션 단계를 수행할 수 있습니다.
최신 버전 확인
새 TFS 작업 영역을 만들고 Git으로 마이그레이션되는 서버 디렉터리에 대한 작업 폴더를 매핑합니다. 이렇게 하려면 전체 작업 폴더 매핑이 필요하지 않습니다. 리포지토리에서 제거할 이진 파일이 포함된 폴더와 버전 제어 시스템별 구성 파일(예: .tfignore
.)이 포함된 폴더만 매핑합니다.
매핑이 설정되면 로컬로 폴더를 가져옵니다.
tf get /version:T /recursive
이진 파일 제거 및 빌드 도구
Git에서 모든 개발자에게 기록의 모든 파일 복사본을 제공하여 변경된 파일의 기록을 저장하는 방식으로 인해 리포지토리에 직접 이진 파일을 체크 인하면 리포지토리가 빠르게 증가하고 성능 문제가 발생할 수 있습니다.
라이브러리와 같은 빌드 도구 및 종속성을 위해 NuGet과 같은 버전 관리 지원을 사용하여 패키징 솔루션을 채택합니다. 많은 오픈 소스 도구 및 라이브러리는 이미 NuGet 갤러리에서 사용할 수 있지만 독점 종속성을 위해 새 NuGet 패키지를 만듭니다.
종속성이 NuGet으로 이동되면 해당 종속성이 Git 리포지토리에 포함되어 있지 않은지 확인합니다 .gitignore
.
버전 제어 관련 구성 변환
Team Foundation 버전 제어 특정 파일이 TFVC 리포지토리에 추가되지 않도록 하는 파일을 제공합니다.tfignore
. 실수로 체크 인되지 않도록 빌드 출력과 같이 자동으로 생성된 파일에 파일을 사용할 .tfignore
수 있습니다.
프로젝트에서 이 동작을 사용하는 경우 파일을 파일로 .gitignore
변환 .tfignore
합니다.
플랫폼 간 TFVC 클라이언트는 로컬 디스크에 파일이 배치되거나 리포지토리에 체크 인되는 방법을 제어하는 파일에 대한 .tpattributes
지원도 제공합니다. .tpattributes
파일이 사용 중인 경우 파일로 .gitattributes
변환합니다.
변경 내용을 체크 인하고 마이그레이션 수행
이진 파일을 제거하거나 패키지 관리로 마이그레이션하거나 버전 제어 관련 구성을 변환하는 변경 내용을 체크 인합니다. TFVC에서 이 최종 변경을 수행하면 가져오기를 수행할 수 있습니다.
리포지토리 가져오기 절차에 따라 가져오기를 수행합니다.
고급 마이그레이션
Git-TFS 도구는 Team Foundation 버전 제어 Git 간의 양방향 브리지이며 마이그레이션을 수행하는 데 사용할 수 있습니다. Git-TFS는 가져오기 도구에서 지원하는 180일을 초과하는 전체 기록을 사용하여 마이그레이션하는 데 적합합니다. 또는 Git-TFS를 사용하여 여러 분기 및 병합 관계를 포함하는 마이그레이션을 시도할 수 있습니다.
Git-TFS를 사용하여 마이그레이션을 시도하기 전에 TFVC와 Git 저장소 기록 간에는 기본적인 차이점이 있습니다.
- Git은 기록을 시간에 따라 리포지토리의 스냅샷으로 저장하고 TFVC는 파일에서 발생한 불연속 작업을 기록합니다. 이름 바꾸기, 삭제 취소 및 롤백과 같은 TFVC의 변경 형식은 Git에서 표현할 수 없습니다. 파일 이름이 파일
A
B
로 변경된 것을 보는 대신 해당 파일이A
삭제되고 파일이B
동일한 커밋에 추가된 것을 추적합니다. - Git에는 TFVC 레이블의 직접적인 아날로그가 없습니다. 레이블은 특정 버전에서 임의의 수의 파일을 포함할 수 있으며 다른 버전의 파일을 반영할 수 있습니다. 개념적으로 유사하지만 Git 태그는 특정 시점에 전체 리포지토리의 스냅샷을 가리킵니다. 프로젝트가 TFVC 레이블을 사용하여 전달된 내용을 파악하는 경우 Git 태그가 이 정보를 제공하지 않을 수 있습니다.
- TFVC의 병합은 전체 리포지토리가 아닌 파일 수준에서 발생합니다. 변경된 파일의 하위 집합만 한 분기에서 다른 분기로 병합할 수 있습니다. 그러면 변경된 나머지 파일이 후속 변경 집합에서 병합될 수 있습니다. Git에서 병합은 전체 리포지토리에 영향을 줍니다. 개별 변경 내용 집합은 모두 병합으로 볼 수 없습니다.
이러한 차이점 때문에 기록을 보려면 팁 마이그레이션을 수행하고 TFVC 리포지토리를 온라인 상태로 유지하지만 읽기 전용으로 유지하는 것이 좋습니다.
Git-TFS를 사용하여 고급 마이그레이션을 시도하려면 기록을 사용하여 단일 분기 복제 또는 병합 기록을 사용하여 모든 분기 복제를 참조하세요.
Important
Microsoft 제품, 서비스 또는 플랫폼에서 Git-TFS와 같은 외부 도구를 사용하는 것은 전적으로 사용자의 책임입니다. Microsoft는 이러한 타사 확장의 기능, 안정성 또는 보안을 보증, 지원 또는 보장하지 않습니다.
워크플로 업데이트
중앙 집중식 버전 제어 시스템에서 Git으로 이동하는 것은 단순히 코드를 마이그레이션하는 것 이상입니다. 팀은 Git이 기존 버전 제어 시스템과 어떻게 다른지, 그리고 이러한 차이가 일상적인 작업에 어떤 영향을 미치는지 이해하기 위한 교육이 필요합니다.
중앙 집중식 버전 제어에서 Git으로 마이그레이션하는 방법에 대해 자세히 알아봅니다.