Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

TFS에서 gitlab/github등의 git 서버로 마이그레이션하는 방법

Version Control 시스템으로 TFS를 사용하다가 git으로, 가령 github, gitlab 또는 직접 설치한 git 서버로 마이그레이션하고 싶을 수 있습니다. 아래는 그런 경우를 위한 문서입니다.

Migrating from TFS
; https://docs.gitlab.com/ee/user/project/import/tfs.html

git-tfs/git-tfs
; https://github.com/git-tfs/git-tfs

Migrate toward external git repository
; https://github.com/git-tfs/git-tfs/blob/master/doc/usecases/migrate_tfs_to_git.md

생각보다 매우 쉽게 마이그레이션할 수 있습니다. 우선, 모든 작업을 한방에 해결해주는 git-tfs 도구를 다운로드하고,

git-tfs v0.30
; https://github.com/git-tfs/git-tfs/releases
; https://github.com/git-tfs/git-tfs/releases/download/v0.30/GitTfs-0.30.0.zip

압축을 푼 다음(이 글에서는 "D:\Tools\gittfs"에 풀었다고 가정), "git-tfs.exe"를 찾을 수 있도록 환경 변수 PATH에 등록해 줍니다.

set PATH=%PATH%;D:\Tools\gittfs

잘 실행이 되는지 명령행에서 간단하게 실행해 보고,

c:\temp> git tfs help

이제 TFS 서버에 등록된 프로젝트를 다음의 명령어로 그동안의 check-in 기록을 모두 포함하면서 git 포맷으로 내려받을 수 있습니다.

git tfs clone http://[TFS서버]:[포트]/tfs/[Collection이름] $/[프로젝트_경로] [로컬_폴더] --branches=auto

예)
c:\temp> git tfs clone http://localhost:8080/tfs/DefaultCollection $/MyTest/Sources .\clone --branches=auto

("$/[프로젝트]" 경로는 "Source Control Explorer"에 들어가면 "Source Location"으로 나오는 그 경로입니다.)

위와 같이 명령을 내리면 TFS 서버의 $/MyTest/Sources 경로 이하의 모든 이력과 소스 코드를 c:\temp\clone 폴더에 로컬 git repo로 구성해 줍니다. 엄밀히 말해서 마이그레이션 작업은 사실 이게 끝입니다. 이후는 로컬에 구성된 git repo를 git의 방식대로 원격에 넣거나 로컬 그대로 사용하시면 됩니다.




당연하겠지만, tfs로부터 clone하긴 했어도 기본적으로는 remote 설정이 비어 있습니다.

c:\temp\clone> git remote
c:\temp\clone> 

따라서 gitlab(또는 github) 프로젝트 측 repo를 등록하고,

c:\temp\clone> git remote add origin https://github.com/stjeong/Sample.git

모든 내용을 업로드하면 됩니다.

c:\temp\clone> git push -u origin --all
c:\temp\clone> git push -u origin --tags




git tfs clone 시 다음과 같은 오류가 발생한다면?

c:\temp> git tfs clone http://localhost:8080/tfs/DefaultCollection $/MyTest/Sources .\clone --branches=auto
Initialized empty Git repository in D:/temp/mig/clone/clone/.git/

Git-tfs requires that the user data in git config should be set. Please configure them before using git-tfs
Actual config:
 * user name: <not set>
 * user email: <not set>
For help on how to set user git config, see https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup
All the logs could be found in the log file: C:\Users\SeongTae Jeong\AppData\Local\git-tfs\git-tfs_log.txt

오류 메시지 그대로 user.name, user.email을 등록한 후 사용하면 됩니다.

c:\temp> git config --list
core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
diff.astextplain.textconv=astextplain
rebase.autosquash=true
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
http.sslbackend=openssl
diff.astextplain.textconv=astextplain
credential.helper=manager
user.name=
user.email=
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
init.defaultbranch=master

c:\temp> git config --global --list
user.name=
user.email=
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
init.defaultbranch=master

c:\temp> git config --global user.name "testusr"
c:\temp> git config --global user.email "tusr@test.com"

/*
git config --global --unset user.name
*/

위와 같은 경우 "--global로 했기 때문에 "%USERPROFILE%\.gitconfig" 파일에 설정이 저장됩니다.




"git push" 과정에서 다음과 같은 오류가 발생한다면?

c:\temp\clone> git push -u origin --all
git: 'remote-https' is not a git command. See 'git --help'.

"git-remote-https.exe" 파일이 PATH에 없어서 그런 것입니다. Visual Studio 2019 사용자의 경우 별도의 프로그램 설치 없이 그냥 다음과 같이 경로를 등록해 주면 됩니다.

