Isn't it true that TFS is quite quickly evolving? I started evaluating options to migrate from a trac/svn setup years ago, and wasn't impressed by TFS then. But TFS 2013.4 is really decent in terms of features, and the newest things from 2015 on vso add even more things.
The version control in TFS I'm not so sure about, and it seems obvious that some things aren't as powerful as they are in git, but if I rule out git because of repo size then TFVC looks quite appealing as far as centralized vcs goes. (really git only works up to a couple of gig of total history which is ridiculously small if you have a 10+ year project with a decent amount of binaries you want full history of). Most of the TFVC-bashing I read is from the early days (<2010) when TFVC seemed to want to emulate SourceSafe, by requiring checkouts. It's very hard to find any info on how TFVC 2013/15 compares to the alternatives.
TFS upgrading and maintenance scares me, but if you rely on VSO instead of on-premises, that part also feels manageable.
Issues with 'current' (2013) TFVC, as far as I'm concerned:
- Slow as molasses for every operation
- No offline commits. You do have 'client workspaces' now, which just basically means that the broken and insane 'The server remembers your last known state' goes away and you have something similar to svn: A local 'baseline'
- Branches are 'copies'
- Merges are a PITA
- Conflicts are a PITA
- Depending on what you're doing you probably _WILL_ need to get a specific version (and yeah, please overwrite) because get latest is broken/doesn't work (probably not relevant for client/offline workspaces anymore)
- (The UI is terrible. Far worse than the git CLI could ever be, in my world)
So, my preferences:
- Git
- Any other DVCS
- SVN
- CVS
- TFVC, SourceSafe etc., because they're the same thing in terms of usability for me (now, safety/stability is something else. TFVC would probably win when we check out the camera at the finish line).
Basically we are in a situation where we want to use festure branches or shelve sets for easier review and CI, but our repo is too big for dvcs. Feature branching is out of the question in svn of course. What I'd want is a good centralized git where you can have a 20GB bare repo but check out 2GB recent history from some branches and work with that.
The version control in TFS I'm not so sure about, and it seems obvious that some things aren't as powerful as they are in git, but if I rule out git because of repo size then TFVC looks quite appealing as far as centralized vcs goes. (really git only works up to a couple of gig of total history which is ridiculously small if you have a 10+ year project with a decent amount of binaries you want full history of). Most of the TFVC-bashing I read is from the early days (<2010) when TFVC seemed to want to emulate SourceSafe, by requiring checkouts. It's very hard to find any info on how TFVC 2013/15 compares to the alternatives.
TFS upgrading and maintenance scares me, but if you rely on VSO instead of on-premises, that part also feels manageable.