Start learning with our library of video tutorials taught by experts. Get started
Viewers: in countries Watching now:
This course is a gateway to learning software version control (SVC), process management, and collaboration techniques. Author Michael Lehman reviews the history of version control and demonstrates the fundamental concepts: check-in/checkout, forking, merging, commits, and distribution. The choice of an SVC system is critical to effectively managing and versioning the assets in a software development project (from source code, images, and compiled binaries to installation packages), so the course also surveys the solutions available. Michael examines Git, Perforce, Subversion, Mercurial, and Microsoft Team Foundation Server (TFS) in particular, describing the appropriate use, features, benefits, and optimal group size for each one.
As mentioned in the section about history of Version Control, there are two different kinds of version control: Centralized, and Distributed. The workflow between these two different kinds are somewhat different, so I thought it would be worthwhile to go over the way in which these things are actually used from the point of view of a user using version control. So first, we'll talk about centralized version control. Typically, in centralized version control, a system admin creates the repository because the repository is always remote. Then you have your local working set, and you add or check in files to the remote repository, and you check out or revert files to update your working set.
Similarly, another user using a centralized version control system will connect up to the remote repository and have a different working set. They will check out your files and updates that you've made and add their own, and this goes back and forth in this check in/check-out update loop as you work with Version Control. But in this case, in Centralized Version Control, everything is kept in the remote repository. Now, some benefits of that are that the system administrator can then keep track of updates, can manage backups, can do system rollbacks for all the developers at once.
But it tends to be somewhat fragile, and it also tends to be problematic when you can't get access to the centralized server, if the server is down, if you're on an airplane, it becomes kind of cumbersome. So it depends on the magnitude of your project and the magnitude of your team, whether centralized version control is right for you, and we'll look back at that at the end of the course, looking at all the different Version Control Systems, and exploring how you can determine what's the right one to use for your particular project. Distributed Version Control works a little bit differently.
Typically, you initialize the repository because the repository is on your local box. Similar to the Centralized Version Control, you still have a working set, and you add things and you update them. In addition, you can also have this optional remote repository, which is a way of backing things up. Now typically, people that use Git or Mercurial use a system like this, and they will use a hosted system like GitHub in order to be able to back up their local repository into the cloud, and that's done as we mentioned just before in terminology by using push and pull.
Similarly, if that remote repository is not in the cloud but on another developer system, you would use import and export to send the data back and forth between the repositories. So that's a little bit of a look at the differences between centralized and distributed version control. Next, we are going to jump into all the concepts in more detail about getting things in, getting things out, how the process of history tracking works, and all of the information that you need to understand before we begin to look at specific version control implementations.
There are currently no FAQs about Fundamentals of Software Version Control.
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.