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

비밀번호

댓글 작성자
 




... 136  137  138  139  140  141  142  [143]  144  145  146  147  148  149  150  ...
NoWriterDateCnt.TitleFile(s)
1513정성태10/23/201325659개발 환경 구성: 201. Azure Blob Storage의 DNS 경로를 사용자 DNS로 바꾸는 방법 [1]
1512정성태10/18/201328916개발 환경 구성: 200. IIS AppPool의 실행 계정을 변경하는 방법
1511정성태10/12/201326900.NET Framework: 389. The 3n + 1 problem의 C#/Java 버전 풀이 [2]
1510정성태10/8/201327904오류 유형: 190. 윈도우 서버 2012 R2 설치 후 인텔 NIC으로 인한 WMI 오류 발생
1509정성태10/8/201333223오류 유형: 189. Windows Server 8.1/2012 R2 - IME 비정상 종료 현상 [1]
1508정성태10/4/201328116.NET Framework: 388. 일반 닷넷 프로젝트에서 WinRT API를 호출하는 방법 [2]파일 다운로드1
1507정성태9/30/201326069오류 유형: 188. The key 'LocalizedPerfCounter' does not exist in the appSettings configuration section.
1506정성태9/30/201328316오류 유형: 187. Parameter "basePath" cannot be a relative path
1505정성태9/26/201376866기타: 35. Microsoft Office 2007 인증 생략하는 방법 [10]
1504정성태9/24/201331252.NET Framework: 387. UDP 브로드캐스팅을 이용해 서비스 측의 IP 주소를 구하는 방법 [1]파일 다운로드1
1503정성태9/21/201336719개발 환경 구성: 199. Visual Studio - github 연동 [7]
1502정성태9/21/201340349개발 환경 구성: 198. Visual Studio - git을 이용한 로컬 소스 컨트롤
1501정성태9/21/201347980개발 환경 구성: 197. Visual Studio를 위한 Git 환경 설정 [5]
1500정성태9/20/201346337.NET Framework: 386. C# 버전의 한글 형태소 분석기 [1]파일 다운로드1
1499정성태9/20/201322845개발 환경 구성: 196. Windows Azure - Cloud Service의 인스턴스 타입 변경하는 방법
1498정성태9/20/201329168Windows: 76. 윈도우 8.1 / 서버 2012 R2 마이그레이션 [5]
1497정성태9/20/201361533웹: 28. IE 11로 바꾼 후 발생하는 문제 정리
1496정성태9/20/201333742Windows: 75. 윈도우 8.1, 2012 R2 설치 후 원격 접속이 안 되는 문제
1495정성태9/20/201324760웹: 27. IE 11 - YBM Sisa.com에서 검색된 영단어의 발음 기호가 안 나오는 문제
1494정성태9/13/201334717.NET Framework: 385. Html Agility Pack 소개 - 웹 문서에서 텍스트만 분리하는 방법 [2]파일 다운로드1
1493정성태9/13/201336192.NET Framework: 384. WebClient.DownloadString 문자열 인코딩 문제
1492정성태9/13/201323743오류 유형: 186. The .NET assembly 'Microsoft.Vsa' could not be found.
1491정성태9/9/201326658.NET Framework: 383. RSAParameters의 ToXmlString과 ExportParameters의 결과 비교
1490정성태9/7/201362029기타: 34. 도서: 시작하세요! C# 프로그래밍: 기본 문법부터 실전 예제까지 [7]
1489정성태9/4/201346620오류 유형: 185. 오피스 워드 파일이 저장되지 않는 문제 [2]
1488정성태8/27/201330527.NET Framework: 382. WCF에서 DataSet을 binary encoding으로 직렬화하는 방법파일 다운로드1
... 136  137  138  139  140  141  142  [143]  144  145  146  147  148  149  150  ...