Application source code is usually comprised of dozens if not hundreds of interrelated files. The complexity and volatility of code—particularly when using agile development methodologies and changes are made daily—makes keeping track of it virtually impossible without a structured, automated source code management and revision control system. Originally built as client-server applications where developers checked in code to a central repository, today’s systems (such as Git) are often distributed, with each developer working from a local copy of the full repository and changes synchronized across all subscribers to a particular project. Code management systems provide revision control (the ability to back out changes to an earlier version), software build automation, configuration status records and reporting, and the ability to branch or fork all or part of a source-code tree into a separate subproject with its own versioning. The version records of code management can help IT operations teams identify application changes that are causing system problems, such as excessive resource consumption or interference with other applications.