DevOps Tools Introduction #04: Source Code Management
Storing work results and sharing them with colleagues is an essential part of open source and DevOps culture. Source Code Management (SCM) and version control systems ensure all members of a team stay on top of changes to source code and related files. These tools are also crucial in coordinating parallel work on different features and the integration of the features for software releases. In addition to source code, SCM is often used to manage configuration files as well. Putting the configuration of cloud services under version control facilitates the deployment of an application significantly.
The LPI DevOps Tools Engineer exam dedicates the entire objective 701.3 to SCM and places Git front and center.
Get your hands dirty with Git as soon as you can by navigating to tryGit. You’ll be guided through a series of exercises which you’ll have to complete in a terminal embedded in the website. Make sure you also pay attention to the file browser and advice box underneath the terminal.
Git itself provides comprehensive documentation in the form of a free ebook. If English is not your native language, make sure to check the left menu of the book’s page for existing translations. In case you’re new to Git, you certainly want to read the Getting Started and Git Basics chapters. You might consider continuing to work through the book or skip directly to those features that the exam objectives explicitly mention, such as tags, branches, merging and submodules.
Chapter seven of the Git book introduces you to a series of useful and advanced features of Git. Browse through all the pages of this chapter and also review the entire Appendix C which summarizes the Git commands used in the book.
To wrap up this subject, spend some time and determine how Git integrates with your favorite development or administration tools. To get a feeling for how other projects use Git, find the repositories of a few free software projects you use and explore how these projects manage their development and releases.
Finally, LPI expects you to understand the differences between centralized and distributed SCM and to be aware of Apache Subversion and CVS. Learning about the differences between these SCM tools easily gets into opinion-based discussions which makes finding objective information difficult. Be aware of that during your studies. A well-balanced article by Zvonko Biškup on Git vs. SVN might be a good place to get started. You should also consider reading Martin Flower’s overview of version control tools.
Popper version control is the base for successful DevOps. Once source code and configuration files are put under version control, build tools can retrieve them to start automated builds, tests and deployment. We will learn more about this next week, when we’ll discuss continuous integration and continuous delivery.