Adding staged updates to SourceTree

By on November 16, 2016

When it comes to rolling out new software updates, the SourceTree team is always looking to deliver a better experience to users with minimal disruption. In the past we announced a beta program for SourceTree, detailed how we deliver releases, and now we’re modifying how we roll updates out to users. By progressively rolling out updates we aim to deliver new features and functionality to users in a more robust fashion.

What’s the plan?

Where we used to roll a new update to all users on day one, we’re now progressively rolling out updates to users. This staged approach offers the SourceTree team granularity during a release, allowing us to scrutinize each update for bugs and showstoppers before it hits critical mass.

The general flow of a build through our release pipeline is common across both Windows and Mac platforms. The below diagram – using our upcoming 2.4 macOS release as an example – outlines our process and describes the granularity of our new staged rollout in more detail.


Once a release leaves beta it’s progressively rolled out to groups of users over a period of a few weeks, with time in-between for fixes to be implemented where necessary.

Group Percentage available Available exclusively for
1 5% 2 days
2 15% 2 days
3 25% 3 days
4 50% 3 days
5 75% 1 day
6 100% 1 day


How did we implement it?

The implementation is slightly different for Windows and macOS platforms, but aim to achieve the same goals:


Having implemented Squirrel.Windows for SourceTree’s beta program, we’ve decided to move GA releases from AdvancedInstaller to Squirrel as well. Why Squirrel? We were attracted by its focus on simplicity and felt it aligned well with our goal of improving the installation process for users:

Windows apps should be as fast and as easy to install and update as apps like Google Chrome. From an app developer’s side, it should be really straightforward to create an installer for my app, and publish updates to it, without having to jump through insane hoops.

We’ve found it very easy to integrate Squirrel with our FAKE-based build process and CI. The resulting installer is much smaller, quicker to run, has a cleaner footprint, and comes with the added bonus of removing the requirement for Admin rights to install. Overall we felt the user install experience is much improved.

For progressive rollouts, Squirrel comes with built-in staged rollout functionality. SourceTree generates a release percentage for this local install; this defines which part of the release schedule the instance falls into. SourceTree will check at start up for any new updates, or the check can be manually triggered via the Tools/Options/Update tab. After each update, SourceTree will regenerate a new release percentage, ensuring a random distribution of updates.

Important information for Windows users
The switch from AdvancedInstaller to Squirrel will involve a number of changes you should be aware of:

  • 1.9.x.x will be the last AdvancedInstaller update and will install as normal
  • 1.9.x.x+1 will be the first progressive rollout release AND the first Squirrel release
  • 1.9.x.x will detect 1.9.x.x+1 using the new Squirrel progressive rollout process
  • 1.9.x.x+1 will be installed as a pure Squirrel install, i.e.
    • installation location will move from ‘c:\program files x(86)\Atlassian\SourceTree’ to ‘c:\users\USERNAME\Appdata\Local\SourceTree’
    • the new location means installation will no longer require Admin rights
    • the new installation will for now still use the same configuration files held under ‘c:\users\USERNAME\Appdata\Local\Atlassia\SourceTree’ so all existing settings will be respected
  • The Squirrel Update process does NOT include visible Release Notes before running.
  • To uninstall you simply delete the folder
  • It is possible to downgrade without uninstalling first, but data integrity of configuration and settings is not guaranteed.



For macOS we weren’t able to find any existing options that met our needs. But Sparkle, the update framework we’re already using, does include a number of hooks for customizing the experience, so we decided to build our own from that. In order to utilize staged updates we only need to take advantage of a single method:


Inside this method we use some randomization to choose groups; that logic is encapsulated in a thoroughly unit tested class (which we’re considering open sourcing if there’s interest). On launch, a user’s group is assigned and cached, clearing when it’s a new app version (2.3.2 → 2.4, not 75 → 76).

On the Server

What happens on the server end is largely unchanged from what we have today. We’ve added new copies of feeds and tweaked release notes so they work in concert with randomization to make staged updates possible.

Build release process

Unsurprisingly, we continue automating via Fastlane:

fastlane update percentage:50

