Your master branch represents the code that you will ship to your customers, and should be protected at all costs. No one intends to ship a bug to a customer on purpose, so having a mechanism in place to catch these subtle bugs is essential to a development team. Code review has been around in some form since the dawn of version control to help keep a close eye on the master branch and ensure code quality is high.

Pull requests in particular provide a way to do peer code reviews and merges as part of a branch-based development workflow. As teams grow sometimes you need to take pull requests a step further to really make sure code is ready to be merged in to the family jewel: the master branch.

Merge Checks in Bitbucket Cloud

That’s why we added merge checks to Bitbucket: they make it easy to ensure that every Pull Request is fully vetted before it gets merged. This gives teams the flexibility to:

Require a certain number of approvers: get at least 1 additional set of eyes on any change before it is merged. (On the Bitbucket Cloud team, we require 2 approvals for every Pull Request.)

Require a certain number of successful builds: Peer reviews are great but take that extra step and make sure the builds are passing pre-merge. Everyone says don’t break the build, but do you mean it?

Require all tasks to be completed: those tasks are there for a reason. Make sure all the feedback reviewers leave gets addressed, instead of promises to fix it later.

Reset approvals when the source branch of a pull request is modified: along with required approvers, this guarantees that no change goes unreviewed. This can be overkill for some branches, where reviewers can approve a PR while trusting the author to make some small tweaks, but it’s great for making sure nothing slips into a critical branch (typos in the release branch, anyone?).

Atlassian is a public company, so the Bitbucket team uses these checks as part of our compliance controls to prevent unauthorized changes to our code, and we know many teams have similar requirements. We also know that having an entire repository locked down can be frustrating, which is why we made merge checks totally configurable at the branch level. Production code can be protected and thoroughly reviewed but until it’s ready, you can still iterate quickly on features in dev and staging, all in the same repository.

Try Merge Checks

Merge checks are a feature in Bitbucket Cloud’s Premium plan which has features for teams that require granular admin controls, security and auditing. All features in Bitbucket Cloud’s premium plan are in a free trial until early 2017 when the plan will be $5/user/month.If you’re ready to get started, sign up for a Bitbucket Cloud account.

This report holds data from more than 17,000 software professionals—as well as 1,300 of our own customers— to identify what tools and practices teams are using to move quickly and stay ahead of competition.

Discover software trends across teams of all sizes

Find out why code review is on the rise among all teams and industries

Modern software development teams are increasingly distributed around the globe and expect to work fast from anywhere in the world. However, the desire for development speed can sometimes be blocked by factors out of your control – like waiting hours when cloning because you’re in a remote location and have a slow internet connection. This is a common occurrence if your team is working with lots of historical information in your repository, is storing large binary files or is using monolithic repos.

Reduce clone times with Smart Mirroring

We developed Smart Mirroring for Bitbucket Cloud with these distributed teams in mind who want to drastically reduce clone times. With Smart Mirroring, you can:

Work like a local – Smart Mirrors bring the code closer to your globally distributed teams so they can ship faster and stop wasting time waiting.

Speed up internet connection – Instead of putting your team’s performance into the hands of your internet service provider use Smart Mirrors to take a slow Internet connection out of the equation.

Smart mirroring can be set up in 4 steps, and less than 10 minutes. You install the mirror locally, set up security with SSL, start and connect the mirror to Bitbucket Cloud, select what you want to mirror, then sit back and enjoy the speed. Below is a mirror in action, increasing speed by 1.5x:

Try Smart Mirroring

Smart Mirroring is a feature in Bitbucket Cloud’s Premium plan which has features for teams that require granular admin controls, security and auditing. All features in Bitbucket Cloud’s premium plan are in a free trial until early 2017 when the plan will cost $5/user/month. If you’re ready to start mirroring in a free trial, sign up for a Bitbucket Cloud account.

