You may not yet have hear of it, but Stash is the rising star solution for distributed version control management behind the firewall.
In addition to addressing the basic issues faced by teams versioning their source code with Git -like repository management, branches and access management – it also enables collaborative workflows and code reviews, and can seamlessly integrate with other Atlassian products. To get an overview of this solution, keep reading.
Deployment and pricing
Stash is an onSite – or Behind the Firewall – product, meaning it si deployed within a company’s infrastructure, as opposed to cloud based services like Atlassian onDemand. It is a standalone application that needs a physical or virtual machine with Java 1.6 and over and Git installed. It is not necessary to deploy it on an application server.
The licensing model is user based like most other Atlassian products.
If you are already familiar with JIRA or Confluence, you will not be lost as the interface is very similar. A free 30 days trial version is available. It only takes 30s to set it up to get an overview of the features and see how it can facilitate your source code management workflow.
Project, repository and branch management
Its simple and intuitive UI allows to create projects that contain one or more repositories, these repositories containing one or several branches. Basic functions of the tool allows to cloning, forking, pull request management, searching and browsing versionned files, history of revisions and comments.
In addition to the basic features, it is possible to configure very useful hooks that will trigger actions during specific steps of source code lifecycle (eg launch a build after receiving the code in the repository).
User and access management
Stash offers a native integration for enterprise directories (LDAP). On the other hand it is possible to finely configure the access at different levels: global, project level, per repository and by branch (named or via regex). You can allow public access to a repository, otherwise access is set (admin, read and write) to user and/or group.
About security, users can access the repositories through SSH (by setting a public key in their profile page) or more simply over HTTP with simple authentication.
Different flavors of Git workflows are supported in Stash. This gives flexibility to the teams so they can unleash Git for their needs: a one size fit’s all teams product.
For small teams with a centralized version control system, it is common to use a feature branch workflow. The feature branch is later merged into the main branch with the use of a pull request thats simply triggered with a single click.
Fork and pull
In a more expert version control usage – completely distributed – it is possible to fork a repository and easily do pull requests from a fork. There is an automatic sync function on a fork with its parent.
Collaboration is at the heart of Stash with functions like request for comments or request for review. It is very easy to get or give feedback on the code check-ins within your teams. The workflow can also force pull requests to be reviewed and/or built by a continuous integration tool such a Bamboo or Jenkins.
Integration with JIRA
Integration with the famous issue tracker is also a big advantage if it is already a part of your software factory. New tabs appear in JIRA tickets to see commits and source code referenced by the issue and vice versa for seamless navigation.
Unfortunately Smart Commits – a functionality to drive JIRA Issues with keywords in the commit logs, which is available in BitBucket – are not yet available.
There are still many more features available in Stash like email notifications, the possibility for developers to have a personal repository, markdown in the comments, extensions with hooks and plugins available in the Atlassian marketplace, etc.
Conclusion : what makes Stash great?
Distributed version control systems are growing fast in the software industry and amongst them Git is taking the lead in popularity. With Stash, Atlassian offers a modern tool for Git that fully meets most of the use cases in software development. It differs form its competitors (gitosis, gitolite, Redmine, etc.) by its completeness, ease of use, a vibrant community in addition to its integration with other Atlassian product and the support provided by Atlassian.