What is Source Control?
“Source Control, also known as versioning, version control, change management or change control, is a set of practices and tools designed to keep application source file versions backed up in a safe place such that any version can be retrieved later down the line. I also allows you to go back in time and view source files at various points in a projects history. Source control systems also offer teams of developers the ability to simultaneously work on the same source files and have each developers tools merged into the master repository.” – SOURCE
There are a number of reasons why source control is a very good idea. Source control tracks changes to files over time, so if you break something you can go back through the change history and find out when it was broken, by whom and fix the problem.
Source control tracks the changes that have been made to a specific file, this means that if you break something you can go back through the history of the file, find out what is broken and also who broke it and fix the problem that has been encountered/noticed.
“Repository – The location that source files are stored in. This could be on the file system, or in a database or some other method of storage.
Trunk – Sometimes called master. This is the most current stable version of the source code, usually the current build.
Branch – A working development version of trunk with changes, updates and modifications from developers either complete or incomplete.
Merge – When a branch is complete, i.e. the development phase is complete, the branch is merged into the trunk, so that the trunk is now the current updated source code.
Get Latest – Downloads the latest version of the file(s) to the developers machine.
Check-out – When a developer wishes to work on a file, they check it out. Some systems place a lock on this file so that other developers cannot make changes, while some more advanced systems have the ability to merge changes from multiple developers.
Commit – As a developer finishes working on a task or tasks, they will commit there code back into the branch.
Changelog or Changeset – A note of every check-in made, along with a list of the files changed and a message from the developer checking in the code.
Merging – Combines the changes of two developers into a final modified file. This can be automatic, semi-automatic or manual using a diff tool.
Fork – Similar to a branch, however forks are entirely new copies of the trunk and are intended to remain separate.” – SOURCE
Source Control Apps
Microsoft Team Foundation Server (TFS)