Is Team Fuondation Service (TFS) better than Subversion?



  • We are all on windows machines here and some people are thinking of using TFS.

    I am in 2 minds about it.

    Any thoughts?

    Also are you using any command line tool for TFS?



  • I think the answer 100% depends on whether you're using Visual Studio or not.



  • Syllogistically:

    AIDS is better than SVN.

    I've heard TFS is pretty shitty, but nobody's ever told me it's shittier than being diagnosed with AIDS.

    Ergo, TFS is better than SVN.



  • Eh, I dunno, AIDS might be better than CVS, but better than SVN? That's stretching it a bit. How would you compare TFS to cancer?



  • @ekolis said:

    Eh, I dunno, AIDS might be better than CVS, but better than SVN? That's stretching it a bit. How would you compare TFS to cancer?

    What kind of cancer? Breast/cervical/ovarian or one I actually care about?

    That said, I'd rather have AIDS than cancer because the former is very controllable with drug therapy. Here it is in graphical representation:

    TFS

    AIDS

    SVN

    Cancer

    CVS

    ...

    That stupid one Canonical created because there weren't already three dozen mediocre DVCSes...



  • @morbiuswilters said:

    Git

    Autism

    Mercurial

    Diarrhea

    SVN

    AIDS

    VISUAL SOURCESAFE POUND

    Cancer

    CVS

    ...

    That stupid one Canonical created because there weren't already three dozen mediocre DVCSes...

    FTFY



  • @Ben L. said:

    @morbiuswilters said:
    Git

    Autism

    Mercurial

    Diarrhea

    SVN

    AIDS

    VISUAL SOURCESAFE POUND

    Cancer

    CVS

    ...

    That stupid one Canonical created because there weren't already three dozen mediocre DVCSes...

    FTFY

    I dunno, I think I'd rather have diarrhea than autism. I mean, even very persistent, unpredictable, lifelong diarrhea would still allow for a semi-normal life. You could get married, have kids, do something meaningful for your fellow man.

    If you have autism your entire life will consist of making, revising and nit-picking lists on Internet forums.



  • @morbiuswilters said:

    IfBecause you have autism your entire life will consist of making, revising and nit-picking lists on Internet forums.



  • @Ben L. said:

    @morbiuswilters said:
    Git

    Autism

    Mercurial

    Diarrhea

    SVN

    AIDS

    VISUAL SOURCESAFE POUND

    Cancer

    CVS

    ...

    That stupid one Canonical created because there weren't already three dozen mediocre DVCSes...

    FTFY

    Was CVS really that bad? I don't remember it being worse than SourceSafe... ugh! Or did it just seem better at the time because there was nothing else to compare it to?



  • @ekolis said:

    Was CVS really that bad?

    I don't know. My primary experience with it was awful.

    Many years ago, the company I worked for used CVS. Since the "architect" did not know how to branch in CVS, branching was accomplished by creating an entirely new repository for developing a new version in.

    Actually, scratch that. The real flow went something like this: as the rest of the programmers were busy fixing the numerous bugs and 20%-finished "features" that had already been released into production, the "architect" would start developing new features for the next version in the same repository. Eventually, some of his changes would leak out into the production environment, bug reports would be filed by our long-suffering customers and this would be impetus to create a new repository for him to fuck up.

    Since we weren't using anything approaching real branching, the only way to merge bugfixes was to do a diff -r and try to find which files differed, and then make the fixes by hand. This was on a codebase comprising approximately 500k lines. As this process was so awful, bugfixes were rarely merged forward, meaning a release of a new version to production often brought a deluge of regressions. Sometimes the same bug was fixed 3 or 4 times, depending on how many future "branches" we had.

    Complicating things is that the "architect" made everyone use editor macros which automatically committed on every single file save. If you saved a file that file was immediately committed to trunk. Since all commits were automatic, there were no usable commit messages.

    post-commit hooks caused all commits to automatically be checked out on our only development server. We had one single virtual host that all developers worked on. It was forbidden to have a local copy of the source which you might be able to work on. So if you changed a line and saved a file, that file was instantly committed and that commit was instantly "live" on the development server. If somebody else was using ghetto-debugs by print()ing out to the page, you would see those debugs. If somebody made the tiniest error in a file they saved, everyone saw that instantly reflected in the single dev environment. So the entire team would frequently be stuck waiting for a single developer to frantically track down and fix his bug.

    The problem of seeing everybody else's print() debugs became such a problem (since it was printed to the page and frequently broke HTML, CSS or JS you might be working on) that finally some functions were created that would limit a debug to a particular IP address, so it would only be viewable by a single developer.

    God forbid you commit (i.e. hit save in the editor) an actual fatal error in a system-wide library. Most include() statements had error suppression in front of them, which suppressed all errors from that file or any files included by it. So you'd get a white screen, absolutely no error message and around 70k lines of code where the error could lurk. And since everyone was essentially working on top of each other, it was frequent that two people would be making incompatible changes to a system function which meant you couldn't even assume the real error had crept in in the last 100 commits. And since there was only one development environment, everyone just took an extended smoke break until the bug was tracked down.

    You could try removing the error suppression from in-front of the include() statements in the hope of uncovering where the error happened, but this was risky. See, the reason error suppression was on was because without it the system would easily generate 60,000 lines of notices and warnings from a single page load. And that volume of log output on the shitty hardware would frequently cause Apache to lock up hard, possibly even freezing the kernel and corrupting the filesystem.

    Keep in mind, this was only a tiny fraction of the insanity that went on in this place. As three other quick examples: the "architect" avoided functions whenever possible and just copy-and-pasted code because "functions are too slow and I'm a kung fu master" (I am not making this up); if he did use a function he liked to make functions with names like "dostuff()" that took 30 parameters and would be thousands of lines long--depending on the different parameters they would do entirely different things like query a DB, make a CSV file for download or output HTML.. it was pure fucking madness of a kind I have never seen since; the architect would use variable names like "$dick" and "$pussy" because "it's funny" and descriptive variable names were frowned upon because "long variable names make the code too slow".

    Oh, and one time I had to debug a tool designed by another engineer. A smart guy, but for some reason he decided the UI should use something like 20 different iframes that would communicate with each other through convoluted means. Like, each button would be in an iframe and clicking that button would submit a form in that iframe back to the same URL which would hit the backend PHP which would concatenate and spit out some Javascript which would then load in the iframe and would call to another iframe telling it to submit its "hidden form" which would repeat this cycle on 5 other iframes, I am not even fucking kidding. Seriously, filling in 3 text fields and clicking a "Next" button caused something like a dozen iframe form submissions and an ungodly tangle of PHP and JS. I nearly went insane trying to debug it. After 2 days of staring at it I gave up and went to him, a broken man, and said "Dude, no offense, but I don't know what you were thinking when you made that. We need to scrap it as soon as possible because nobody will ever be able to debug it." (Keep in mind, the reason I was debugging it was because I was trying to fix a bug that had already stumped him for a week.)



  • @morbiuswilters said:

    Many years ago,
     

    I am disappointed.

    No seedy underbelly noir anywhere.



  • @morbiuswilters said:

    If you have autism your entire life will consist of making, revising and nit-picking lists on Internet forums.

    But that is only if you are really unlucky, most of the autistics are unable to do that as communicating in a normal fashion is impossible to them. Most people forget that Asperger's is a really small subset of autism.



  • @blakeyrat said:

    I think the answer 100% depends on whether you're using Visual Studio or not.
     

     

    Yes definitively using C# as wepon of choice. So VS 2010 or even 2012 is most likely.

    Development is going to be all RAD and with heavy usage of webforms, we should be up and running in no time.



  • Then I would say TFS is a good choice.



  •  I keep thinking the title says Team Fondue Server because of the typo.



  • @dhromed said:

     I keep thinking the title says Team Fondue Server because of the typo.

     

     

    Xan you please fix that typo?

     



  • @morbiuswilters said:

    @Ben L. said:
    @morbiuswilters said:
    Git

    Autism

    Mercurial

    Diarrhea

    SVN

    AIDS

    VISUAL SOURCESAFE POUND

    Cancer

    CVS

    ...

    That stupid one Canonical created because there weren't already three dozen mediocre DVCSes...

    FTFY

    I dunno, I think I'd rather have diarrhea than autism. I mean, even very persistent, unpredictable, lifelong diarrhea would still allow for a semi-normal life. You could get married, have kids, do something meaningful for your fellow man.

    If you have autism your entire life will consist of making, revising and nit-picking lists on Internet forums.

    "Autism" is basically just the Latin-derived version of "selfishness." Similarly, "dyslexia" is the same as "illiteracy," although in that case, the original word was already Latin, and the traitors had to go all the way to Greek.



  • @Nagesh said:

    Xan you please fix that typo?
     

    I'm not sure I want to.



  • @dhromed said:

     I keep thinking the title says Team Fondue Server because of the typo.

    Team fondue is something that's provided at really elite Bay Area employers only.



  • @dhromed said:

     I keep thinking the title says Team Fondue Server because of the typo.

    I always think TFS stands for Team Fortress Server, because getting data into or out of it is like breaking down the walls of a fortress!



  • In this day and age I couldn't see using anything other than a DVCS (Git/Mercurial) unless you were already using TFS/SVN/similar correctly.



  • @dhromed said:

    @Nagesh said:

    Xan you please fix that typo?
     

    I'm not sure I want to.

    He wasn't addressing you, fodder.

     



  • @ekolis said:

    @dhromed said:

     I keep thinking the title says Team Fondue Server because of the typo.

    I always think TFS stands for Team Fortress Server, because getting data into or out of it is like breaking down the walls of a fortress!


    TF2's srcds is available using the easy-to-remember Steam AppID 232250.


Log in to reply