By Alastair Wilkes on April 14, 2016
On the heels of other improvements to code review that we recently released, today we’re updating the diff view to better represent moved or renamed files in Git repositories. This will speed up your code review by collapsing files whose contents have not changed—enabling you to jump right into the code that actually requires review. No more wading through large blocks of code for moved or renamed files!
Try out the new view for renamed/moved files today by visiting the “Labs” page (“Bitbucket settings” → “Labs”) and turning on “Show renamed/moved files in diffs“:
While you’re there, check out the “improved pull request list” if you haven’t already. We’ve updated the pull request list to make it easier for you to quickly find the pull requests you need to review and show the state of a review at a glance. We’ll be rolling out both these features to everyone over the next few weeks. Happy code reviewing!
By Roger Barnes on April 7, 2016
Pull requests provide a lightweight way to do peer code reviews and merges as part of a branch-based development workflow. Sure beats having to huddle around a monitor with 3 other developers! .
Pull request reviewer status
As powerful as that has been, we’ve heard feedback that it wasn’t obvious who had reviewed the latest changes – even to the reviewers themselves. Some reviewers were also appearing a little too judgmental and reaching for the decline button when they really just wanted to say that the code needed a little improvement.
Pull requests need a way to help reviewers and authors keep track of what was going on around all the feedback flying around. So we added reviewer status to make reviewers’ intention clear to everyone. As a result, both the author and reviewers can see which pull requests need their attention. We shipped this last month with Bitbucket Server 4.4 and have seen strong uptake amongst our customers.
Another useful improvement we made to pull requests is the ability for users to quickly add or remove themselves as a reviewer. If you’re on a team that adds lots of reviewers, it’s now easy for to opt out whilst make it clear who’s still on the hook. Conversely, if your teammates prefer to “self-select” by opting in as a reviewer, that’s easy too.
Even better branch permissions
Awesome pull requests are awesome and everything… but only if people use them. We’ve long had branch permissions that let teams choose who can write to a branch without a pull request. That’s pretty much these days. Recently, we made it possible to protect certain branches by requiring pull requests for changes.
Organizations that wanted stricter pull request based workflows found this quite useful, though as some pointed out, there are times when bypassing this restriction is necessary. For example, when applying merges of already approved changes between release branches.
Bitbucket Server 4.5, it’s now possible to nominate exceptions to any of the available restrictions – be it force pushes, branch deletions, or requiring pull requests. This means you can ensure developers’ changes always go through pull requests, while the release manager can propagate previously reviewed changes with regular merges.
Overdue for a Bitbucket upgrade?
If you’ve been holding off upgrading to the latest release or want to try Bitbucket Server for the first time, there’s never been a better time. Get these goodies into developers’ hands and they’ll thank you for helping them fly! Download Bitbucket 4.5 here.
By Ben Echols on April 6, 2016
High performing teams use code reviews. A lot. And most of the time code reviews are done using pull requests.
Improved pull request list
We’ve updated Bitbucket’s pull request list to make it even easier for you to quickly find the pull requests you need to review, and to show you the state of a review at a glance:
We’ve improved the filter bar to let you jump right to the pull request you need to approve and filter by author, target branch or pull request state. You can search for the pull request too. The updated display shows who’s reviewing each pull request, who has already approved it, and which branch it’s targeting, so it’s easy to see how your team’s code reviews are progressing.
Try out the new pull request list today by visiting the Labs page and turning on the improved pull request list:
Please provide feedback straight from the Labs page by clicking “Give feedback”. Your feedback will help us get it right. We’ll be rolling out the improved pull request list to everyone over the new few weeks.
We will use the Labs functionality in Bitbucket Cloud to gradually roll-out new features to our users. This will let you provide extensive feedback to our engineering teams and help make the feature better before we roll it out to everyone.
Remember when you had to add ?w=1 to your page URL to ignore whitespace? That did the trick, but it wasn’t very intuitive. Now it is.
Now, every time you’re reviewing some code and want to ignore whitespace on that diff, click the “More Actions” menu (i.e., the ellipses “…”) and select “Ignore whitespace”. Selecting this option will ignore whitespace across all changed files. This option is available for everyone today.
We hope these new features we introduced recently improve your code reviewing experience in Bitbucket Cloud. Happy coding!
Did you find this post useful? Share it on your social network of choice so your fellow Bitbucketeers can learn about these new goodies, too!
By Jake Brereton on April 5, 2016
In the world of software, dev speed is critical. Better to add that highly-requested feature to your product today than see it show up in a competitor’s product tomorrow.
We did an extensive study amongst our users and found teams who have JIRA Software and Bitbucket integrated release 14% more often (when compared to teams using just one of those products). Part of the difference is that these teams chose JIRA Software and Bitbucket because they support the practices high-performing teams already want to adopt: agile planning, branch-based development, and continuous delivery. The other difference is due to the tools themselves: they help teams move faster.
So how do you maximize our integration between JIRA Software, the #1 software development tool used by agile teams, and Bitbucket? I’m glad you asked. Here’s an overview of what the integration does, as well as how easy it is to set up. I’ll also link you to documentation that can guide you through the steps in more detail.
Step 1: Connect JIRA Software and Bitbucket in less than a minute
Yes, you read that correctly. Linking your JIRA Software and Bitbucket instances now takes about 30 seconds. To quote Bruno Mars, “Don’t believe me – just watch.” Watch this 30-second video, that is:
Once you’ve linked JIRA Software and Bitbucket, your team will enjoy integration features that support faster release cycles through JIRA Software’s development panel, workflow triggers, and the release hub.
Step 2: Branch from within JIRA Software and activate the dev panel
With JIRA Software and Bitbucket talking to one another, engineers can save time by creating branches directly from the development panel inside any JIRA issue. Branching this way means less app-switching, and JIRA Software even pre-populates Bitbucket branch names based on the issue’s key and summary. With the issue key included in the branch’s name, information about commits, build, pull requests, and deploys is automatically sent back to the issue so it’s all in one place.
This integration is great for the rest of the team, too. With everything about the issue’s development updating in realtime, your team will spend less time shoulder-tapping one another for status updates and more time moving towards the next release.
Creating branches locally? No problem. All of the visibility and benefits of the development panel described above works exactly the same.
Step 3: Configure workflow triggers on a customized workflow
JIRA Software and Bitbucket’s integration also lets you set up workflow triggers that will speed up the development process even more. Triggers can be added to any workflow status, which means that an action in Bitbucket can automatically update the status of a JIRA Software issue.
For example, you can set up a workflow trigger to automatically transition an issue from “To Do” to “In Progress” as soon as a developer creates a branch for the issue. Or you might need an issue to move from “In Review” back to “In Progress” if a pull request is rejected.
Workflow triggers allow engineers to spend more where it counts, free them from having to manually update issues, and make sure JIRA Software’s dev panel is always up to date for the rest of the team. To add workflow triggers to your custom workflow, edit your workflow from the JIRA administration console and then click on “Triggers” within your chosen transition. For more workflow triggers use cases, check out this post.
Step 4: Release ahead of schedule with real-time release readiness
Once your team is taking advantage of the development panel inside JIRA issues, they’ll also begin benefiting from another feature: the release hub. The release hub dashboard gives a detailed – and automated – view of the progress of a release, replacing the manual process of checking individual issues for release readiness.
Release hub aggregates all the relevant information associated with an upcoming release. Then it generates warnings if it finds unreviewed code, open pull requests, or failing builds related to issues scheduled for release. This gives software teams the ability to track and release work in a more programmatic fashion, which tightens release cycles by a factor of days (if not weeks).
The release hub can be found in JIRA Software’s sidebar in the “Release” . From day one of development to the hour before a release, release hub brings real-time release readiness to every member of your software team.
1 + 1 = 14%
It’s no coincidence that teams who have JIRA Software and Bitbucket connected are able to release 14% more often than teams who aren’t using these two tools together. With increased visibility, fewer status meetings, and real-time release readiness at your fingertips, every member of your team can accomplish more with greater speed and confidence. Automation of manual tasks means more efficiency and accelerated development cycles. And the best part is that we’re just getting started.
So if you could release software 14% more often, why wouldn’t you? Visit our JIRA Software/Bitbucket integration page to learn more and see these integrations in action.
See what JIRA Software and Bitbucket can do
Did you find this post helpful? Share it on your social network of choice so your fellow software makers can learn from it, too!
By Megan Cook on
Every software team aspires to be faster. Agility and dev speed lead to happier customers, partners, and employees. We at Atlassian are committed to helping teams deliver software at speed, and we’ve made significant investments integrating our products so that it all flows smoothly from concept to launch.
JIRA Software and Bitbucket are two of the most popular developer tools among software teams and many of our customers choose to integrate them. While they swear by the integration, we were curious as to whether there was a measurable improvement to their processes and if so, how. So we asked one of our product analysts to pull the data for us (anonymized and sanitized for your protection, of course).
JIRA Software and Bitbucket teams release 14% more often
We compared the number of released versions completed during the second half of 2015 by JIRA Software teams with the Bitbucket integration vs. teams without it. There was definitely a correlation. We found that software teams released 14% more often on average when JIRA Software is integrated with Bitbucket. The contrast was especially significant for smaller teams (10 users customer tier) who released 25% more often on average vs. larger teams (2000 users customer tier) who released 5% more often.
All their information is in one place…
Why do software teams with JIRA Software and Bitbucket integrated release more often? For starters, they’re using agile and Git in their development process – plus the integrations themselves, which do a lot to enhance that.
JIRA Software and Bitbucket allow you to have all important information in one place so you can stay in the tool of your choice. You can track the health and status of your next release using the release hub. It shows a summary and a breakdown of the issues in the version, grouped by status.
Another important feature, the development panel, gives you visibility into development status within the context of an issue. Lastly, when you’re ready to start work, you can create a feature branch directly from the issue in JIRA Software. JIRA Software will automatically suggest a name for your new branch in Bitbucket based off the issue key so you never get lost in your branches.
…which helps them close 23% more issues
We also compared the number of issues created in the second half of 2015 that were transitioned to a “complete” state during the same time period. We found that on average, JIRA Software customers with the Bitbucket integration closed 23% more issues vs. JIRA Software customers without the Bitbucket integration. Again, the contrast was especially significant for small teams who closed 49% more issues on average with the integration.
Integrate to accelerate
Teams that use JIRA Software and Bitbucket accelerate development by taking advantage of features like workflow triggers to automatically transition issues from one status to another based on actions taken in Bitbucket (creating a branch, merging a pull request, etc.)
Likewise, smart commits in Bitbucket let you update your JIRA issues (add a comment, log time, or transition the issue) by adding special commands to your commit messages. Features like these let you avoid repetitive tasks and focus on coding, thus helping you ship more often.
“JIRA Software and Bitbucket allow us to more easily and reliably create better software for our customers, faster”, said Itay Neeman, Director of Engineering, Splunk.
Get started today
If you still aren’t convinced, why not try it yourself? It will take you less than 30 seconds to connect JIRA Software with Bitbucket. Whether you have both tools, just one, or neither, visit our integration page to get started.
Learn more about JIRA Software and Bitbucket
Did you find this post helpful? Share it on your social network of choice so your fellow software makers can learn from it, too!
By Amber Frauenholtz on March 28, 2016
, I get the chance to talk with developers doing really cool things with code they host on Bitbucket. Recently I had the chance to meet the team over at CloudCannon and discuss how they develop their application.
Similar to other small teams, they’ve faced challenges with setting up a solid continuous delivery model and ensuring the code released is of the highest quality possible. But thanks to the bitHound Bitbucket add-on and their own custom Bitbucket extension, they were able to create a workflow that’s a perfect fit. Here’s how it works – hopefully this will inspire a few ideas for your team’s process.
CloudCannon’s need for speed
CloudCannon makes it possible for non-tech savvy users to update their own websites. Developers build a static or Jekyll site with full control over design, libraries, and frameworks used. Then non-developers log in and update the content inline, with no prior knowledge of development needed.
Like all SaaS companies, they live and die based on their ability to release fixes and features to their customers as frequently as possible. Git’s support for branch-and-merge workflows, plus Bitbucket’s extensibility, plus Docker’s flexibility is their recipe for dev speed (with a dash of automation thrown in).
Node.js, microservices, and bitHound (oh my!)
Their infrastructure, written in Node.js, is entirely composed of microservices. Each repository contains a stable master (trunk) branch, a production branch, and feature branches .
For each new feature, they create feature branches within every microservice repository it touches. To keep track of changes on their feature branches, they implemented a strict commit message convention. Each commit has to indicate the type of change made with “fix, feature, or chore”. For example:
fix(broken sharing ui)
feature(added ssl interface)
chore(fixed mixed whitespace)
These conventions come in handy when it comes time to tell customers about each release. They group commits together based on keyword to create detailed release notes they can publish in their documentation.
Once they merge those changes back into the stable master branch. At this point in their workflow, CloudCannon needed a way to enforce additional quality checks. After meeting the bitHound team at Atlassian’s very own AtlasCamp event last year, they discovered that bitHound could do just that.
Using Docker containers for deployments
Once features have passed the package quality check, changes are deployed to their staging environment. How does this happen? I’m glad you asked – this is where things get really interesting.
When CloudCannon set out to build their continuous integration and delivery pipeline, they found it difficult to find a solution that fit their exact requirements. What do you do when you’re an engineer and in need of a tool? You build your own! So CloudCannon did just that, creating their very own continuous integration and delivery tool called Weldr.
Named for its ability to ‘weld’ together Docker containers, Weldr is a node.js application that uses Express.js to create web services for the team to interact with. CloudCannon automatically kicks off builds using Bitbucket’s webhooks with each push to their master branch.
Tying together several bash scripts, Weldr then pulls the latest repository change from Bitbucket, spins up a new Docker image, starts up all necessary services, and finally publishes a log file of how the build went. If all is well in the log file, the developer then runs through a series of scripted manual tests to ensure everything is working as expected.
Currently the team needs to open Weldr to view the results, but they plan to enhance the process by sending build status updates to Bitbucket’s Build Status API. This will show them the status of builds without having to leave the Bitbucket repository.
When a batch of new features and fixes are ready for release, they repeat the process to deploy to production (which happens 2-3 times a week), with one minor change. Instead of automatically triggering production deployments, they decided to make it push-button to avoid any accidental mistakes.
…and so can you
Using Bitbucket’s extensibility, bitHound’s quality control, and their own custom continuous integration CloudCannon is able to deploy to their end-users with zero downtime – a feat they’re rather proud of.
And although Weldr is unique to CloudCannon, you can use just about any continuous integration tool to mimic their process. Many of which, like Bamboo, Wercker, and AWS CodeDeploy, integrate directly with Bitbucket for automatic deployments and build status.
Automation is just the beginning. For more on Git workflows and using Bitbucket for continuous delivery, head over to The Pipeline our continuous delivery hub.
By Steve King on March 24, 2016
How often has this happened to you: you see an error message and you’re not sure which part of the code it came from, or you know the function name but you don’t know what repo contains the code for it. “Ghaah!” Many of you’ve been asking for a way to search through your code in Bitbucket Server, and I’m pleased to tell you that the wait is over.
Today, we’re inviting our customers to take a first look at code search in Bitbucket Server via our early access program (EAP). Now you can search through your code to find exactly what you’re looking for right from the search bar:
How does it work?
We understand that many of your teams have a lot of code. So we’ve made it easy for you to restrict your search results to a specific project or repository using search filters. You can also search for code in a particular language (e.g., lang:java) or with a particular file extension (e.g., ext:css).
Search operators like AND, OR, and NOT can be added to searches to help narrow down or broaden the results. This is useful for further filtering results when you get too many.
How do I get started?
Glad you asked! You can download the Bitbucket Server EAP build with code search here and we’ve created this step by step guide to get you started. If you do try it out, let us know how it goes – your feedback is extremely valuable to us. Filling out this short and simple survey will help us make code search installation better for you and your fellow Bitbucketeers when it is officially released.
We look forward to bringing you more soon. Happy searching!
Download code search EAP now
By Ben Echols on February 24, 2016
A few weeks ago, we introduced the concept of projects in Bitbucket Cloud based on requests from many of you. This is a unique feature of Bitbucket and has already proven helpful for teams who need a way to organize their repositories – especially teams in larger organizations managing hundreds (or thousands) of repositories. We’re constantly striving to innovate and add valuable features to Bitbucket Cloud, and we wanted to let you know about several improvements to Bitbucket projects already in the works:
- Available today
- Flexible dashboard sorting: we’re adding a “Last updated” column, so you can sort by any of the columns on the dashboard.
- Coming soon
- Full API support: this will allow you to organize your repositories using API calls.
- Repo avatars: we’re committed to bringing back the repository avatars.
Why should you use Projects?
As organizations grow, team sizes get bigger, and more and more repositories get added. It gets progressively harder to find the repository you’re looking for. Projects make it easier for your team to organize repositories and be more productive with Bitbucket Cloud. Some of the main use cases we’ve seen so far include:
- Large teams using projects to group, manage, and organize their repositories around a specific team or organizational structure
- Teams using projects to group a large number of active repositories into smaller chunks, making them easier to find
- Teams organizing repositories around specific technologies or languages
- Agencies organizing repositories based on client needs
Dashboard sorting preview
We’ll be continuously iterating on projects in Bitbucket Cloud, and we’re shipping some changes to our dashboard today. We’re introducing the last updated column as requested by many customers over the last month which, in combination with our updated filter bar, will make it easier than ever to stay on top of your team’s work and find the repositories that you’re most interested in. To accommodate these changes, we’ve removed the “Recently viewed” table, however those repositories are still only a click away in the repositories menu.
Here’s a preview of the new dashboard:
We’re committed to helping your teams deliver software at speed, so please keep the feedback coming! Projects are already making a big impact on the way teams organize and manage their repositories with Bitbucket and we’re looking forward to continuing to iterate on the experience based on everything we’ve heard so far. For further discussion, we will be available on this Reddit thread to answer any more questions you might have around Bitbucket projects.
By Kelvin Yap on February 19, 2016
<This is a cross-post from Atlassian Blogs>
Atlassian is dedicated to unleashing the potential in software teams. We want to help you work smarter and faster. This is the reason we keep adding new features to Bitbucket – branch permissions, merge checks, smart commits, smart mirroring and many more.
Last year, we were working on solving another big problem for our users: tracking large files in a Git repository. Git large file support (LFS) provides the ability to store really big files where they’re needed, not just where they fit. We want to make Git right for everyone and that’s why we decided to collaborate with GitHub on building a standard for large file support.
Why Git LFS?
It’s a known issue that Git doesn’t play nicely with large files, and it’s not just developers who struggle with large files and version control. Native Git’s limitations make it challenging for team members like designers, tech writes, sys admins, and build engineers to work closely with developers.
They often need to store their assets in stand-alone systems or cloud storage providers because of Git’s historic inability to track version history for large assets (schematics, graphics, or other media files). Co-locating non-code assets with the code itself means the large assets can be updated quickly, easily versioned, and become a natural part of the deployment pipeline. As a design team incorporates feedback on their interface assets, iconography, and images, they can deploy those changes in a fully-built version of the product and see the results.
Git LFS also allows people like designers to version the assets they share with their team, just like all the other assets in a repository. This means developers can find the latest revision of an asset they need to use without needing to track down the right version of a file or interpreting what “menubar_v2_final_v3_final_final.psd” means. (Sounds almost too good to be true, doesn’t it?)
For mobile software teams and game development teams, Git LFS relieves the pain of working with the ever-larger image, texture, and video assets that cater to the ever-improving resolution on mobile devices. It also means tests and builds don’t need to rely on an external step to succeed. And if you’re building a video- or audio-intensive app, you can keep those stored in Git LFS too.
Git LFS in Bitbucket
Naturally, we want to do everything we can to make Git more accessible to all team members. And that’s reflected in the changes we’re making to Bitbucket, our Git repository manager, available as a cloud service or on-premises server. Any software team using Git LFS can now view every version of project assets through the Bitbucket interface and in select media types we’re now making it easy to compare the latest version updated with our visual diff tools.
Bitbucket Server implemented Git LFS in v4.3, and we’ll be releasing support for LFS in SourceTree (our desktop client for working with Git) soon. We’ve also made it really easy to use LFS in Bitbucket Server so you can get started quickly. But Atlassian’s LFS journey is far from complete. We’re bringing LFS to Bitbucket Cloud soon.
Git for everyone!
We’ll continue collaborating with GitHub on the LFS protocol to extend the capabilities of Git for all software teams using features like file locking to prevent change conflicts, better handling of vector and layered files, and more. In Bitbucket, we’re making it easier to work with media files and our design teams are helping us bring a great UI experience to every member of your software team like designers, tech writers, marketing, etc. – even if they don’t write code.
If you haven’t used Git yet, check out our collection of Git tutorials and articles. Or if you’re ready to get started, signup for a Bitbucket Server account. If you’re already using Bitbucket Server,enable Git LFS for your team and let us know what we can do better.
By Roger Barnes on February 9, 2016
<This is a cross-post from Atlassian Blogs>
Are you on one of those teams that finds all kinds of ways to stretch the limits of its development tools? If you’re at a big company, working on big projects stored in big repositories – possibly repos that are shared with teammates across multiple continents – the answer is probably “yes”.
Using Git at massive scale can be so inefficient that it poisons your team’s productivity. So I want to bring you up to speed on the antidote we’ve developed. It’s called smart mirroring, and it’s now available in Bitbucket Data Center.
Does your team need smart mirroring?
Some teams do, some don’t. But the teams who do need it have a few things in common.
For starters, we’re talking about teams with hundreds, if not thousands, of developers. A few thousand coders will tax any repository server, even if that server is sitting just a few feet away from you. And as important as the performance of Bitbucket itself is, there are other factors in play.
We’ve noticed that an increasing number of large development teams using Git are geographically distributed, with little or no control over the network performance between themselves and their Bitbucket instance. These teams suffer from high latency and every operation they perform competes for limited bandwidth. In addition, these same teams often need to work with large repositories for a variety of reasons (sometimes even good reasons!).
All these factors conspire to rob developers of valuable time, making them wait long periods – often hours – to clone a large repository from across the globe. It can get so bad that people have resorted to sending portable drives around the world via mail. That kinda sucks.
If this sounds like you, smart mirroring will help.
How smart mirroring improves Git performance
Bitbucket Data Center has always been able to run multiple application nodes in a local cluster to help serve all those users and build bots that demand performance and availability. Smart mirroring takes the performance improvements a step further for Git read operations in a way that’s tailored for distributed teams working with large repositories.
It works by setting up one or more active mirror servers to operate with read-only copies of repositories in remote locations, automatically kept up-to-date from the primary Bitbucket instance. A mirror can host all of your primary instance’s repositories, or just a subset. Mirror servers delegate user authorization and authentication to the primary server, so no additional user management is required. And you can connect as many mirrors to your Bitbucket Data Center instance as you need at no additional cost.
Aside from dramatically improved Git performance, developers are automatically presented with alternate clone locations in the Bitbucket interface, so administrators don’t have to provide extra training. Once set up, the mirrors are fully self-serve.
Predicting performance improvements
The performance gains you can expect vary as a factor of network bandwidth and repository size. What it basically comes down to is how slow remote cloning is for you today. In a simple test, we saw that a 5GB repository took over an hour to clone between San Francisco and Sydney. But with smart mirroring, that time was to just a few minutes.
We heard from one customer where a remote user had a clone that took 9 hours. (9 f’ing hours!) They could expect a more substantial performance increase – basically, a whole working day given back to each developer who clones a large repo.
Imagine: the mobile team in Bangalore, that web team in London, the secret project team working from a lab in Thailand… all able to reap the benefits of Git, without suffering from the tyranny of distance.
Whether you’re just adopting Git or already a guru, your distributed teams should be able to make cool stuff without unnecessary delays. If you’re ready to talk to a real live human about smart mirroring and how it can help your team, get in touch with one of our customer advocates using our handy contact form. If you’ve temporarily lost your ability to speak due to banging your head against your desk while wondering if that 8GB clone is ever going to complete (or you’re busy hand-delivering a hard copy of it to your teammate in Poland), you can get more information about our Data Center offerings online.
Interested in learning more? Join Roger Barnes, Senior Bitbucket Product Manager, on March 3rd at 11:00am PST, CET, and AEST to learn:
- Benefits of using Smart Mirroring in Bitbucket Data Center 4.2.0 or higher
- How Smart Mirroring works: configuring a mirror server to an upstream instance
- Steps for setting up a mirror to improve Git clone speeds for distributed teams
- Troubleshooting tips for any issues you might encounter with installing a mirror
- How to point your continuous integration server (Bamboo, Jenkins,…) at a mirror
Register for Webinar
Did you find this post helpful? Please share it on your social network of choice and help your fellow Git users end their performance woes!