Stash 2.3: Crowd Single Sign-on, Branch Cleanup and Git Submodules

What do you get when you combine a razor-focused release cycle and implementing one of the highest voted Stash feature requests? It’s Stash 2.3, and it’s available today. Today’s release of Stash 2.3 introduces features for Enterprise teams (single sign-on), Git operations (submodule recognition and branch deletion) and making Stash even more scalable (the SCM Cache plugin).

Crowd Single Sign-On Support

Many enterprise teams use Atlassian Crowd to integrate and deploy single sign-on (SSO) using popular directory servers such as Active Directory or OpenLDAP. In response to many votes from our users, Stash now supports Crowd SSO.

IT administrators can centralize user management through Crowd and provide SSO for all Atlassian apps with minimal configuration.

End-users enjoy the convenience of logging in once to any Atlassian application, avoiding the interruption of repeated authentication across other applications. Log in once, and you’re automatically logged into all applications connected to Crowd, including Stash.

Virtually everything in Stash is pluggable and authentication is no different. Our new plugin based authentication allows you to integrate Stash with other single sign-on solutions.

Even More Scalable

The Stash development team’s approach to Stash performance is simple: keep it scalable and speedy. Stash maintains fast response times and limits memory consumption by using streaming, paged APIs and fine tuning the many Git operations that we use to build the data displayed to the user. We use a mixture of automated performance tests and manual profiling to ensure every last drop of speed is squeezed out of our software. One of the recent results of our focus on performance is the Stash SCM Cache plugin.

Large instances with continuous integration (CI) or other automatic tooling set up to poll Stash for changes can end up with high load on their Stash servers. Consider for instance a CI server that has a number of builds set up for a given repository. Each of those builds polls Stash for changes and when it detects a change, it starts a new build. If your CI server supports parallel and/or chained build steps, each of these builds typically results in multiple clone operations of the same repository. The result: lots of polling for changes, and bursts of clones of a repository when a change is detected.

The SCM Cache plugin adds a caching layer that caches the pack files generated by Git during a clone operation on disk. This greatly reduces the CPU hit on your server and drastically improves response time when you experience repetitive requests from continuous integration. Check out some results from a recent test.

Read more about installing and configuring the Stash SCM Cache Plugin on your Stash server.

Delete Branch

Git, unlike some other SCM systems, makes branching and merging your codebase easy and cheap. However, one side effect is that you can often end up with large numbers of calcifying branches cluttering up your repository, long after they’ve been merged into master.

Up until now, deleting branches after they’ve been merged has been a manual process from the command line (read: it usually never gets done).

Stash 2.3 provides a simple way to delete the branch when you merge the pull request. As you might expect, Stash checks on a few things before allowing the deletion–the branch being merged will not be deleted if:

The branch is the default repository branch.

The user does not have permission to delete the branch.

The branch is subject to an open pull request.

Save your team time; automate the process and keep your code organized with the simple click of a box.

Git Submodules Recognition

Git submodules allow you to nest external Git repositories within the directory structure of your own repository. Submodules are commonly used to embed external codebases–such as shared libraries–which are updated independently of the main project. For a more thorough introduction to submodules, along with some common usage patterns, check out our overview on Git submodules.

If Stash recognizes the external resource hosting a particular submodule (Bitbucket or Github, for example) it will generate a link to the submodule’s home repository in the Stash UI, so you can easily click through to the relevant project.