Chapter 4. Understanding branching in version control
This chapter covers
- Branching concepts
- How branches differ from labels and folders
- Using branches for sharing code
- Building from branches
Version control systems, officially called software configuration management (SCM) systems, help you manage the evolution of your codebase. Depending on the level of sophistication, version control systems store source code in shared repositories using efficient algorithms (forward, reverse, or interleaved deltas), provide secure access to distributed team members, enable multiple developers to work together efficiently, associate code changes with work items, maintain audit trails, facilitate parallel development, and recover previous file versions. They also provide atomic check-in for consistency, support private workspaces, revert local workspaces to previous points in time, maintain coding standards, and work with various IDEs. SCM systems support build creation, offline activities, disaster recovery, and high availability. They also provide notification of key events such as check-ins. Additionally, SCM systems perform scores of other functions to safeguard your software assets in a consistent, accessible, and reliable manner. Without a good version control system, you’ll find it virtually impossible to hold your team together and manage the evolution of your software.