Raise your hand if you remember the days of in-person code reviews. Whole afternoons spent checking out changes from SVN, running them locally, and making notes of areas that could be improved. Then spending another hour or two in a room with your team discussing suggestions live. Once changes were incorporated the whole process began again until it was finally time to merge. Ah merging… never fun and often times a total nightmare.

Quality time with the team is great, but we sure are glad those days are over. Thanks to the rise of distributed version control (DVCS), like Git, the process to garner peer feedback has vastly improved. Git’s ability to branch and merge easily has made it possible to review smaller sets of changes more often. This type of code review is based on a concept known aspull requests. Pull requests provide a forum to discuss proposed changes to your codebase before they’re merged into shared branches (e.g. before merging a feature branch into master).

The popularity of Git and pull requests have been growing exponentially with no signs of slowing down. The benefits of peer review – higher quality code, shared team knowledge, shared sense of ownership – and flexible workflows in Git have lured teams of all sizes. Amadeus, one of our largest customers, employs over 5,000 developers. Since they made the switch from SVN to Git three years ago, pull requests have become an invaluable tool to protect against poor quality code.

“At Amadeus Bitbucket supports 1,000+ pull requests a day and it’s growing. Pull requests are at the core of how we want our developers to work for higher quality and faster time to market.” – Frederic Ros, Head of Development Efficiency.

Selecting a Git management tool

With development speed and code quality at stake, it’s no surprise that pull requests have become a key selling point for Git management tools. Of course other factors are at play – like security, scalability, and deployment flexibility – but when it comes to developer productivity it’s the pull request experience that will set one tool apart from the others. We believe the pull request experience is THE most important deciding factor when selecting a version control solution. They are the best way ensure you’re releasing the highest quality code possible.

In talking with teams among our 60,000 customers, and of course our experience as developers, we have found that pull requests work best when 5 key pieces of functionality are in place. Let’s take a look at these areas and how Bitbucket Server provides them.

1. Assigned reviewers

In their most basic form, pull requests are simply a request to merge changes into a destination branch or fork. Once you introduce the idea of adding reviewers, they become much more than that – a forum for open discussion around code. When you’re looking at a tool to manage your Git repositories, the ability to explicitly add your team members as reviewers is the basis for a sound review workflow. How else will your team know they need to review your changes?

In Bitbucket Server we make the process even smoother by giving you the option to set up default reviewers for specific types of branches (i.e. feature, hotfix, or bugfix). You also have the ability to use Marketplace add-ons for additional functionality, like the Bitbucket Server Reviewer Suggester.

2. Comment on ALL THE THINGS

What would a good code review be without the comments? Capturing feedback in-context gives pull request authors a reference point for enhancements. Reviewers can make suggestions for changes or congratulate their team member on a brilliant piece of logic.

In Bitbucket Server you have the option to leave all types of comments: on the entire pull request, commit by commit, on a particular file, or on specific lines of code in a file. Every developer has their preferred way to read and review code, so your tool should cater to everyone.

Pro tip: Need a second opinion on a specific section of code? In Bitbucket Server, you can use an @mention on a particular line to bring in a busy specialist (e.g. front-end ninja, performance engineer, security expert) to review something in particular without saddling them with the whole review.

3. Iterative review

Pull requests create a feedback loop – you write some code, your team reviews, you incorporate changes, your team reviews and approves them, you merge, and then you’re done. If your Git management tool doesn’t provide a mechanism to capture reviewer status or review iterations, how are you supposed to keep track?

In Bitbucket Server, we solve this problem by providing status buttons for reviewers (i.e. if the author needs to make changes you can click “Needs Work”). Once changes have been incorporated, reviewers can easily find what’s new via iterative review, a mechanism allowing you to constrain the diff to only new changes since you last reviewed. No need to hunt through files for changes or re-review old code. If your team cares about spending their time wisely, then iterative review is a Git tool must-have.

4. Workflow flexibility