This former “early access” lane runs a relatively similar process as before: it takes the current version + build info and makes sure the appcast and release notes have been updated properly. If it’s already present no build is produced but the appcasts and release notes are prepared.

Iterating On Our Process

It’s been great revisiting the initial CI and deployment processes we put in place for the beta program and expanding upon them. Figuring out the path of least resistance and what options might work presented a fun challenge and our Fastlane suite is better than ever. Now that we’ve landed this important bit of infrastructure we look forward to the many successful deployments and exciting changes in SourceTree’s future!

SourceTree blog update

By on October 26, 2016

Dear Readers,

SourceTree team here with a quick update on how we are managing the SourceTree blog. Starting Friday, October 28th, 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 gets 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:

Customer support

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 for Mac, or our public issue tracker for Windows. Here you can see what other SourceTree customers have requested, follow requests and issues, and even create a new one yourself.

Atlassian Answers

Have any open questions about how to use SourceTree, Git, or integrate with another product like Bitbucket? Visit Atlassian Answers where you will find questions submitted and answered by the user community, ecosystem developers, and SourceTree staff.

Finally, get social with us! Join us in our enthusiasm for SourceTree, 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!

SourceTree Early Access

By on May 4, 2016

A couple weeks ago we shared our beta development process. And If you’ve joined our beta program, you must be thinking, “when is SourceTree going to get to step 4: Early Access?” To elaborate a bit, an Early Access build is a production-ready build which has been tested by you, our Trusted Testers. We want to give you a heads up that SourceTree 2.2.5 for OS X and for Windows will be available for download at in the coming days. Here are a few things to look out for in the update. The following will be available in OS X first, with Windows soon to follow later.

If you notice any issues or bugs in the Early Access build, please feel free to file them at And if you haven’t already, please join our beta program to get access to a ton of features before they are made generally available.


SourceTree Beta 1 is here

By on April 15, 2016


SourceTree Beta 1 is here! Over the past couple of weeks, we’ve announced a beta program and given you a look behind the curtains. The wait is over. Today, those of you who’ve signed up to be a trusted tester will get access to SourceTree Beta 1. In our first beta we’ve addressed:

Haven’t signed up to be a tester yet? There’s still time! Register today and get access to new features before they’re made generally available. Thanks for being part of the SourceTree team.



SourceTree Beta Program – A look behind the curtains

By on March 31, 2016

Last week we announced a new beta program for SourceTree, and I want to thank everyone who signed up to be a trusted tester. We received a lot of interest and are in the process of building a few new features and improvements for you to try out. For those who haven’t signed up yet, don’t wait too long. We’re still accepting trusted testers, get in now by signing up here.

In the coming weeks, we’ll release our first SourceTree Beta and want to give you a look behind the curtains at the testing process, both internal and external, so you can see how the beta program will work.



Step 1: Alpha



SourceTree Alpha is where we turn your feedback in to features that we test internally. SourceTree Alpha will not be available for public download. However, in one off cases, we will reach out to a few trusted testers for early feedback.

Step 2: Blitz!

1 Mississippi, 2 Mississippi, …, BLITZ!!! 

Once we determine a set of improvements that are ready for a public release, we will build a beta candidate. The beta candidate will go through intensive acceptance testing with our QA team- essentially making the beta candidate feel like a college quarterback on their first day against the top-ranked NFL defense.

Step 3: Beta



All systems go! When the beta candidate passes internal acceptance testing, it’s ready for our beta community to give it a spin. Initially, the SourceTree Beta will be available for download from our public repository and will not replace your production copy. Your version of SourceTree and the SourceTree Beta will be able to run side by side, and each instance will offer updates independent of each other. Beta releases will have features in early preview that may have stability or performance issues so they will be kept separate from production.

The best part of the beta program is the feedback loop. To make feedback reporting seamless for the trusted testers, we’ve implemented Fabric and BugSplat (tools that make crash reporting easy) in SourceTree for OS X and Windows respectively. Another option is to report any issues with the label “trusted_tester” via our Trusted Tester Issue Tracker.

Step 4: Early Access

Once we’ve confirmed there aren’t any show stoppers reported by our trusted testers, the most current version of the SourceTree Beta (Early Access build) will be made available for public download via or, rather than prompting users with an in-app update. To get notified about Early Access builds, follow us on Twitter. Please note that Early Access versions of SourceTree are considered production ready and will replace your existing copy of SourceTree.

Step 5: General Availability



The final stretch! We will take this last week to make sure nothing falls through the cracks before we prompt you with in-app updates. Assuming all systems are pointing to ‘go’, roughly one week after being made available for early access, the last Early Access version of SourceTree will be made the official production version.

Sign up to become a trusted tester in the SourceTree Beta

Now that you know the process, we would love you to be a part of it. Our never-ending goal is to make SourceTree the best Git and Mercurial client out there, and we’re only at our best with your contributions and your feedback. So, if you haven’t already, sign up to become a trusted tester today and keep an eye out for the newest updates from SourceTree.


SourceTree beta program is here – become a trusted tester

By on March 25, 2016

We’re thrilled to launch a new beta release process for our upcoming SourceTree releases. This will give you an opportunity to engage directly with the SourceTree team and provide feedback on future updates. If you’re interested in becoming a trusted tester and would like to get early releases from SourceTree, join this google group. We’re still hammering out the program’s last few details, and will share updates here soon.

We look forward to working with you. Thank you for your support!


SourceTree Design – what’s next?

By on March 1, 2016

Our goal with SourceTree is to move towards a cleaner, simpler interface for developers new to Git while keeping all the powerful features advanced users love. The last release was a step in that direction. We’re excited to share with you our future plans, but first let’s take a step back and look at how far we’ve come:

SourceTree in 2012
SourceTree in 2012

SourceTree in 2015SourceTree in 2015

We’ve made huge strides in improving usability and UI consistency throughout SourceTree, but we’re just scratching the surface.

Addressing approachability and “interface bloat”
There’s no doubt that Git has a steep learning curve. SourceTree has always helped by offering an excellent visual counterpart to the command line interface. We don’t “dumb down” Git, but we believe we could do a better job of making SourceTree more approachable for new users.

Many SourceTree users asked us to tackle SourceTree’s “interface bloat”. One way we tackled this problem was with data. By thoroughly looking at the click data, we found a set of buttons that were rarely used in the toolbar. We surveyed roughly 180,000 unique users and found that the “Reset”, “Add”, “Remove”, “Add Remove”, and “Git Flow” buttons, each individually, were used by less than 5% of those surveyed. So we created some new mockups without these buttons in the UI and tested these mockups with our existing users for over six weeks. They loved it!


Don’t worry, we did not remove any functionality, all of those options are still accessible via right click and the “Repository” and “Actions” menus.

Modern design across two platforms
We’re trying to make SourceTree for Windows as beautiful as the OS X App, and we finally approached a point of convergence. Windows users – we promise that a bright future is ahead. Here is a sneak peek:


Want to see more? Grab some time on our calendar and give us 1:1 feedback. Looking forward to speaking with you soon!


New SourceTree is here: Atlassian account, Git LFS support, UI refresh and more

By on February 22, 2016

We’re excited to release new versions of SourceTree for Mac (2.2.2) and Windows (1.8.2). For those of you who downloaded and tried to use version 2.1 and 1.8.1, we’re deeply sorry for the frustration we caused you and your teams over the past week. We’ve been heads down working through all the issues and stabilizing SourceTree for both operating systems.

In retrospect, we had a gap in the testing process for the latest release of SourceTree. We’re planning a new beta release process for our upcoming SourceTree releases and we’ll share more in a blog post in the coming days.

That said, we’ve expanded our team, we’re actively listening to your feedback, and most importantly, hard at work resolving your biggest pain points. In addition to stability and performance updates, today’s release includes:

Atlassian account
As some of you noticed, we highlighted in our release notes that our terms and conditions have changed. With the new versions of SourceTree, you’ll be prompted to review and accept Atlassian’s Customer Agreement and Privacy Policy. To ensure that it is really you that’s accepting these changes, we’re prompting every user to enter their existing Atlassian account credentials or create an Atlassian account. Please note that you can use the username and password you’ve previously created for SourceTree.

New users can create an account at: Additionally, new SourceTree users can leverage this single sign-on service to log into multiple Atlassian services like HipChat and Bitbucket, our support and help systems, and knowledge base. No more pain of remembering multiple passwords while using Atlassian products. Gone are the days of being prompted to register after 30 days, download a license file, license multiple copies for more than one machine or figure out a way to license SourceTree for your whole team. Upon updating to the latest SourceTree, log in once and you’re done.


Git LFS support
We also added support for Git LFS. Now you and your teams can track all the large assets they produce together in one single place and be productive at the same time. Large files are kept in parallel storage, and lightweight references are stored in your Git repository making your repositories smaller and faster.


UI refresh
We are giving SourceTree a new look with a refreshed and minimal toolbar, new set of icons, and updates to improve the overall user experience.

new_icons_mac_win (1)

Committed to SourceTree
As we mentioned a few years back, we stopped supporting the version of SourceTree in the Mac App Store. As of today, SourceTree will no longer be available for download from the App Store. But you can download the new version any time for free from

Look out for more updates in the future as we continue to strengthen the foundation for SourceTree. Get the new SourceTree today and let us know that you are as #committedtoSourceTree as we are. If you have any further question about this release – we’ll be available on this reddit thread to answer your questions.


Get to know your designer

By on October 14, 2015

What I’m doing with my life


I’ve been with Atlassian for 4 years now — 2 years in San Francisco and 2 in Portland. I started out as Bitbucket’s first designer and have since traveled through SourceTree, HipChat, and now back to SourceTree. I love the intersection of design and code, so creating developer tools is exactly where I want to be. I’m a full stack developer, who has written code on just about every platform. I have no bias when it comes to Windows vs OSX.

Things I’m good at

Things I like

I spend a lot of time thinking about

On a typical Friday night I am

Trying to solve the Chiliad Mystery.

What I’m bringing to SourceTree


Well, I’m the dude who made the SourceTree logo, so there’s that! You can check out my previous work on Dribbble and CodePen to get an idea of my trajectory.

SourceTree is an amazing app, with a huge following. I’m honored to work on it again, and will do my best to respect the existing users, while growing it in the right direction for future Git audiences. This means some of the UI clutter will get simplified, but all of the power will still be there.

I understand developers like density and utility. I promise to not increase the whitespace just because I feel it “breathes better.” My personal goal is to make you feel like you’re living in the future when you use SourceTree. Great things are coming, hold on to your butts.

Hi from the new SourceTree product manager

By on October 7, 2015

Hello, SourceTree community!

My name is Rahul Chhabria, and I joined Atlassian this September to be the product manager of SourceTree. For as long as I can remember, I’ve been using one or more Atlassian products as part of my development workflow. I can’t tell you how excited I am to be joining Atlassian and supporting an amazing community of users.

Prior to joining Atlassian, I worked on a variety of projects ranging from space hardware and education technology to web apps for the California DMV. Most recently, I worked as the product manager for Apple’s database product, FileMaker. I led the product direction for their mobile application, FileMaker Go. Before working at Apple, I was the product manager for Originate, a boutique consulting firm that partnered with small businesses and brought their products to market. At Originate, my team built the first generation Active Learning Platform for Echo360. The platform included a robust content management system, scheduling tools, and an interactive digital classroom experience. Lastly, I co-founded Eduschedu, a cloud-based lesson planning tool for K-12 teachers. In my spare time, I advise and help grow early-stage companies in the Bay Area.

Where does SourceTree fit into my story? As you can see from my previous roles, I’ve always been a fan of building tools with the goal of improving their respective industries. Now I have the opportunity to directly improve the lives of every developer using Git and Mercurial. That is mind blowing! I am ready to take the leap.


SourceTree has given us a massive head start. It takes a complicated workflow and simplifies that workflow without any compromises. I never want to see SourceTree lose that. So, at Atlassian, we’re building a team to take SourceTree to the next level. I am stoked!

I’ve been a consultant for the past ten years and have been looking for a place to call my home. I’m thrilled to be at Atlassian and am looking forward to working with you all to make SourceTree the number one graphical Git and Mercurial client in the world. Onward and upward! Look out for more communications, frequent updates, and new features in this blog.