1.1. What Is Version Control?Most major software development projects involve many different developers working concurrently on a variety of (overlapping) sets of files, over a long period of time. It is therefore critical that the changes made by these developers be tracked, so that you can always tell who is responsible for any changes, as well as what your source files looked like an hour ago, a week ago, or a year ago. Furthermore, it's just as important (if not even more important) to be able to merge the contributions of those many developers into a single whole. This is where a version control system comes into play. The basic functionalities of any version control system are to keep track of the changing states of files over time and merge contributions of multiple developers. They support this, for the most part, by storing a history of changes made over time by different people. In this way, it is possible to roll back those changes and see what the files looked like before they were applied. Additionally, a version control system will provide facilities for merging the changes, using one or more methods ranging from file locking to automatic integration of conflicted changes. |