The creation of a development workflow involves a lot of factors. For example: Do you work in a highly regulated industry? Who should have access to your codebase? What types of quality checks do you need? The list goes on. This is why workflow flexibility is so important; no two development teams are exactly alike.

In Bitbucket Server we give you the freedom to pick how a pull request is merged (available merge strategies include merge commit, fast forward only, and squash) and when it is merged with merge checks (e.g. only allow merges if there are 2 approvals and a passing build). No other Git tool rivals the flexibility found in Bitbucket Server. We give you the power to decide how you want to work, not the other way around.

5. Integrations

Finally, before purchasing a brand new Git management tool, consider how it will fit in with the rest of your toolchain. Development is way more fun when you don’t have to jump between tools to report on pull request status. With thoughtful integrations like smart commits, the ability to transition JIRA issues via commit messages, Bitbucket Server handles the overhead for you. Save time and keep everyone up to date with first-class JIRA Software, HipChat, and Bamboo integrations. Using other tools? Atlassian provides a Marketplace full of additional integrations and functionality through add-ons. Why settle for a “jack-of-all-trades” tool when you can combine the power of best of breed tools that work for you?

The right choice for your team

Peer feedback reduces the amount of bugs in your code. It’s a safety net for developers, a way to ensure you’re putting out the highest quality code you can. At the end of the day, your customers only care if your product works for them or not. That’s why code review and pull requests are so important when selecting a Git management tool. This process cannot fail you.

By choosing Bitbucket Server, you’re choosing the best pull request experience for your team. Assigned reviewers, in-context comments, iterative review, workflow flexibility, and first-class JIRA integration are all built in. We have made pull requests a priority, and folks like Amadeus, Splunk, and our third party Solution Partners have noticed.

“Pull requests have become a non-negotiable part of the developer workflow. Bitbucket Server’s pull requests are one of the top reasons our customers switch to Bitbucket” – Zubin Irani, CEO cPrime Inc.

When starting to develop an idea into a game, there are a lot of things to consider: picking the right game engine, setting up a dev environment, getting early feedback, the list goes on. With all of this going on the last thing you want is to have to fiddle around with your tooling, or even worse, forget to backup your code entirely.

Indie game development often means working long hours on limited funds, and doing multiple jobs in parallel to pursue your dreams. The need for speed is essential. This is where choosing the correct version control system comes in – it should be somewhat “invisible”. Perforce has become synonymous with gaming development, because there used to be a perception that Git did not play nice with large files. With the addition of Git Large File Storage (LFS), Git is poised to be the preferred version control of choice for gaming development, just as it is for almost every other industry. But why?

Perforce vs Git

With Perforce, you have to be connected to the central server to see a history of changes, creating a bottleneck. Perforce also maintains a branching record on a per-file basis which creates a lot of metadata, making branching very expensive and restrictive. With Git, you can work from home or the beach without having to be connected to a central server and carry the full history of your code repository with you. This means Git is lightning fast compared to Perforce and is conducive to modern workflows. Making a branch for a new feature with Git’s branching model is simple, inexpensive, and built for modern software development best practices like CI/CD to ensure your code is always production ready.

Git beats out Perforce in cost and speed but there is one other major player when it comes to choosing a version control system for gaming: versioning large files- which has been solved.

Track all your files in one place with Git LFS

Before Git LFS, game developers who wanted to use Git ran into problems because Git repositories usually have size limits to ensure operations run performant as a repo grows. As they would add and change large binaries in Git, their repos would quickly bloat in size and become very slow. Hacks were created to work around these limitations like tracking large assets outside of Git in local storage systems or cloud storage providers. This required the team to manually sync and communicate all changes to keep code working– not awesome.

Now with Git LFS, game developers can version large files alongside their source code. Git LFS keeps your large files in parallel storage, and only lightweight references are stored making your repos smaller and faster. The next time your team clones a repo with files stored in Git LFS, only the references and relevant large files that are part of your checked out revision will get downloaded, not the entire change history. And with our launch of LFS general availability this October, Bitbucket Cloud has upped the game when it comes to Git LFS by adding the following features:

