What's the difference between git-tf and git-tfs?
Asked Answered
L

3

79

I've recently been getting really fed up with TFS. I've heard that there is a light at the end of the tunnel though. Apparently I can use either git-tf or git-tfs and treat my code as if it was managed by git, but be able to push/pull to/from a central TFS server.

My main question is I'm not sure which one of these I should use. There is git-tf which is officially supported by Microsoft, and there is git-tfs which has been around a lot longer. What's the differences between these and which should I try out first?

Larue answered 12/10, 2012 at 20:44 Comment(2)
I feel for you. The sooner you can dump TFS, the better. Then just go straight command line with MSysGit. Don't bother with anything else. Worked out well for me for the last 5 years.Subserve
@AdamDymitruk I work with a pretty open team and such, so it might happen one day, but for right now it's too expensive to just drop since we have a lot of other things in TFS than source codeLarue
B
96

Disclaimer: I started the git-tf project and although the project is now in very capable hands without me as a frequent contributor, you should absolutely consider my opinions on this to be strongly biased. (And, assuming you're on Windows, perhaps unexpected.)

There are two fundamental differences between the two tools:

  • git-tfs was built for Windows users and written on top of the .NET TFS SDK. The TFS SDK will not run under Mono, so this makes git-tfs unsuitable for cross-platform use.

  • git-tf was built for cross-platform users and written on top of the Java TFS SDK. Thus, it will run anywhere that's supported by the Java TFS SDK (Windows, Mac, Linux, AIX, HP-UX, Solaris, etc...) git-tf was explicitly created to allow Xcode users to access TFS.

On Windows, of course, you can use either. I'm not going to necessarily say one is better than the other. But I will say:

  1. My biggest complaint about git-tfs is that it won't work on Mac OS. If there was a way to make git-tfs cross-platform, then git-tf almost certainly wouldn't exist.

  2. git-tfs is faster in some cases than git-tf. Performance was not our priority in the first few revisions, correctness was.

  3. Because git-tf has a wide platform support matrix, this means that its functionality is necessarily constrained. For example, there is no UI. git-tfs, on the other hand, has a checkintool command that will open the normal TFS Checkin dialog. This can be exceptionally helpful in visualizing your changes. (If I recall, you can open up a proper visual diff from there, etc.)

  4. git-tf works by populating the git repository directly, downloading TFS objects directly into the git object database. git-tfs works by creating a TFS working folder mapping in a hidden folder, then populating the git repository from that. There's a disk penalty here, so if you have superginormous repositories, you might feel this.

  5. git-tfs can try to map your TFS branches to your git branches. A lot of people will see this as a positive for git-tfs, though I don't: git's branching model (at the repository level) and TFS's branching model (represented as folders in the repository) are so radically different as to cause problems in anything but the most simplistic workflows. But your mileage may vary.

  6. git-tfs is actively developed by a community. git-tf has not had the community adoption.

I don't want to make it sound like I'm saying git-tf is bad. It's not. I think it's actually pretty good. But it may not be your best choice.


Update: git-tf has reached end-of-life. It is no longer maintained or supported by Microsoft. We recommend git-tfs if you want a bidirectional TFS <-> git solution.

Bier answered 12/10, 2012 at 21:24 Comment(7)
So basically use git-tf on non-Windows and git-tfs on Windows?Larue
Looks like I'll go with git-tfs. I will never install Java on my dev box under any circumstances.Chervonets
Over a year later, how much of this is still true?Buckley
For larger repos, git-tfs doesn't run into the out of memory exceptions that git-tf does. Pretty much the only argument for git-tf is it is xplat.Mg
Now that .Net runs everywhere, maybe its time to migrate yours? :)Validity
@Validity Mono's been great at running .NET for years. The problem isn't the .NET code, it's the native code that's required in the TFS SDKs.Bier
git-tfs did not work for us, but Git-TF did. So far, Git-TF has been a blessing.Chas
S
32

Disclaimer: I am a developper on the git-tfs project

Edit: activity around git-tfs is reduced.

There is a support of TFS branching in git-tfs (fetching existing branches, creating branches, merge branches more easily than with TFS,... using branch command). It works most of the time but not with complex TFVC branches workflow...

See:

git-tfs is also perhaps the only tool that permit you to migrate from TFS(VC) to TFS(Git), managing workitems if needed, or plain git repository.

And some other good features...

(And it is more active and more supported)

Syndic answered 5/12, 2012 at 13:12 Comment(0)
C
7

To anyone finding this thread:

Git-TF has been officially discontinued after not having been updated after 2013 and now explicitly suggests Git-TFS as an alternative.

Git-TF End-of-Life

Git-TF has reached its end-of-life. It will have no further updates and is no longer be supported by Microsoft.

Microsoft Visual Studio Team Services now provides a simple import tool to import a Team Foundation Version Control repository into a Git repository. We recommend that you use this to convert TFVC repositories to Git.

If you require more advanced conversion needs, or you want to bridge a TFVC repository and work with a local Git repository, we recommend the git-tfs project.

Git-TF should not be used for new projects, but it will remain on the Codeplex archive for legacy users.

(Section added to the project's codeplex page in April 2017 by Edward Thomson, its initiator and author of the accepted answer)

Git-TFS seems to be actively maintained: https://github.com/git-tfs/git-tfs/commits/master

Choric answered 21/9, 2015 at 17:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.