GIT TFS How To
Intro
GitTfs is an addon to GIT that can directly talk to a TFS Servers TFS Projects and both clone, fetch and checkin commits to it. This way, a TFS Project can be GIT cloned into a local GIT repo, a remote GIT repo can be added, and the local repo can be used to move commits between the 3 repos (remote GIT <-> local GIT with GIT TFS <-> TFS
You can then automate the transfer of commits between the GIT Server and the TFS Server by calling a simple bat file in intervals that performs a pull/push to GIT and pull/checkin to TFS and in most cases (unless conflicts occur) that should keep the 2 repos in sync automatically.
Steps (repeat step 6 -> end for updating the repo)
Step 0 Setup VS or TFS Client and GIT for Windows
-
Step 1 Get GitTfs
- https://github.com/git-tfs/git-tfs/releases
- Unzip into a local folder (ex: C:\GitTfs)
- Unblock all files (use powershell: PS> Get-ChildItem C:\GitTfs -Recurse | Unblock-File)
- Add folder to your command prompt PATH (CMD> set PATH=C:\GitTfs;%PATH%)
Step 2 Create a TFS Project (or GIT Project if you start from a TFS Repo)
Best done from VS or TFS GUIStep 3 Clone the TFS Repo using GIT:
git tfs clone http://n11438:8080/tfs/LoadTestLab $/VSTT-PluginsStep 4 Change directory into your TFS clone
cd VSTT-PluginsStep 5 Add a GIT Remote
git remote add gitlab https://git.lightsinline.se/products/VSTT-Plugins.gitStep 6 Pull all the latest changes from TFS
git tfs pullStep 7 Pull from the remote GIT
git pull gitlab masteror
git pull gitlab master --allow-unrelated-historiesif you already had content in the TFS RepoIf you get merge conflicts, you need to fix them and commit the merge, otherwise you can not checkin to TFS (or vice versa). One easy way to solve conflicts is to use Visual Studio. Add the folder you work in as a local GIT Repo in Team Explorer, open it, goto Sync and it will show you all the conflicts, and you can easely inspect them, choose a side (Remote is the version we dowloaded from before the merge, Local is the version of the files before the remote pull/merge) or do a manual Merge of the code.
Step 8 Checkin to remote TFS
git statusshould say "nothing to commit, working tree clean"
git rev-parse HEADto show you the latest commnit id or
git logto show you the latest commits and their messages and finally
git tfs checkin -m "Sync to Gitlab Commit b617ec73"to push the commits to TFS
Enter any commit message you find informational (-m above)Step 9 Push to remote gitlab
git push gitlab masterif you had changesets from TFS that you want to push to the gitlab remote
Done!