Why Bitbucket for game development?

Depending on the kind of game you’re making, costs can quickly add up. You’ve got decisions to make about tools, technology, even music. We want to make it easy for teams to get started with Bitbucket and provide the path of least resistance so you can start working on your game and then grow with us. That’s why we’ve made Bitbucket Cloud free for up to 5 users with unlimited public and private repositories.

We also know that the faster you can get your game out in the world, the faster your user base grows and money starts coming in. In October we announced the general availability of Bitbucket Pipelines, our continuous delivery service built right within Bitbucket Cloud that gives you end-to-end visibility from coding to deployment so you can automate many of the tasks associated with building, testing, and deploying services. The best part? It’s included in our 5 user free tier.

Bitbucket integrates nicely with the tools you need to create your game. We offer best in class JIRA integration for full development traceability across your issues. If you are looking to use Unity for your game engine, you can get set up with Bitbucket and Unity in 7 easy steps.

Free marketing for your game

Choosing the right version control system and Git solution that can scale with your game is essential for your games’ success. Check out our Bitbucket for gaming resource for more ammo on making the switch from Perforce to Git, to get everything you could possibly want to know about Git LFS, or get some free marketing and get featured on our page by submitting any games you’ve already #BuiltwithBitbucket to us on Twitter with the hashtag (there could be an extra surprise in store for you if you do, ).

There is no denying that peer to peer feedback decreases the amount of bugs, shares knowledge across the team, and creates a sense of shared ownership of every feature. This is why we’ve been working hard to make Bitbucket Server’s pull requests (a.k.a lightweight code reviews) a quick and painless part of your day. Today we’re introducing iterative reviews in Bitbucket Server 4.11, allowing your team to discuss changes to code in the context of a single pull request.

See what’s changed since your last review

Let’s be honest, everyone knows pull requests are valuable but sometimes they can become a bit of a drag. We’ve all been there – tagged as a reviewer on a monster pull request that updates every time you refill your coffee. So much time is wasted looking for the newest changes. You ask yourself questions like, “Did I already review this piece?”, or “Have the comments left by so and so been addressed?” Thanks to iterative review you now have the answers.

When a pull request is updated Bitbucket Server will show you exactly what has changed since you last reviewed it. No more hunting through files for edits or re-reviewing code you’ve already seen. Upon returning to an updated review Bitbucket will automatically display the ‘number of commits since your last review’ in the request scope. This will allow you to comment only on those newly added commits.

Pro tip: If you’re not ready to approve a pull request, click the “Needs Work” status indicator. When you come back, Bitbucket Server will show you only the changes made since then. Still not happy? Add comments on the new unreviewed changes diff and the author will be notified of your feedback just like before.

Merge your request with confidence

On the flipside we’ve also all been the author of those monster pull requests. You know, the ones containing code with the potential to bring down your entire product. You’ve done your best to ensure there are minimal bugs and green builds, but without your team giving the thumbs up merging can be stressful.

This is why pull requests are great… that is until you start to incorporate changes and your team must re-review. Questions like, “Did everyone see your fix for that big issue?”, or “Is my pull request ready to merge?” run through your head. Relieve some stress and have peace of mind knowing the team has reviewed all of your changes thanks to iterative review.

Iterative reviews are a pull request game changer. As a reviewer, regain time back to code by avoiding playing the “Have I Already Reviewed This?” game. And as an author, merge your changes with confidence knowing every modification has been reviewed. Upgrade your team’s pull request workflow and download Bitbucket Server 4.11 today!

Alongside your professional “day job” Bitbucket account, you may just have a personal Bitbucket account where you’re building silent iPhone 7 games, hacking on the first killer VR app, or training TensorFlow to write one for you. To access both accounts from one computer, you’ve either had to use HTTPS for repositories belonging to your second account, or mangle your SSH config in order to provide the right key for the right clone. All whilst wondering why your repository’s SSH URL is prefixed with the seemingly redundant git@bitbucket.org or hg@bitbucket.org.

