git is a fantastic choice for tracking the evolution of your code base and to collaborate efficiently with your peers. But what happens when the repository you want to track is really huge? In this post I'll try to give you some ideas and techniques to deal properly with the different categories of huge. Two categories of Big repositories If you think about it there are broadly two major reasons for repositories growing massive: They accumulate a very very long history (the project grows over

Continue reading »

Design Guidelines 1.4 Released

The Atlassian Design Guidelines (ADG) has an exciting new release. We've polished some old things, created some new things and have made the whole experience of using our guidelines even better. What's in the release? Forms The old forms page was heavily visited but not very helpful. We've overhauled the forms page making it more robust and easier to use. Included is a new way to validate forms and tooltip/help design that helps clean up our form layouts and allows users to focus on their

Continue reading »

I often get asked about how we use our own tools for software development here at Atlassian. Since it is fast becoming the norm to work as a distributed team at Atlassian, I thought I'd take a moment to share some of our experiences in working more efficiently across time zones and geographies. I'm highlighting FishEye and Crucible as we've spawned a new team in Gdansk over a year ago, so it's a good example of a distributed effort. 1. Release planning Planning begins when the Product Manager (PM)

Continue reading »

In February, I had the pleasure of speaking with the London Atlassian User Group (AUG) about some of our experiences with continuous delivery and deployment at Atlassian. The slides for this are available online, but the talk generated a lot of discussion at the time and I'd like to recap some of it here. To give a bit of context, I work in the business platform team; we're responsible for developing the tools that allow the business to interact with the customer. In particular, we develop the

Continue reading »

Consider the following questions: How do you handle project dependencies with git? Our project is made up of multiple inter-dependent repositories. Currently we manage those with svn:externals. What's the best way to handle those with git? How do you split a very big repository in smaller components using git? These are some examples of the most asked questions we got at the European leg of our recent Getting Git Right tour. The topic appears to be a big pain point for many software

Continue reading »

How do you divide a Git repo without squashing the history and breaking the original repo? I'll show you how to do it with as little pain as possible, by splitting the main repository, thus making your team and Git happy at the same time! Here at the Hosted Operations team, we have many small repositories, and sometimes they just contain single scripts. This approach eventually produced some duplicated code and effort, leading to considerable maintenance issues. What we decided then, was

Continue reading »