본문 바로가기
형상관리

migrate team foundation to git

by Jundol 2020. 8. 6.

기록 

팀파운데이션에서 깃랩으로 이력을 포함해 모두 이전하기


준비물 : git-tf


git-tf 는 생명이 끝났다.

그래도 마이그레이션에는 문제가없다.

https://archive.codeplex.com/?p=gittf

(나는 개인 클라우드에 올려놓았다. 위에 사이트가 언제 폭파될지 모르므로...)


1. tfs 에서 clone 하기

git-tf clone http://myserver:8080/tfs/mycollection $/TeamProjectA/Main --deep [targetFolderPath]

ex) git-tf clone http://123.456.789.123:8080/tfs/Platform $/sampleProject --deep D:\projects\sampleProject

여기서 mycollection 은 tfs 경로에서 프로젝트 바로 윗 네이밍이다.

tfs는 보통 경로가 http://[서버URL]:[포트]/tfs/[collection]/[projectname] 

$/[프로젝트명]/[브랜치명(option)]


2. Remove trash file

*.vssscc , *.vspscc, *sln 파일에서 GlobalSection(TeamFoundationVersionControl) ... EndGlobalSection

삭제한다.


3. Remote Git 연결 및 푸시

git remote add origin https://[remote git url].git

git push origin master


별첨. (삽질 3일의 결과물)

remote error hasDotgit: contains '.git'

원격저장소에 푸시하는 시점에 위 에러를 일으킬 수 있다.

git 에서는 보안때문에 파일의 경로에 .git이 있는 경우 error 를 일으킨다.

이 문제가 과거에 커밋한 파일들 중 '.git' 경로가 포함된 파일이 있는 이력이 있을경우 무조건 에러를 일으키는데

이 과거이력들까지 모두 삭제해줘야 정상적으로 푸시가 가능한것을 확인했다.

파일을 깨끗이 지우기위해서는 여러 방법이 있다.


1. git filter-branch 이용하기

2. bfg 이용하기 (https://rtyley.github.io/bfg-repo-cleaner/)


git에 있는 파일을 삭제하기위해서는 git 에서 지원하는 filter-branch 를 사용하여도 되지만 bfg 라는 별도의 툴을 사용하면 더 빠르고 편하게 삭제할 수 있다.


유튭 테스트 영상 참고


사용법

java -jar D:\bfg-1.13.0.jar --delete-folders .git --delete-files .git --no-blob-protection D:\sampleProject\.git




참고

git-tf 사용법: https://blog.aliencube.org/ko/2015/05/15/migrating-tfs-repos-to-git-with-whole-commit-histories/

bfg 사용법 : https://stackoverflow.com/a/16842506/13178590


댓글