Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Is there a white paper explaining why Team Foundation Version Control sucks ?

Is there a white paper explaining why Team Foundation Version Control sucks ?

Scheduled Pinned Locked Moved The Lounge
collaborationdevopsquestionannouncement
82 Posts 16 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Jeremy Falcon

    PIEBALDconsult wrote:

    With a Label or Class, you include only the items you are interested in -- which could be all of them, but usually not.

    If you define files you're only interested in as files that changed for a commit, my understanding is that is a changeset. Keep in mind I haven't used TFS in years, so my memory is rusty. What non-Git peeps don't get is that Git doesn't need that feature. Git was designed from the ground up to be great a diffing, merging, etc. I've never seen another SCM do it better. If I need to figure out which files changed between commits, tags, or branches it's just one simple command away. So, Git can already do this.

    Jeremy Falcon

    P Offline
    P Offline
    PIEBALDconsult
    wrote on last edited by
    #48

    I suspect you never used Labels in TFS either, many people don't.

    Jeremy Falcon wrote:

    If you define files you're only interested in as files that changed for a commit,

    Certainly, but... A Changeset may contain items which are not to be deployed. A Label can contain versions of items from multiple Changesets.

    Jeremy Falcon wrote:

    Git doesn't need that feature

    Yes, yes it does. And I suspect they can alter Tags so they do it.

    Jeremy Falcon wrote:

    If I need to figure out which files changed between commits, tags, or branches it's just one simple command away. So, Git can already do this.

    That's not what Labels are for, and TFS can do that as well of course.

    J 2 Replies Last reply
    0
    • J Jeremy Falcon

      Ok, so if it's backwards... then as I said Git already does that. You still didn't define what constitutes a subset btw. So, let's just assume it's a diff of files that changed between commits. Git does this. Saying it doesn't isn't correct.

      Jeremy Falcon

      P Offline
      P Offline
      PIEBALDconsult
      wrote on last edited by
      #49

      Jeremy Falcon wrote:

      it's a diff of files that changed between commits

      No. That is not what a Label/Class is. That may be a typical use for a Label, but I can put any version of any item in the repository in a Label any time I want. An item/element doesn't need to have changed to be put in a Label/Class.

      J 1 Reply Last reply
      0
      • P PIEBALDconsult

        I suspect you never used Labels in TFS either, many people don't.

        Jeremy Falcon wrote:

        If you define files you're only interested in as files that changed for a commit,

        Certainly, but... A Changeset may contain items which are not to be deployed. A Label can contain versions of items from multiple Changesets.

        Jeremy Falcon wrote:

        Git doesn't need that feature

        Yes, yes it does. And I suspect they can alter Tags so they do it.

        Jeremy Falcon wrote:

        If I need to figure out which files changed between commits, tags, or branches it's just one simple command away. So, Git can already do this.

        That's not what Labels are for, and TFS can do that as well of course.

        J Offline
        J Offline
        Jeremy Falcon
        wrote on last edited by
        #50

        PIEBALDconsult wrote:

        That's not what Labels are for, and TFS can do that as well of course.

        Given this video (it's 2 minutes only), either this dude is wrong or labels are meant to tag a specific set of files, as well the MS link suggested... [TFS 2013 Tutorial : 24 - How to Apply Labels in Team Foundation Server 2013 using visual Studio - YouTube](https://www.youtube.com/watch?v=zRVLQWrj2AM) You can modify tags in git and labels in TFS so I'm not sure why bringing this up is relevant. If you need to stage files not marked for release that are in your repo for some reason, let's say internal documentation, that can be achieved with git 100%. However, that's a bad design to do that in the SCM itself. Anything exclusionary should be a part of the build process. So, to keep this on point... right now, I'm mentally considering a changeset like a commit in Git terms. Given that, if for some reason you need a label of two different changesets that are completely unrelated (history-wise) to one another in a label, again Git doesn't work that way. Nor should it. That's just a bad design. If you need that, then merge or rebase into whatever branch you're working on in question and create a tag off that. You'll have exactly the same thing but with a consolidated history trail. Git is more analogous to the blockchain in terms of a history trail. That's a good thing. Also, if labels aren't used to tag a release, why are people saying it is?

        Jeremy Falcon

        P 1 Reply Last reply
        0
        • R raddevus

          I guess Word documents would have that problem too then. But using version control for Word docs has always been problematic. I remember people trying to track changes using Visual Source Safe back in 1996

          D Offline
          D Offline
          DavidPendleton
          wrote on last edited by
          #51

          Yes, but Visual SourceSafe had an option to store only the most recent version of a binary file, which was a great feature.

          R 1 Reply Last reply
          0
          • P PIEBALDconsult

            I suspect you never used Labels in TFS either, many people don't.

            Jeremy Falcon wrote:

            If you define files you're only interested in as files that changed for a commit,

            Certainly, but... A Changeset may contain items which are not to be deployed. A Label can contain versions of items from multiple Changesets.

            Jeremy Falcon wrote:

            Git doesn't need that feature

            Yes, yes it does. And I suspect they can alter Tags so they do it.

            Jeremy Falcon wrote:

            If I need to figure out which files changed between commits, tags, or branches it's just one simple command away. So, Git can already do this.

            That's not what Labels are for, and TFS can do that as well of course.

            J Offline
            J Offline
            Jeremy Falcon
            wrote on last edited by
            #52

            Btw, I have used labels in the past, but that was like well over a decade ago. Seems like forever and I totally accept my memory is fuzzy in that regards, so I could be going senile. :laugh:

            Jeremy Falcon

            1 Reply Last reply
            0
            • P PIEBALDconsult

              Jeremy Falcon wrote:

              it's a diff of files that changed between commits

              No. That is not what a Label/Class is. That may be a typical use for a Label, but I can put any version of any item in the repository in a Label any time I want. An item/element doesn't need to have changed to be put in a Label/Class.

              J Offline
              J Offline
              Jeremy Falcon
              wrote on last edited by
              #53

              So then I didn't get it backwards... which means we clearly have a breakdown in communication here.

              Jeremy Falcon

              P 1 Reply Last reply
              0
              • M MSBassSinger

                And yet the WinForms GUI builder was so successful that other companies (like PowerBuilder) tried to copy it. It has successfully made Windows apps, including complex ones, to this day. It isn’t that it can’t be done - it has already. It is that it has not been tried with a team capable of the same level of quality and excellence as Alan Cooper and his team had.

                E Offline
                E Offline
                englebart
                wrote on last edited by
                #54

                FYI Power Builder predates even Visual Basic (codename Thunder) which means it almost predates the public internet. I worked on a PowerBuilder 2.0 project talking to a DB running on OS/2! It had form inheritance/templating at that version. Circa 1991.

                M 1 Reply Last reply
                0
                • J Jeremy Falcon

                  So then I didn't get it backwards... which means we clearly have a breakdown in communication here.

                  Jeremy Falcon

                  P Offline
                  P Offline
                  PIEBALDconsult
                  wrote on last edited by
                  #55

                  Yes, you still don't understand what a Label is in TFS or what a Class is in CMS.

                  J 1 Reply Last reply
                  0
                  • E englebart

                    FYI Power Builder predates even Visual Basic (codename Thunder) which means it almost predates the public internet. I worked on a PowerBuilder 2.0 project talking to a DB running on OS/2! It had form inheritance/templating at that version. Circa 1991.

                    M Offline
                    M Offline
                    MSBassSinger
                    wrote on last edited by
                    #56

                    PowerBuilder did not have a GUI builder anything like VB. Only after VB was out, did PowerBuilder create something similar. In fact, when I worked for the State of Florida, we were deciding on what tools to use for Windows application development for our agency. In the PowerBuilder presentation, the presenter stressed several times how PowerBuilder was like VB for building Windows forms. We looked at both equally, but VB was more advanced in terms of language and the GUI builder. That was a long time ago. The point today is the lack of a GUI builder for VS2022 that has the productivity for XAML and HTML/CSS that it has for WinForms.

                    1 Reply Last reply
                    0
                    • D DavidPendleton

                      Yes, but Visual SourceSafe had an option to store only the most recent version of a binary file, which was a great feature.

                      R Offline
                      R Offline
                      raddevus
                      wrote on last edited by
                      #57

                      Since VCS (Verson Control Systems) are meant to store diffs between files... what would the point of storing?...

                      DavidPendleton wrote:

                      only the most recent version of a binary file

                      Isn't that the same as storing the latest binary file which is already simply stored in the file system? I'm curious about this. thanks

                      D 1 Reply Last reply
                      0
                      • P PIEBALDconsult

                        Yes, you still don't understand what a Label is in TFS or what a Class is in CMS.

                        J Offline
                        J Offline
                        Jeremy Falcon
                        wrote on last edited by
                        #58

                        So, you're saying the dude in the video is wrong as well? Because I'm not hearing anything substantial exept you saying "I'm wrong" when to be honest I don't think you know what I'm saying. I've cited three sources saying what a label is and presented several ways you can achieve what you're after in git. I haven't used TFS in a looooooong time, but that doesn't I'm incapable of understanding. Side note, there's yet another way to have public vs private stuff in a repo btw. Git can also use submodules to relate two tepos. That's a better design than trying to integrate that into the same repo. My point is, what you're trying to do in TFS I can promise you can do in Git. But, I'm all I'm hearing is I don't know what labels are after citing sources that say otherwise. And that's fine if I don't know but tell me what I don't know with something concrete and practical. I've already told you Git can do what you're asking. You seem to ignore that. So, if I'm being honest, it seems like you just can't admit you're wrong about Git. Which is silly if I'm being honest. You've already heard me say I could be wrong about labels, but I don't think I am. Which means, this is no longer an intellectual chat.

                        Jeremy Falcon

                        P 1 Reply Last reply
                        0
                        • R raddevus

                          Since VCS (Verson Control Systems) are meant to store diffs between files... what would the point of storing?...

                          DavidPendleton wrote:

                          only the most recent version of a binary file

                          Isn't that the same as storing the latest binary file which is already simply stored in the file system? I'm curious about this. thanks

                          D Offline
                          D Offline
                          DavidPendleton
                          wrote on last edited by
                          #59

                          We used it for daily builds of DLL's and the like. It gave us a way to keep binaries with the code without taking up a lot of space in the VSS database. You could check it out to keep it from being overwritten when you needed that. It also allowed us (the developers) to manage the folder structure, security, etc. instead of the network folks. Other than that, it was pretty-much the same as a network folder.

                          1 Reply Last reply
                          0
                          • J Jeremy Falcon

                            So, you're saying the dude in the video is wrong as well? Because I'm not hearing anything substantial exept you saying "I'm wrong" when to be honest I don't think you know what I'm saying. I've cited three sources saying what a label is and presented several ways you can achieve what you're after in git. I haven't used TFS in a looooooong time, but that doesn't I'm incapable of understanding. Side note, there's yet another way to have public vs private stuff in a repo btw. Git can also use submodules to relate two tepos. That's a better design than trying to integrate that into the same repo. My point is, what you're trying to do in TFS I can promise you can do in Git. But, I'm all I'm hearing is I don't know what labels are after citing sources that say otherwise. And that's fine if I don't know but tell me what I don't know with something concrete and practical. I've already told you Git can do what you're asking. You seem to ignore that. So, if I'm being honest, it seems like you just can't admit you're wrong about Git. Which is silly if I'm being honest. You've already heard me say I could be wrong about labels, but I don't think I am. Which means, this is no longer an intellectual chat.

                            Jeremy Falcon

                            P Offline
                            P Offline
                            PIEBALDconsult
                            wrote on last edited by
                            #60

                            Jeremy Falcon wrote:

                            you're saying the dude in the video is wrong as well?

                            Most likely, but I haven't watched it and I have no intention of watching it. Very likely he doesn't present the full extent of what Labels are and can be used for. Bloggers and YouTubers rarely cover anything in-depth -- they cover only what they can fit in a presentation, not all that can be known. Read the documentation for the full story. Maybe he is wrong, or incomplete, in which case why watch it? If he isn't wrong, then he and I have both failed to explain the situation to you adequately, so why watch it?

                            Jeremy Falcon wrote:

                            I've already told you Git can do what you're asking.

                            And I've told you it doesn't. So what's your point?

                            Jeremy Falcon wrote:

                            you just can't admit you're wrong about Git.

                            I will admit I'm wrong if I'm proven wrong, but so far I have not been.

                            Jeremy Falcon wrote:

                            I could be wrong about labels

                            I believe you are. I know Labels in TFS and Classes in CMS, and what I have seen in the documentation for Git and Subversion tells me that Tags are not as flexible. So far I have seen no argument or evidence that Tags are as flexible, all I seem to see is a mistaken view that Labels and Classes not as flexible as they actually are -- that Labels (and therefore Classes) are as brain-dead and useless as Tags. It is a simple fact that Labels and Classes are far superior to Tags. I have looked at the Git (and Subversion) documentation and I see no indication that a Tag can contain versions of only selected items in the repository. This is the strength of Labels and Classes. Show me where a Tag can contain a subset of the items, not a simple snapshot of everything in the repository. And even though you may not have a need for that, I and the teams I've worked on do need that. Without that feature, Git is unusable. As is Subversion, as is VSS. Git needs to add this feature. Let me know when they do.

                            J 1 Reply Last reply
                            0
                            • D dandy72

                              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.

                              J Offline
                              J Offline
                              jschell
                              wrote on last edited by
                              #61

                              dandy72 wrote:

                              frustrating experiences with one tool,

                              Yes. Except of course it doesn't even need to be plural.

                              1 Reply Last reply
                              0
                              • D dandy72

                                I worked with a strong proponent of Git. "Git's way more powerful". I understand that argument, but if TFVS/TFS/whatever does everything I need it to, with some simple right-click menus that aren't confusing...the extra power Git offers is lost on me...

                                R Offline
                                R Offline
                                Ravi Bhavnani
                                wrote on last edited by
                                #62

                                True.  Sadly, the "power of git" slows me down. :( /ravi

                                My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                                1 Reply Last reply
                                0
                                • J Jeremy Falcon

                                  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

                                  R Offline
                                  R Offline
                                  Ravi Bhavnani
                                  wrote on last edited by
                                  #63

                                  Jeremy Falcon wrote:

                                  Name one thing TFS does better... I'm waiting.

                                  Shelve sets that reside on the cloud vs. stashes that reside on a local machine. Disclaimer: I'm not a Git expert and don't claim to be one. /ravi

                                  My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                                  J 1 Reply Last reply
                                  0
                                  • P PIEBALDconsult

                                    Jeremy Falcon wrote:

                                    you're saying the dude in the video is wrong as well?

                                    Most likely, but I haven't watched it and I have no intention of watching it. Very likely he doesn't present the full extent of what Labels are and can be used for. Bloggers and YouTubers rarely cover anything in-depth -- they cover only what they can fit in a presentation, not all that can be known. Read the documentation for the full story. Maybe he is wrong, or incomplete, in which case why watch it? If he isn't wrong, then he and I have both failed to explain the situation to you adequately, so why watch it?

                                    Jeremy Falcon wrote:

                                    I've already told you Git can do what you're asking.

                                    And I've told you it doesn't. So what's your point?

                                    Jeremy Falcon wrote:

                                    you just can't admit you're wrong about Git.

                                    I will admit I'm wrong if I'm proven wrong, but so far I have not been.

                                    Jeremy Falcon wrote:

                                    I could be wrong about labels

                                    I believe you are. I know Labels in TFS and Classes in CMS, and what I have seen in the documentation for Git and Subversion tells me that Tags are not as flexible. So far I have seen no argument or evidence that Tags are as flexible, all I seem to see is a mistaken view that Labels and Classes not as flexible as they actually are -- that Labels (and therefore Classes) are as brain-dead and useless as Tags. It is a simple fact that Labels and Classes are far superior to Tags. I have looked at the Git (and Subversion) documentation and I see no indication that a Tag can contain versions of only selected items in the repository. This is the strength of Labels and Classes. Show me where a Tag can contain a subset of the items, not a simple snapshot of everything in the repository. And even though you may not have a need for that, I and the teams I've worked on do need that. Without that feature, Git is unusable. As is Subversion, as is VSS. Git needs to add this feature. Let me know when they do.

                                    J Offline
                                    J Offline
                                    Jeremy Falcon
                                    wrote on last edited by
                                    #64

                                    Ok whatever dude. It's clear you didn't actually read my posts. So now this is another kiddie argument. You go on being whatever kinda close-minded dude you need to be to feel good about yourself. This is a waste of time.

                                    Jeremy Falcon

                                    P 1 Reply Last reply
                                    0
                                    • R Ravi Bhavnani

                                      Jeremy Falcon wrote:

                                      Name one thing TFS does better... I'm waiting.

                                      Shelve sets that reside on the cloud vs. stashes that reside on a local machine. Disclaimer: I'm not a Git expert and don't claim to be one. /ravi

                                      My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                                      J Offline
                                      J Offline
                                      Jeremy Falcon
                                      wrote on last edited by
                                      #65

                                      Ravi Bhavnani wrote:

                                      Disclaimer: I'm not a Git expert and don't claim to be one.

                                      Thanks for being the first person to actually make a legit point though. You're right about that btw. So, can totally see how it would appear on the surface. It's a difference of philosophy though. Git is all about branching. Way more than most SCMs. Stashes are meant to be about uncommitted changes. It's not always stuff you want to share. If there's a change set you want to keep on a remote server because you want to share the code or access it on another machine, just put your committed changes in a branch. You can have temporary branches all day long. It's just a difference of philosophy, where branches are used to the extreme in Git, but it's doable. Git really does excel at merging, so branches are used a lot.

                                      Jeremy Falcon

                                      R 1 Reply Last reply
                                      0
                                      • J Jeremy Falcon

                                        Ok whatever dude. It's clear you didn't actually read my posts. So now this is another kiddie argument. You go on being whatever kinda close-minded dude you need to be to feel good about yourself. This is a waste of time.

                                        Jeremy Falcon

                                        P Offline
                                        P Offline
                                        PIEBALDconsult
                                        wrote on last edited by
                                        #66

                                        I know what a Tag is (in Subversion and Git). I have known what a Tag is for many years. I do not need to read your posts to know what a Tag is. You have told me nothing which I didn't already know. You seem to have a problem understanding what a Label (in TFS) or Class (in CMS) is, even though I have tried to explain it several times now. The closed mind is on your side, not mine. You are convinced that a Tag is the same thing, when it most definitely is not. Labels and Classes are much more flexible than Tags.

                                        J 1 Reply Last reply
                                        0
                                        • J Jeremy Falcon

                                          Ravi Bhavnani wrote:

                                          Disclaimer: I'm not a Git expert and don't claim to be one.

                                          Thanks for being the first person to actually make a legit point though. You're right about that btw. So, can totally see how it would appear on the surface. It's a difference of philosophy though. Git is all about branching. Way more than most SCMs. Stashes are meant to be about uncommitted changes. It's not always stuff you want to share. If there's a change set you want to keep on a remote server because you want to share the code or access it on another machine, just put your committed changes in a branch. You can have temporary branches all day long. It's just a difference of philosophy, where branches are used to the extreme in Git, but it's doable. Git really does excel at merging, so branches are used a lot.

                                          Jeremy Falcon

                                          R Offline
                                          R Offline
                                          Ravi Bhavnani
                                          wrote on last edited by
                                          #67

                                          Perhaps I'm not using stashes the way they were intended to be used.  Let me explain my scenario and maybe you could suggest a better approach. I work on a large enterprise app that consists of a dozen web API apps.  During development, the apps are deployed to my local IIS at the end of a successful build.  Each app's web.config needs to be tweaked to reference the developer's machine and development port numbers, and databases that reside on the dev's SQL Server.  So what I stash is essentially my set of machine specific web.config files. My daily work routine is as follows:

                                          1. Stash web configs and have no local changes.
                                          2. Pull latest code.
                                          3. Unstash web configs.
                                          4. Build locally.
                                          5. Work on my tasks.

                                          Before I create a pull request, I create a branch with my changes and create the PR from that branch.  When the PR completes, I delete that branch. Maybe there's a better way of doing steps 1 and 3? /ravi

                                          My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                                          J 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups