By Claire Maynard on November 30, 2016
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
- Learn which industries are jumping on modern development practices
- See how your teams compare to others in your industry
Download the Whitepaper
By Szilard Szasz-Toth on
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:
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:
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.
If you’re already using Bitbucket Cloud, learn how to set up and evaluate a Smart Mirror in less than 10 minutes to see mirroring in action.
Get started for free
Have more specific questions about this post? Reach out to us on Twitter to get the information you need
By Amber Frauenholtz on November 15, 2016
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 , 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 as a to discuss proposed changes to your codebase before they’re merged into shared branches (
The popularity of Git and pull requests have been with no signs of slowing down. The benefits of – higher quality code, shared team knowledge, shared sense of ownership – and flexible workflows in Git have lured teams of all sizes. Amadeus, , employs over developers. Since they made the switch from SVN to Git three years pull requests have become an invaluable tool to protect against poor quality code.
“At Amadeus Bitbucket supports + 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 – l – but when it comes to developer productivity it’s the pull request experience that will set one tool apart from the others. They are the best way ensure you’re releasing the highest quality code possible.
we have found that pull requests work best when 5 key pieces of functionality are in place.
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 How else will your team know they need to review your changes?
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,
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 : 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, o 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.
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 Bitbucket Server handles the overhead for you. Save time and keep everyone up to date with . Atlassian provides a Marketplace full of additional integrations and functionality through add-ons
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 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.
Make pull requests your priority and try Bitbucket Server today!
Try Bitbucket Server
Interested in Bitbucket Cloud pull requests? Learn more here.
By Justine Davis on November 14, 2016
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. 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.
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:
- Embedded media viewer: collaborate on 80+ file types of any size and preview LFS files inside Bitbucket
- Resumable up/downloads: Stop worrying about transferring really large files and continue where you left off
- Increased parallelism of files with chunking: upload chunks of the same file in parallel for faster up/download times
- De-duplication on file uploads: File uploads are chunked, so only the changed chunks will get re-uploaded
To start using Git LFS, follow these easy steps or to learn everything you could possibly want to know about LFS, read this in depth guide.
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 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? 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, ).
Get started for free
Have more specific questions about this post? Reach out to us on Twitter to get the information you need
By Amber Frauenholtz on November 8, 2016
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 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 we’ve also 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!
Try Bitbucket Server 4.11
But wait… there’s more! Besides iterative review, Bitbucket Server 4.11 is chock-full of other goodies including:
- Adaptive throttling of SCM hosting operations: A new throttling approach for SCM hosting operations that adapts to the stress the machine is under.
- VPAT Documentation: Bitbucket Server has been reviewed in accordance to Section 508 accessibility standards.
- Postgres 9.6 Support
- + bugs resolved: That’s right, 30+ bugs resolved!
Read more in our release notes.
By Tim Pettersen on October 26, 2016
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 firstname.lastname@example.org or email@example.com.
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 firstname.lastname@example.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:
# determine your Git clone URL
$ git remote -v
origin email@example.com:kannonboy/flappy-bird-vr.git (fetch)
origin firstname.lastname@example.org:kannonboy/flappy-bird-vr.git (push)
# replace git@ with your-username@
$ git remote set-url origin email@example.com:kannonboy/flappy-bird-vr.git
If you haven’t already, you can easily generate a second SSH key for your alternate account:
# generate and add a new SSH key
$ ssh-keygen -f ~/.ssh/your-username
$ ssh-add ~/.ssh/your-username
(You’ll also need to add the contents of ~/.ssh/your-username.pub as a new Bitbucket SSH key.)
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.
By Kelvin Yap on October 25, 2016
We’ve extended free build minutes for Bitbucket Pipelines:
We want more of you to have the chance to test drive Bitbucket Pipelines so we’re offering free build minutes for a limited time. We’d love you to try out our latest features such as manual triggers, configurable clone depth and support for building Git tags and Mercurial bookmarks.
Sign up for Bitbucket Pipelines
The fastest growing companies in the world today aren’t product companies, they’re . 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.
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.
I 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.
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 .
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. 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 . Based use during the beta, that’s less than a cup of coffee a month for each !
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.
Sign up for Bitbucket
By Justine Davis on October 12, 2016
It is growing so rapidly that revenue from public cloud platforms, business services, and SAAS will grow reaching $236 billion by 2020 according to Forrester*. But why? T
The second wave of adoption will be moving the full software development workflow to the cloud Having your apps and your CD pipeline in the cloud in one integrated platform reduces the need to switch between tools, cuts down on and gives companies a big competitive advantage by enabling rapid agile delivery. We are committed to they are on their cloud journey, which is why we built .
New Features: Pipelines, Git LFS, Smart Mirroring and more
To help both our and customers scale in , today we’re announcing new features focused security, and performance:
- our 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 . For them, we’re introducing a new Premium plan that is available for all users as a 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. . 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.
, improving monitoring and alerting, reconfiguring internal and external network 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.
We’ve also launched a slew of security updates over the last year to ensure your company’s most precious asset is safe.
Pay only for what you need with per user pricing
Most companies use 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 .
At Bitbucket, we invest heavily in both our cloud and platforms so we can meet teams they are, whether hosting their source code using Bitbucket Server behind the firewall or in the public cloud,
We hope you enjoy Bitbucket’s new
Sign up for Bitbucket
*The Public Cloud Services Market Will Grow Rapidly To $236 Billion In 2020, a September 2016 Forrester report
Have more specific questions about this post? Reach out to us on Twitter to get the information you need
By Raj Sarkar on October 4, 2016
Bitbucket team here with a quick update on how we are managing the Bitbucket blog. Starting Friday, October 7th, we will be turning off commenting on the blog.
It’s not that we don’t want to talk to you – we do! We noticed that sometimes blog comments go unanswered for weeks because a comment get posted on a really old blog post. We want to make sure that you are able to get answers to the comments and questions you have on the right channels and by the right people. Here are the places for you to chat with us on anything from product questions, support requests, reporting bugs, and requesting features:
For any technical issues, please visit our support center.
Feature requests and bug reporting
If you would like to request a new feature or file a bug, please visit our public issue tracker. Here you can see what other Bitbucket customers have requested, follow requests and issues, and even create a new one yourself.
Have any open questions about how to use Bitbucket, Git, or integrate with another product like Microsoft Azure? Visit Atlassian Answers where you will find questions submitted and answered by the user community, ecosystem developers, and Bitbucket staff.
Finally, get social with us! Join us in our enthusiasm for Bitbucket, spooning or software development best practices on Twitter.
Thank you for reading our blog, and for all the feedback you’ve given us over the years. Talk to you soon!