CodeCommit is a secure, highly scalable, managed source control service that hosts private Git repositories. CodeCommit eliminates the need for you to manage your own source control system or worry about scaling its infrastructure. You can use CodeCommit to store anything from code to binaries. It supports the standard functionality of Git, so it works seamlessly with your existing Git-based tools.
With CodeCommit, you can:
- Benefit from a fully managed service hosted by AWS. CodeCommit provides high service availability and durability and eliminates the administrative overhead of managing your own hardware and software. There is no hardware to provision and scale and no server software to install, configure, and update.
- Store your code securely. CodeCommit repositories are encrypted at rest as well as in transit.
- Work collaboratively on code. CodeCommit repositories support pull requests, where users can review and comment on each other’s code changes before merging them to branches; notifications that automatically send emails to users about pull requests and comments; and more.
- Easily scale your version control projects. CodeCommit repositories can scale up to meet your development needs. The service can handle repositories with large numbers of files or branches, large file sizes, and lengthy revision histories.
- Store anything, anytime. CodeCommit has no limit on the size of your repositories or on the file types you can store.
- Integrate with other AWS and third-party services. CodeCommit keeps your repositories close to your other production resources in the AWS Cloud, which helps increase the speed and frequency of your development lifecycle. It is integrated with IAM and can be used with other AWS services and in parallel with other repositories. For more information, see Product and Service Integrations with AWS CodeCommit.
- Easily migrate files from other remote repositories. You can migrate to CodeCommit from any Git-based repository.
- Use the Git tools you already know. CodeCommit supports Git commands as well as its own AWS CLI commands and APIs.
Example Use Case Scenarios
Scenario 1 : Customer wants to keep all users in a single place to make additions, updates and deletions simpler
As CodeCommit is an AWS service it has tight integration with other AWS services, such as IAM. Using CodeCommit as the customers version control system allows the customer to manage access to each repository using IAM users and roles, in the same way they would for other AWS Services.
This allows for the Customer to follow best practices easily and monitor access to their version control in a single place, without having to manage a separate external set of users for another service.
Scenario 2 : Customer would like to trigger actions based on repository events
As CodeCommit uses CloudWatch Events to trigger different steps of its processes, this means that actions can be integrated with other functions within AWS.
A few examples of this are:
- Triggering a code review by SonarQube before an approval: https://aws.amazon.com/blogs/devops/integrating-sonarqube-as-a-pull-request-approver-on-aws-codecommit/
- Triggering a lambda function to run some code on the repository or perform other actions that may be required later in the workflow
- Integrating with CodeBuild directly
CodeCommit prices based on the number of git requests past 2,000 per user per month, which is something to be aware of. It also prices per GB per Month past 10GB per user (after the first 5 users). Depending on the use cases, this might work out more than alternatives. The pricing beyond these levels are:
- $0.06 per GB-month
- $0.001 per Git request
Some other integrations with popular software that would normally be used as part of the Software Development Lifecycle may either not be as readily available or may need to be built out manually as part of the setup for the customers workflows.
Direct collaboration within CodeCommit is limited. This can be overcome by using other services such as CodeStar or Cloud9, but this does limit how users work, who may prefer their own environment.