Is there a white paper explaining why Team Foundation Version Control sucks ?
-
Git is awesome. I know for a fact the only peeps that hate it are the peeps that don't know it. Name one thing TFS does better... I'm waiting.
Jeremy Falcon
I fully agree. Based purely on my experience, I'll readily admit I'm not a fan of Git, but fully acknowledge that this is entirely because I don't know it well enough. I have zero doubt, at this stage, Git is the superior product. I worked with a guy who *loved* it, and his enthusiasm for it was contagious. Who gets excited about TFS?? :-)
-
More power to you. Everybody should be blessed with that sort of experience. Maybe what we did deviated from what was made available through the GUI, but we were strongly encouraged (by those who were familiar with the system) to "just do everything from the command line".
That is not unusual. There are a lot of people whose experience came up through non-Windows OSs that had nothing but a command line in most cases. They tend to want to force that 1990s way of interface on others now. My point is that using Git in Visual Studio has been around with a GUI interface for years. If the less informed (like those telling you to use command line) choose not to use it, that is their problem, and it sounds like they made it your problem with which to deal. Sorry they hold you back like that.
-
That is not unusual. There are a lot of people whose experience came up through non-Windows OSs that had nothing but a command line in most cases. They tend to want to force that 1990s way of interface on others now. My point is that using Git in Visual Studio has been around with a GUI interface for years. If the less informed (like those telling you to use command line) choose not to use it, that is their problem, and it sounds like they made it your problem with which to deal. Sorry they hold you back like that.
Maybe I haven't made it sufficiently clear in the thread. At the time, the company I worked for was on contract with Microsoft. You know, makers of VS and TFS. Those Microsoft people we contracted with were using Git, not TFS, and there was a very strong push, coming from them, to do everything at a command prompt. These are not folks who don't know Microsoft products, or how to use VS or TFS. Maybe I shouldn't be saying this publicly, but I'm not naming who I work for, nor the team at Microsoft we were working with. But internally, there's more and more support for Git - at TFS's expense.
-
Maybe I haven't made it sufficiently clear in the thread. At the time, the company I worked for was on contract with Microsoft. You know, makers of VS and TFS. Those Microsoft people we contracted with were using Git, not TFS, and there was a very strong push, coming from them, to do everything at a command prompt. These are not folks who don't know Microsoft products, or how to use VS or TFS. Maybe I shouldn't be saying this publicly, but I'm not naming who I work for, nor the team at Microsoft we were working with. But internally, there's more and more support for Git - at TFS's expense.
You were clear. Microsoft, especially under the current CEO, suffers from a lot of command line, Linux-oriented developers and program managers who know little or nothing about MS’s past with GUI tools. Even with visual tools that do all that is necessary, those oriented towards command line tools will still pretend a command line is needed. I am not surprised you had folks at MS tell you that. I agree that they were sincere in their advice, just sincerely wrong. That same mentality is why the software engineers (Alan Cooper’s team) back in the 1990s created a very useful GUI builder for Visual Basic (later ported to Visual Studio). But when extending Visual Studio to mobile apps (Xamarin Forms/MAUI) and web (Blazor), MS software engineers of the caliber they had in the 1990s and 2000s were long gone, and the command line oriented software engineers and program managers were not advanced enough to know how to build GUI builders for mobile and web, or to understand the significant value in them. MS development tools suffer from not having visual designers, limited to the archaic “hot reload”. The advice given to you about command line use of Git fits right in with a much wider engineering deficit at MS.
-
Git is awesome. I know for a fact the only peeps that hate it are the peeps that don't know it. Name one thing TFS does better... I'm waiting.
Jeremy Falcon
Labels. Git doesn't have them at all and they are critical. And an API / .net integration. And integrated ticketing. Edit: Here's what the Users' Manual for CMS has to say about Classes (which are very like Labels in TFS.)
5.1.2 Classes
A class is a set of specific generations of elements that can be manipulated as
a unit. A class can hold only one generation of any element.
You use classes to represent the state of development of a system or set of
elements at a particular time or stage. You can think of a class as a picture
taken of a library at a particular time. For example, you might create a class
named FIRST_DRAFT that contains only those generations of elements that
were used in producing the first draft of a manual.
Typically, you create a class to contain generations of all the components of a
software system for a release version of a product. You can establish classes
for different stages or milestones. For example, you could establish one class
for implementation, a second for testing, and a third for generations that
have completed the first two stages. As each module progresses through each
stage, you assign each generation to an appropriate class; thus, you can easily
determine your progress by displaying the contents of the different classes, and
you can later reconstruct any stage of development.
Once you insert an element generation into a class, further changes made to
the element are not reflected in the contents of that class.HP DECset for OpenVMS Guide to the Code Management System Order Number: AA–KL03H–TE July 2005 In particular: "or set of elements" -- the developer has full control over which generations of which elements are included in the class. Note that VSS does not have such a feature, but it was included in TFS.
CREATE CLASS class-name[,...] ‘‘remark’’
Command Qualifiers Defaults
/[NO]LOG /LOG
/OCCLUDE[=option,...] /OCCLUDE=ALL
Creates one or more classes. After creating a class, you can place any related
set of element generations in that class by using the INSERT GENERATION
command. The CREATE CLASS command does not automatically place any
generations in the created class. For more information on classes, see the
HP DECset for OpenVMS Guide to the Code Management System.HP DECset for OpenVMS Code Management System Reference Manual Order Number: AA–QJEVC–TK July 2005 The phrase, "any related set of element generations", may give the impression that there already has to be
-
Dear dog, I thought GIT sucked... but the winner goes to TFVC It seems in all my years of development, I've moved forward with Version Control. RCS -> CVS -> Subversion -> git but going from git to TFVC feels like a step back. Maybe there's just something I don't get from the system.
CI/CD = Continuous Impediment/Continuous Despair
Maximilien wrote:
but going from git to TFVC feels like a step back.
Because it is a step back... TFVC is a centralized version control system, like Subversion. You basically went from Git, which is decentralized, back to a different flavor of Subversion. Microsoft has been ditching TFVC in favor of Git for years now.
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
-
Dear dog, I thought GIT sucked... but the winner goes to TFVC It seems in all my years of development, I've moved forward with Version Control. RCS -> CVS -> Subversion -> git but going from git to TFVC feels like a step back. Maybe there's just something I don't get from the system.
CI/CD = Continuous Impediment/Continuous Despair
When I was managing a dev team of 6 on a pretty large codebase, we used TSVC and later Git. TSVC worked very well for us, and was relatively easy to manage. The obvious difference was centralised vs. decentralised/distributed. We didn't need that complexity. Torvaulds designed Git because he was managing many developers spread around the world in different time zones, and the distributed nature of Git matched that. You pick the tool suited to the job in hand. Moving from any tool you are familiar and competent with to another is often going to feel awkward, if not a backward step, until you are experienced with the new one. Persevere and you will eventually find they both have their strengths and weaknesses. With regard to "must use commandline" (or Gui) I find the professional elitism or evangelism that pervades so many software developers irksome and irritating, and use of the command line as some sort of implied superiority especially so. I use the command line myself when it's easier or has options I need that are not supported by the available Gui tools, and Gui tools when they are more convenient. The commanline is useful for automating processes with scripts, most other times it's easier to use a Gui. Just pick the approach that suits the circumstances.
-
MarkTJohnson wrote:
but I do long for the days of locking a file so no one else could modify while I was
Or, another way to say this..."I hate merging!" right? :laugh: We all hate merge conflicts!! :-D
Not everything can be merged...SSIS for example.
-
I fully agree. Based purely on my experience, I'll readily admit I'm not a fan of Git, but fully acknowledge that this is entirely because I don't know it well enough. I have zero doubt, at this stage, Git is the superior product. I worked with a guy who *loved* it, and his enthusiasm for it was contagious. Who gets excited about TFS?? :-)
dandy72 wrote:
acknowledge that this is entirely because I don't know it well enough
My peeve is when people are full of fluff. If you like TFS just because you like it and that's the only reason why... you do you. :laugh: It's when peeps start lying about another product they know little about as the justification, that's just no bueno.
dandy72 wrote:
Who gets excited about TFS??
:laugh: :laugh:
Jeremy Falcon
-
Not everything can be merged...SSIS for example.
-
Labels. Git doesn't have them at all and they are critical. And an API / .net integration. And integrated ticketing. Edit: Here's what the Users' Manual for CMS has to say about Classes (which are very like Labels in TFS.)
5.1.2 Classes
A class is a set of specific generations of elements that can be manipulated as
a unit. A class can hold only one generation of any element.
You use classes to represent the state of development of a system or set of
elements at a particular time or stage. You can think of a class as a picture
taken of a library at a particular time. For example, you might create a class
named FIRST_DRAFT that contains only those generations of elements that
were used in producing the first draft of a manual.
Typically, you create a class to contain generations of all the components of a
software system for a release version of a product. You can establish classes
for different stages or milestones. For example, you could establish one class
for implementation, a second for testing, and a third for generations that
have completed the first two stages. As each module progresses through each
stage, you assign each generation to an appropriate class; thus, you can easily
determine your progress by displaying the contents of the different classes, and
you can later reconstruct any stage of development.
Once you insert an element generation into a class, further changes made to
the element are not reflected in the contents of that class.HP DECset for OpenVMS Guide to the Code Management System Order Number: AA–KL03H–TE July 2005 In particular: "or set of elements" -- the developer has full control over which generations of which elements are included in the class. Note that VSS does not have such a feature, but it was included in TFS.
CREATE CLASS class-name[,...] ‘‘remark’’
Command Qualifiers Defaults
/[NO]LOG /LOG
/OCCLUDE[=option,...] /OCCLUDE=ALL
Creates one or more classes. After creating a class, you can place any related
set of element generations in that class by using the INSERT GENERATION
command. The CREATE CLASS command does not automatically place any
generations in the created class. For more information on classes, see the
HP DECset for OpenVMS Guide to the Code Management System.HP DECset for OpenVMS Code Management System Reference Manual Order Number: AA–QJEVC–TK July 2005 The phrase, "any related set of element generations", may give the impression that there already has to be
PIEBALDconsult wrote:
Labels. Git doesn't have them at all and they are critical.
They're called tags in git. Seriously man, we're supposed to be better than this.
PIEBALDconsult wrote:
And integrated ticketing.
I'm guessing you don't use any non-MS product? I'm sure there are tons of other products that do but Jira, as one example, has integrated with Git for years now. I mean years.
Jeremy Falcon
-
Maximilien wrote:
but going from git to TFVC feels like a step back.
Because it is a step back... TFVC is a centralized version control system, like Subversion. You basically went from Git, which is decentralized, back to a different flavor of Subversion. Microsoft has been ditching TFVC in favor of Git for years now.
Best, Sander Azure DevOps Succinctly (free eBook) Azure Serverless Succinctly (free eBook) Migrating Apps to the Cloud with Azure arrgh.js - Bringing LINQ to JavaScript
Exactly. I dunno about you, but a good dev does frequent (ok, not too frequent) commits. I don't miss slow commits at all. :laugh: A commit is a check-in for the non-git folk among us.
Jeremy Falcon
-
I know how to merge, I just wish I understood why some things throw merge conflict when there is no conflict, you are just changing a particular line. >>>>> New Code This line says B ===== This line says A <<<<< Old Code Why is that a merge conflict?
I’ve given up trying to be calm. However, I am open to feeling slightly less agitated. I’m begging you for the benefit of everyone, don’t be STUPID.
Part is you can't just "learn" how to merge really. What needs to happen when the merge involves code you didn't author is often not so clear. So it's a sudden detour to getting anything productive done and we resent that. Sometimes merging can be massively painful and it just rises out of nowhere. It's semi-predictable you may have to merge but not at all predictable what that might actually mean in terms of time/effort. Will say though that some of the architecturally 'bloaty' paradigms help aid in merging being less a hassle because bits that may have been changes/revisions before are totally new bits. Basically, rather merge the new stuff than one of the old megamonolith apps.
-
I've gotten used to git (Mostly thanks to the GitKraken product), but I do long for the days of locking a file so no one else could modify while I was.
I’ve given up trying to be calm. However, I am open to feeling slightly less agitated. I’m begging you for the benefit of everyone, don’t be STUPID.
MarkTJohnson wrote:
of locking a file
I always saw that need as a very likely issue with architecture, design and/or project management. For large teams the code should not be laid out in a way that results in this being a problem in any substantial way. And for those cases where one or two files are central then it should be possible to layout out the project tasks so one can touch that file very quickly. For example if an enum is used widely then it should be in its own file (and perhaps own project/jar) and the project task should be to update it and do nothing else for that task.
-
You were clear. Microsoft, especially under the current CEO, suffers from a lot of command line, Linux-oriented developers and program managers who know little or nothing about MS’s past with GUI tools. Even with visual tools that do all that is necessary, those oriented towards command line tools will still pretend a command line is needed. I am not surprised you had folks at MS tell you that. I agree that they were sincere in their advice, just sincerely wrong. That same mentality is why the software engineers (Alan Cooper’s team) back in the 1990s created a very useful GUI builder for Visual Basic (later ported to Visual Studio). But when extending Visual Studio to mobile apps (Xamarin Forms/MAUI) and web (Blazor), MS software engineers of the caliber they had in the 1990s and 2000s were long gone, and the command line oriented software engineers and program managers were not advanced enough to know how to build GUI builders for mobile and web, or to understand the significant value in them. MS development tools suffer from not having visual designers, limited to the archaic “hot reload”. The advice given to you about command line use of Git fits right in with a much wider engineering deficit at MS.
MSBassSinger wrote:
back in the 1990s created a very useful GUI builder for Visual Basic
Having worked on a system that specifically was intended to build UIs long ago and having worked on a CMS (Content Management System) for the past 5 years that is used to build very large company sites I believe I have a bit of knowledge on such attempts... And that is that UI presentations are never sufficient enough to do everything that knowledgeable individuals want to do.
-
I fully agree. Based purely on my experience, I'll readily admit I'm not a fan of Git, but fully acknowledge that this is entirely because I don't know it well enough. I have zero doubt, at this stage, Git is the superior product. I worked with a guy who *loved* it, and his enthusiasm for it was contagious. Who gets excited about TFS?? :-)
dandy72 wrote:
Who gets excited about TFS??
I don't get excited about any tool. Just as I don't get excited when I decide whether to use a hammer, saw or screw driver. I do know that git, and this is by design, only does versioning(labeling) at the repo level. That is entirely appropriate for a tool that was designed for open source libraries. But in a company enterprise system the ability to version (label) within a sub-code tree without managing subsystems as independent deliverables is something that can be very useful for large complex systems. This is appropriate for mid-size companies where they have gotten big enough that there is now more than one team but not many. When a company gets big enough of course they will start need to actively managing multiple deliverables including libraries. (It can be interesting to read what google uses for source control and git is not it.)
-
When I was managing a dev team of 6 on a pretty large codebase, we used TSVC and later Git. TSVC worked very well for us, and was relatively easy to manage. The obvious difference was centralised vs. decentralised/distributed. We didn't need that complexity. Torvaulds designed Git because he was managing many developers spread around the world in different time zones, and the distributed nature of Git matched that. You pick the tool suited to the job in hand. Moving from any tool you are familiar and competent with to another is often going to feel awkward, if not a backward step, until you are experienced with the new one. Persevere and you will eventually find they both have their strengths and weaknesses. With regard to "must use commandline" (or Gui) I find the professional elitism or evangelism that pervades so many software developers irksome and irritating, and use of the command line as some sort of implied superiority especially so. I use the command line myself when it's easier or has options I need that are not supported by the available Gui tools, and Gui tools when they are more convenient. The commanline is useful for automating processes with scripts, most other times it's easier to use a Gui. Just pick the approach that suits the circumstances.
-
dandy72 wrote:
acknowledge that this is entirely because I don't know it well enough
My peeve is when people are full of fluff. If you like TFS just because you like it and that's the only reason why... you do you. :laugh: It's when peeps start lying about another product they know little about as the justification, that's just no bueno.
dandy72 wrote:
Who gets excited about TFS??
:laugh: :laugh:
Jeremy Falcon
Jeremy Falcon wrote:
It's when peeps start lying about another product they know little about as the justification, that's just no bueno.
This. So much this. In the case of Git vs TFS, like I said, I stick with TFS because it's all I'm comfortable with (right now) and I haven't had any real bad experiences with it. I managed to get myself in trouble with Git in the past (my own ignorance / my own fault), and fortunately I had people who helped me out, but I still have zero problem saying Git is the way to go. I just wish I had the time and motivation to learn it, and learn it well, from a good, up to date, and reliable source.
-
dandy72 wrote:
Who gets excited about TFS??
I don't get excited about any tool. Just as I don't get excited when I decide whether to use a hammer, saw or screw driver. I do know that git, and this is by design, only does versioning(labeling) at the repo level. That is entirely appropriate for a tool that was designed for open source libraries. But in a company enterprise system the ability to version (label) within a sub-code tree without managing subsystems as independent deliverables is something that can be very useful for large complex systems. This is appropriate for mid-size companies where they have gotten big enough that there is now more than one team but not many. When a company gets big enough of course they will start need to actively managing multiple deliverables including libraries. (It can be interesting to read what google uses for source control and git is not it.)
jschell wrote:
I don't get excited about any tool. Just as I don't get excited when I decide whether to use a hammer, saw or screw driver.
Hypothetical situation: I suppose if you repeatedly have really bad, frustrating experiences with one tool, and have to put up with it for long periods of time (because there's just nothing better out there), then you find out about some other tool, give it a try, and it works a lot better - and you never go through a bad experience ever again - that'd be reason enough to get excited about something. I'm not saying this is what happened with my coworker, but I had to smile at his enthusiasm using a software program. You don't see that often. Bless him for that, I say.
-
Jeremy Falcon wrote:
It's when peeps start lying about another product they know little about as the justification, that's just no bueno.
This. So much this. In the case of Git vs TFS, like I said, I stick with TFS because it's all I'm comfortable with (right now) and I haven't had any real bad experiences with it. I managed to get myself in trouble with Git in the past (my own ignorance / my own fault), and fortunately I had people who helped me out, but I still have zero problem saying Git is the way to go. I just wish I had the time and motivation to learn it, and learn it well, from a good, up to date, and reliable source.
dandy72 wrote:
I managed to get myself in trouble with Git in the past
I'll admit, Git does have a higher learning curve. That's both good and bad ya know. There are things I can pull off with Git that would be impossible in other SCMs - I think. I know Git the best these days. What I do know for sure is that I can do just about anything one can imagine, but that comes at a cost of a learning curve. Anywho, if you don't have a pressing need for it and you do have something that works, that's a totally acceptable stance. I say that all the time about tech. Time is finite. There's other things life... like going outside... that are important too.
dandy72 wrote:
I just wish I had the time and motivation to learn it, and learn it well, from a good, up to date, and reliable source.
Yeah, unfortunately, the best reliable source is other developers actively using it IMO. And even that's not a perfect scenario, but that's how I learned it. Git books never really did it for me.
Jeremy Falcon