Moonlighters, I have good news for you! You can now prefix your repository URL with your Bitbucket username to easily use different SSH keys with different accounts. Simply clone from your-username@bitbucket.org and Bitbucket will use the correct key proffered by your SSH agent.

To update a local repository to specify your username in the clone URL:

ssh-add adds the key to your local SSH agent, which Git and Mercurial will use automatically when interacting with a remote repository over SSH.
During key exchange, your SSH agent offers all the keys that may be appropriate for a particular host. Using git@ as a prefix means Bitbucket doesn’t know which user you’re attempting to authenticate as – so it accepts the first key that it recognizes. If this key belongs to your professional account, and you’re attempting to access a personal repository (or vice versa), you’re outta luck. Using your-username@ as a prefix allows Bitbucket to filter down which SSH keys should be accepted for a particular request.

If you have but a single Bitbucket account – no need to do anything. For backwards compatibility (and supporting things like deployment keys) git@ and hg@ will continue to work for the foreseeable future.

The fastest growing companies in the world today aren’t product companies, they’re service companies. Where we used to buy cars, we now hail a ride from a ridesharing app, and where we used to buy physical music, we now stream online. Agile and DevOps methodologies are increasingly popular today as software development teams strive to improve their velocity to keep up with this demand, and these teams are breaking down silos in order for their various engineering, support, and IT orgs to operate better together.

Continuous Delivery in particular is allowing teams to automate many of the tasks associated with building, testing, and deploying their services. This automation allows teams to meet customer demand for frequent releases while improving the quality of their services, and we’re proud to announce that Bitbucket Pipelines is now generally available to help all teams build, test, and deploy using continuous delivery, all within Bitbucket Cloud.

Configuration as code

If you missed the launch of the beta earlier this year, Bitbucket Pipelines is built right within Bitbucket Cloud, giving you end-to-end visibility from coding to deployment. With Bitbucket Pipelines there’s no CI server to setup, user management to configure, or repositories to synchronize. And where your build configuration files might be hosted separately from your code, Pipelines keeps everything together in Bitbucket. Better still, your configuration files are managed and versioned, allowing for your team to view, edit, and review to ensure quality like the rest of your code.

Bitbucket native

Gone are the days of having to switch between different systems to work out the status of your builds or why they’ve failed – Pipelines brings the status of builds into your repository. You can see the status of your branches and commits everywhere in Bitbucket, giving you crucial visibility on the status of your builds when you branch and before you merge.

It’s easy to get started too – all you need to do is commit a single configuration file into your repository and you’re good to go. Your configuration can be as simple or as complex as you need and with Pipelines utilizing Docker containers, you have the flexibility to choose from a wide variety of languages.

Infinite scale

Estimating capacity for your builds is a fine balancing act. Underestimate and you risk builds queuing up, resulting in idle time for your developers; overestimate and you’re wasting money on extra capacity. Bitbucket Pipelines scales instantly, helping you avoid queues by scaling up on demand when you need it. And with Pipelines you don’t have to pay for idle time, saving you money by charging for just what you use.

Ecosystem

Whether you want to deploy, test, monitor, analyze code, or store artifacts, complete any workflow with the tool of your choice by bringing your favorite services to Bitbucket Pipelines. We’re working with many industry leaders to ensure there’s continued support for the tools and technologies your team needs to build and ship software. Current integrations include AWS, Google, Microsoft, npm, Puppet, Rollbar, Sauce Labs, Sentry, SourceClear, TestFairy, and many more. Check out our integrations page for the full list of integrations.

Pay for what you use

