← Back to blog

gitStream vs. GitHub Actions vs. Code owners

Looking to streamline your GitHub pipeline? Let's see which option is right for you.
December 21, 2022 • Luke Kilpatrick

Merging code in GitHub is an essential part of any software development project. Different teams and developers often have different processes for how code should be merged into the master branch. This often includes a set of rules or checks that must be passed before the code can be merged. However, this set of rules is poorly documented if it is at all and is set by the team or project's culture in most cases. Often these same sets of policies are applied to every pull or merge request, regardless of the change, which can increase the lead time from making a change to releasing it to production.

New methods are constantly being developed to make merging smoother. These often include a mix of automation and human interaction to try and reduce the time to merge. This article discusses some of the newer tools to help merging in GitHub, including GitHub Actions, code owners and LinearB’s gitStream.

GitHub Actions vs GitHub Owners: How Best to Merge?

Merging code may seem like a trivial issue, especially to non-developers. However, fast and high quality merging is important, especially when using modern continuous integration/continuous delivery (CI/CD) pipelines. 

The primary goal of CI/CD is to improve the quality and speed of releasing changes to production. Reviewing and merging code is the first step to achieving this. Having a slick pipeline to release changes is great, but it becomes irrelevant if it still takes days for changes to reach the master branch.

GitHub Actions

GitHub Actions is a CI/CD platform built into GitHub that allows you to automate build processes by creating pipelines. Actions are similar to methods you’ll use when programming and performing tasks in the repo. GitHub Actions can be used to support the merging process but can take a lot of work to set up on your own. If an Action doesn’t already exist to perform the activity you require, you need to create it from scratch or find an open source example. Actions by default work at the repository level and do not provide a lot of granular control without a lot of very specific work in YAML.

Code owners

Code owners are another process built into GitHub. You can configure code owners for a repository to make sure the right people are doing the right review of the code that they have the most interest in. The repository can be configured to only allow code to be merged after approval by a code owner. This can be broken down further so that specific files require code owner approval, while others can be approved by anyone.

Code owners reduce the risk of changes being merged without the approval of specific developers. However, this can reduce efficiency, especially if code owners need to review many changes.

gitStream

gitStream is a tool that streamlines the GitHub merging process. gitStream allows developers to specify rules for when pull requests require extra attention and when they can be automatically merged based on easy write predefined rules. This process is known as continuous merging

gitStream facilitates continuous merging by allowing rules to be set up to auto-approve small changes, such as updates to document files or similar trivial changes. Pull requests containing standard code changes can be automatically assigned to the right person based on a host of criteria such as amount of code ownership in the project, amount of currently assigned tickets or PRs, experience and more . Any significant changes can be marked to require multiple reviewers.

gitStream is built on top of GitHub Actions and shares some similarities with them, however gitStream gives you a lot more power and granularity down to the file level that matches a regex rather  than affecting the whole repository. A GitHub action is a low level operation, that requires effort to code, test and maintain, while gitStream is a more high level system that allows applying many automation rules very easily

This process marks a shift away from having a single one size fits all procedure for all pull requests, which often require several approvals before even the smallest request can be merged. gitStream allows teams to move beyond these rigid requirements, sizing the depth of review needed and assigning the reviewers based on who is best suited. Less time is wasted waiting for approvals on trivial changes, allowing code to be continuously merged, integrated, and deployed. More important changes can also now get the in depth review from the experienced members of your team to make sure the quality level is as high as possible.

Head to Head

Now that you’ve learned about gitStream, GitHub Actions, and code owners, it’s time to see how they compare to one another. The following table offers a high-level overview of how each method compares in speed, risk, efficiency, and customization.

MethodsScalabilityRiskEfficiencyCustomization
gitStreamHighLowVery efficientHigh customization
GitHub ActionsModerateHighEfficientSome customization
Code ownersLowLowNot efficientLimited customization

The subsequent section discusses each category in detail.

Scalability

Code owners take the least scalable approach, as manual code reviews still need to be performed before code can be merged. If the same person has to review many pull requests, the process can become a huge bottleneck because everything must be paused until the code owner catches up. gitStream and GitHub Actions are significantly more scalable, as they both automate the merge process and can prevent the need for unnecessary manual reviews for trivial changes such as adding tests or documentation. gitStream can even automate the reviewer selection process based on several criteria that require no editing when new team members are added!

Risk

Using code owners is a very low-risk method. However, as mentioned in the previous category, this comes at the cost of being tough to scale. In contrast, GitHub Actions are scalable, but they’re risky because poor-quality code changes could be automatically merged. When it comes to risk, gitStream outperforms the other two methods. This is because gitStream provides a more sophisticated rule set to determine which changes should be automatically approved, which require code owner approval, and which are so critical that they require multiple reviewers.

Efficiency

Code owners aren’t a great option if you’re looking for efficiency. This is because owners can become bogged down with time-consuming reviews on active code bases. Although GitHub Actions are efficient and have automation capabilities, their high-risk nature means that incorrect, bug-creating code can be merged automatically, reducing the overall efficiency of the team. Again, gitStream offers significant advantages over the other methods. It ensures that low-risk code is approved quickly and high-risk code is checked by the right people to reduce issues down the line.

Customization

All three options provide a level of customization, such as defining who the code owners are and specifying what changes can be automatically merged. However, gitStream provides the most options, effectively offering the functionalities of both GitHub Actions and code owners — and then some. Code owners, in contrast, only allow you to choose who the reviewer is and which files are important. And while GitHub Actions can be customized to some extent, they’re limited to a specific scope and would require multiple hard coded Actions to be used together to start to reach feature parity with gitStream. gitStream is free and can be implemented much faster and in a more dynamic way than GitHub Actions.

Use Cases

Now that you’re familiar with the strengths and weaknesses of each approach, it’s time to go over potential use cases for each of them.

Github mascot with groot

Code Owners for Smaller Codebases

You learned that code owners provide a low-risk, low-speed approach to code merging. This makes code owners a useful approach for smaller projects without tight deadlines or highly regulated and audited applications, where a small mistake can have a catastrophic impact. However, code owners are not well suited to larger codebases with frequent changes, as they can quickly become overwhelmed with reviews.

Low-Complexity Projects with GitHub Actions

GitHub Actions are great for fast-moving, low-complexity projects. This is because while GitHub Actions allow for fast merging, it can come at a higher risk. If you have a small number of developers working on a fairly simple project, then the increase in merge speed will probably outweigh the risk.

Streamline Multi-Codebase Enterprise Applications with gitStream

Finally, gitStream is optimized for projects of any size with any number of developers, as it provides a mix of both fast merges and slow code reviews depending on the context of the change. This makes gitStream applicable to most real-world use cases, especially for businesses that have a large engineering team with several repositories, each with different owners and specialists.

Make Your Move on Merging...

Choosing a merging strategy is important because the time it takes to merge can cause delays in bug fixes and feature releases. Code owners are slow and most suitable for smaller projects. For developers looking to reduce their merge latency, GitHub Actions or gitStream are good options. Choosing between the two comes down to the size of the project and the risk of poor-quality changes being automatically merged. Because gitStream can seamlessly handle projects of different sizes and is very low cost (It’s free!), it’s a great option for most real-world business projects.

Check out gitStream to add customized and secure logic to your merge process.

Further Reading

Join our community of data-driven dev leaders

Each week we share stories and advice from engineering and product leaders striving to be better for their teams.

LinearB may send you email occasionally about how you can optimize productivity.
We will not share your information with anyone. Ever.