set PATH=%PATH%;C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\bin




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/13/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 61  62  63  64  65  66  67  68  69  70  71  [72]  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
11848정성태3/17/201911328스크립트: 14. 윈도우 CMD - 파일이 변경된 경우 파일명을 변경해 복사하고 싶다면?
11847정성태3/17/201915218Linux: 7. 리눅스 C/C++ - 공유 라이브러리 동적 로딩 후 export 함수 사용 방법파일 다운로드1
11846정성태3/15/201913603Linux: 6. getenv, setenv가 언어/운영체제마다 호환이 안 되는 문제
11845정성태3/15/201914318Linux: 5. Linux 응용 프로그램의 (C++) so 의존성 줄이기(ReleaseMinDependency) [3]
11844정성태3/14/201915138개발 환경 구성: 434. Visual Studio 2019 - 리눅스 프로젝트를 이용한 공유/실행(so/out) 프로그램 개발 환경 설정 [1]파일 다운로드1
11843정성태3/14/201910866기타: 75. MSDN 웹 사이트를 기본으로 영문 페이지로 열고 싶다면?
11842정성태3/13/201910274개발 환경 구성: 433. 마이크로소프트의 CoreCLR 프로파일러 예제를 Visual Studio CMake로 빌드하는 방법 [1]파일 다운로드1
11841정성태3/13/201910244VS.NET IDE: 132. Visual Studio 2019 - CMake의 컴파일러를 기본 g++에서 clang++로 변경
11840정성태3/13/201911341오류 유형: 526. 윈도우 10 Ubuntu App 환경에서는 USB 외장 하드 접근 불가
11839정성태3/12/201914122디버깅 기술: 124. .NET Core 웹 앱을 호스팅하는 Azure App Services의 프로세스 메모리 덤프 및 windbg 분석 개요 [3]
11838정성태3/7/201916912.NET Framework: 811. (번역글) .NET Internals Cookbook Part 1 - Exceptions, filters and corrupted processes [1]파일 다운로드1
11837정성태3/6/201926771기타: 74. 도서: 시작하세요! C# 7.3 프로그래밍 [10]
11836정성태3/5/201914466오류 유형: 525. Visual Studio 2019 Preview 4/RC - C# 8.0 Missing compiler required member 'System.Range..ctor' [1]
11835정성태3/5/201914198.NET Framework: 810. C# 8.0의 Index/Range 연산자를 .NET Framework에서 사용하는 방법 및 비동기 스트림의 컴파일 방법 [3]파일 다운로드1
11834정성태3/4/201913080개발 환경 구성: 432. Visual Studio 없이 최신 C# (8.0) 컴파일러를 사용하는 방법
11833정성태3/4/201913840개발 환경 구성: 431. Visual Studio 2019 - CMake를 이용한 공유/실행(so/out) 리눅스 프로젝트 설정파일 다운로드1
11832정성태3/4/201910873오류 유형: 524. Visual Studio CMake - rsync: connection unexpectedly closed
11831정성태3/4/201910459오류 유형: 523. Visual Studio 2019 - 새 창으로 뜬 윈도우를 닫을 때 비정상 종료
11830정성태2/26/201910246오류 유형: 522. 이벤트 로그 - Error opening event log file State. Log will not be processed. Return code from OpenEventLog is 87.
11829정성태2/26/201912158개발 환경 구성: 430. 마이크로소프트의 CoreCLR 프로파일러 예제 빌드 방법 - 리눅스 환경 [1]
11828정성태2/26/201918590개발 환경 구성: 429. Component Services 관리자의 RuntimeBroker 설정이 2개 있는 경우 [8]
11827정성태2/26/201912486오류 유형: 521. Visual Studio - Could not start the 'rsync' command on the remote host, please install it using your system package manager.
11826정성태2/26/201912370오류 유형: 520. 우분투에 .NET Core SDK 설치 시 패키지 의존성 오류
11825정성태2/25/201917232개발 환경 구성: 428. Visual Studio 2019 - CMake를 이용한 리눅스 빌드 환경 설정 [1]
11824정성태2/25/201912025오류 유형: 519. The SNMP Service encountered an error while accessing the registry key SYSTEM\CurrentControlSet\Services\SNMP\Parameters\TrapConfiguration. [1]
11823정성태2/21/201913525오류 유형: 518. IIS 관리 콘솔이 뜨지 않는 문제
... 61  62  63  64  65  66  67  68  69  70  71  [72]  73  74  75  ...