Best of all, Bitbucket Pipelines utilizes a unique pay-as-you-go model for pricing. Never pay for containers and getting charged for the days, weeks, or even months when a given repository is idle; get started with continuous delivery for as little as 1 cent per minute. Based off of average use during the beta, that’s less than a cup of coffee a month for each developer!

With Bitbucket Pipelines we want to help all teams deliver better software faster, and we’re excited about the future of Continuous Delivery within Bitbucket. Try Bitbucket Pipelines and accelerate your team’s releases today.

More and more applications are moving to the cloud. It is growing so rapidly that revenue from public cloud platforms, business services, and SAAS will grow 22%, reaching $236 billion by 2020 according to Forrester*. But why? The flexibility to scale cloud capacity, decreased hardware costs, automatic software updates and the ability to access critical information anytime, from anywhere makes a powerful business case for cloud.

The second wave of adoption will be moving the full software development workflow to the cloud for the same reason applications moved: accelerating business velocity. Having your apps and your CD pipeline in the cloud in one integrated platform reduces the need to switch between tools, cuts down on complexity, and gives companies a big competitive advantage by enabling rapid agile delivery. We are committed to meet teams where ever they are on their cloud journey, which is why we built Pipelines, LFS and Mirroring in Bitbucket.

New Features: Pipelines, Git LFS, Smart Mirroring and more

To help both our on-premise and SaaS customers scale in the cloud, today we’re announcing new features focused security, collaboration, and performance:

Bitbucket Pipelines – now out of Beta: Your team can build, test, and deploy from Bitbucket. Pipelines built right within Bitbucket, giving you end-to-end visibility from coding to deployment. With Bitbucket there’s no CI server to setup, user management to configure, or repositories to synchronize.

Git Large File Storage (LFS) – now out of Beta: Developers using large binary files and rich media can now collaborate on 80+ file types of any size and store all their files in one place. Git LFS stores your large files externally and keeps your actual Git repository lightweight, resulting in faster cloning and fetching times.

Bitbucket Data Center on AWS: Companies looking to gradually move their infrastructure to a public cloud can still have the control they desire by hosting Data Center on AWS.

Premium Features- now in a free trial: Some teams require granular admin controls, security, and auditing capabilities. For them, we’re introducing a new Premium plan that is available for all users as a free trial for a limited time including the following features:

Smart Mirroring – Smart Mirroring can drastically improve read (clone, fetch, pull) performance for distributed teams working with large repositories by making them available locally in your own network.

Merge checks – To help customize your workflow, you can set checks to control when a pull request can be merged. You can set checks like requiring a minimum number of approvals, requiring tasks to be resolved, enforcing a minimum number of successful builds, and more.

Security and reliability improvements in Bitbucket Cloud

Source code in the cloud used to be unthinkable due to security and reliability concerns, but the momentum has shifted. Today, if you build for the cloud, you should build in the cloud. Bitbucket has seen a massive trend in this direction with a 142% compounded annual growth rate over the last 3 years among professional software teams moving their source code to the cloud.

Over the last we’ve made major investments in upgrading our hardware, improving monitoring and alerting, reconfiguring internal and external network infrastructure, and revised database queries and configurations. We’re proud to see these investments paying off with 99.98% uptime in June, 100% in July, 99.98% in August, and 99.98% in September.

Most companies use SaaS so they can scale easily in the cloud and pay only for what they use. In our current model, unless you have exactly 10, 25, 50 or 100 users, you can end up paying for seats you don’t use. In the new pricing model (price-per-user) you only pay for the users who are actually part of your team. The Standard plan includes the Bitbucket you love at $2/user/month. The Premium plan at $5/user/month is for teams that require granular admin controls, security and auditing. Bitbucket Cloud will still be free for small teams of up to 5 users. More details can be found here.

Get started

At Bitbucket, we invest heavily in both our cloud and on-prem platforms so we can meet teams whereever they are, whether hosting their source code using Bitbucket Server behind the firewall or in the public cloud, or making the full move of their source code to Bitbucket Cloud.