|
TFS and Git are not mutually exclusive?
Do you mean TFVC, the Microsoft Team Foundation Version Control that not even Microsoft is using anymore?
TFS supports both TFVC and Git, but I'd recommend Git.
In fact, TFVC shouldn't even be an options anymore because, as said, not even its creator Microsoft uses it anymore.
Branching and merging is a lot better and easier in Git.
Besides, Git has become the industry standard making it easier to find help and documentation.
I've also heard good things about Mercurial by the way.
And I guess SVN is still an options too, although I never hear about it anymore.
I'm not sure if those are supported in TFS though
|
|
|
|
|
Since I've been using both Git and TFS I can only recommend Mercurial.
|
|
|
|
|
If you use VSO (Visual Studio online) it offers TFS and Git. At work we use Git through VSO.
|
|
|
|
|
TFS works well for me. However, the cool kids at work are clamoring for Git. I think they may know a thing or two more than me about Git, so I'm on a mission to educate myself on the subject before chiming in with my 2¢ worth.
/ravi
|
|
|
|
|
Link I found interesting on git.
GitFlow considered harmful | End of Line Blog[^]
Don't think that explicitly mentions the following...
A git repository only allows versioning for the repository. When you apply a version number or extract a version it applies do all files in the repository. This is fine for single projects.
However consider what happens in an enterprise with an example setup.
- Libraries (sub projects) A, B, C
- Application X uses A and B
- Application Y uses B and C
In the above Git only allows for the following
Scenario 1
- Repository: A
- Repository: B
- Repository: C
- Repository: X
- Repository: Y
Scenario 2
- Repository: A, B, C, X, Y
If you choose one then you must manage each of those. So a release of X means that three repositories must be 'manually' labeled. And each must be built.
If you choose two then B has the same labels as A, and when you pull you get B even if you just want A.
Mitigation strategies can be created but those still exist outside of Git itself. For example creating yet another repository to handle build tools (to insure labeling, dependencies, etc.)
|
|
|
|
|
I believe the standard is more or less GIT.
We switch from Subversion to GIT (hosted on ButBucket) a year ago, and we use TortoiseGit as a front end.
The transition was hard; learning curve is very steep.
The thing with GIT is that it has a lot of advanced features that you need to keep clear of that most people do not use.
Doing simple Code Versionning is easy. (clone, checkout, pull, push commit ...)
Branching is fun and more or less seamless (we do branches for each issue) once you "get it".
This is one tutorial that I used.
Git Tutorials and Training | Atlassian Git Tutorial
I'd rather be phishing!
|
|
|
|
|
Maximilien wrote: The transition was hard; learning curve is very steep.
I didn't find that to be true.
I will mention that I have had decades of experience and have used multiple different source control systems so perhaps that changes my view.
|
|
|
|
|
I am just so glad I work alone….
|
|
|
|
|
A_Griffin wrote: I am just so glad I work alone….
Hah! That makes two of us! I still have a coworker that does mostly non-coding stuff. I've made it almost 20 years without source control...code fearlessly!
"Go forth into the source" - Neal Morse
|
|
|
|
|
I'm using versioncontrol also for private stuff.
|
|
|
|
|
Well, I do too - but as a single developer I can use my own (very) simplified methods, which double as a backup system.
|
|
|
|
|
I use Mercurial, it's nonintrusive, filebased (i.e. easy to backup) and easy to use. And powerful when you need it.
|
|
|
|
|
I use Git begrudgingly.
Worst part of the learning curve is that if you have a file X.txt in branch A but not in branch B when you switch branches from A to B X.txt vanishes. It will come back when you switch back as long as it was checked in. It focuses on the repository as a whole rather than individual files.
Get a good ide for Git, they help and have all the features one normally needs. I'm enjoying GitKraken right now but have used SourceTree as well.
|
|
|
|
|
MarkTJohnson wrote: It focuses on the repository as a whole rather than individual files. I find that's part of what makes branching incredibly easy in git though. Less is more.
Jeremy Falcon
|
|
|
|
|
To each his own. I prefer the old days with file locking.
But the files disappearing between branches was is real PITA at times when you want to compare files.
|
|
|
|
|
MarkTJohnson wrote: To each his own. I prefer the old days with file locking. Fair enough.
MarkTJohnson wrote: But the files disappearing between branches was is real PITA at times when you want to compare files. Well, you can do a diff across branches. Not sure what to click in Tortoise for it, but it has to support it since git does.
Jeremy Falcon
|
|
|
|
|
In tortoise you would need to select the file you want to compare, view the log then control select the revisions in the log you want to compare then double click in the lower window to see the differences... I think...
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
Cool, thanks.
Jeremy Falcon
|
|
|
|
|
Git is an immense over kill. SO complex, so powerful, so much more than you need, but it works. Very very well.
Take the time to get to know it, the online support is very good. You will, after a few years, wonder why you use anything else.
|
|
|
|
|
I made a pretty extensive research on the subject a few years ago and decided for Mercurial instead.
If you want to change your VC system you should anyway really opt for a distributed one.
Mercurial is filebased while Git is having a little database, so Git is having much better performance on large repositories (Yes, I'm oversimplifying things)
This is not the reason Git became the defacto standard. Almost everything else is better with Mercurial, especially the learning curve.
It was because when Linus Torvalds was choosing a DVC for Linux, he really liked a GIT function called Rebase, which allowed him to completely remove edits from people he considered idiots.
|
|
|
|
|
I also prefer Mercurial, but everyone seems to use git, so I switched so I can more easily collaborate. And I now use GitHub, so more reason for git.
Linux Torvalds likes git because he created it! Bazaar (another distributed source control system), git and Mercurial were all released within a month of each other back in 2005.
|
|
|
|
|
Personally, I've long favoured Mercurial but have to use Git these days. Mercurial is nice and intuitive and does the job without any unnecessary dramas. The Tortoise front end is really easy to work with. It doesn't feel like a reinvention of ye-olde UNIX SCCS and it's generally everything you'd want in a source control system.
It's main problem vs. Git would seem to be that Git is trendy and Mercurial is not.
98.4% of statistics are made up on the spot.
|
|
|
|
|
|
Jeremy Falcon
|
|
|
|
|
Use GIT
It is ugly and non intuitive which makes you think very carefully about what you are doing with it and be frugal.
Use C++ for the same reason.
|
|
|
|