Software development is fun if you have tools which work great and support what you're doing. So it was finally great to get hear Sven Peters talking about better software development in teams as Atlassian's Getting Git Right landed to Helsinki (24.11.2014). Event about Git and of course about Atlassian's tools.
Getting Git Right’s main theme was about happy developers, productive teams and how Git and Atlassian's tools help to achieve that. Sven Peters and Nicola Paolucci presented how to be a happier developer with Git, and how to ship software faster and smarter. It's good to remember that developing software is after all a social challenge, not a technical one. And Git helps you with it. The presentation slides are available at SlideShare and you can also watch it on Youtube (different event).
Nicola Paolucci gave a nice and 5 minute talk about Git and it’s internals. Lot's of technical details. The main points were "Fast and compact”, "Freedom and safety”, "Explore and understand”, "Control and assemble”. With Git you can rewrite the history safely to e.g. clean commits. Paolucci showed also some tools to help working with Git on the command line like hooks they use and using "better" prompt like liquid-prompt. For GUI you can use Atlassian's SourceTree.
Interesting part of the event was talk about what is efficient and the best Git workflow? The answer is "we don't know". It depends as there are different cultures, different products and different teams. There’s no right way but there are some good workflows which might work for you.
One is to use branch per issue, e.g. hot-fix/jira-30-user-avatars, feature/jira-27-user-sign. The simplest workflow is to use feature branches with develop branch. Then the master is very stable. If you have multiple product versions then release branches are good and bug fixes are done to separate branch and merged to other branches.
They also presented how Atlassian's Stash can help you to work with Git and branches. Like merging changes to branches can be done automatically with hooks or by using Stash. Stash looked nice for controlling and managing your repository with visual interface.
Git also helps you to improve code quality with e.g. code reviews. Code reviews shouldn't be painful as it's about team ownership, shared knowledge and aim for better code but often there's developer guilt. It can be made easier by making code reviews part of your daily work by doing it in small patches like pull requests.
Development is also about communication and for that Atlassian presented HipChat. It looked quite nice tool for following what’s happening in a project with aggregating team chat and information from different tools. Following commits and continuous information brings you clear view what's happening. There are also alternatives to HipChat like Slack or just basic IRC.
But why should you use Git? Benefits like more time to code, better collaboration, dev productivity and it's the future doesn't convince everyone. Like pointy haired bosses. So it's good to remember that Git is also about economics. Delivering software faster, having less bugs and thus having happy customers. Shipping software faster and smarter.
Why Git? from Peters' slides:
In Questions and Answers session there was talk about Atlassian's strategy with Bitbucket and Stash. They said that both are going strong as they have different use cases. Stash has more enterprise features and you can have the repository on your own premises. Bitbucket is about hosting the repository in Atlassian's platform and for small and medium team. What I have used Bitbucket it's nice service but not as user friendly as GitHub. Another interesting question was about storing binary files in Git. There's no optimal solution yet but just some workarounds like git-annex and git-media which allows managing files with git, without checking the file contents into git. In practice you shouldn't store binary files in Git and you should separate product to code and assets.
Atlassians Getting Git Right was nice event and gave good overview about Git and how to use it in software development team. It would have been nice to hear something about the alternatives to Atlassian's tools (BitBucket, Stash, SourceTree and HipChat) which helps you to do better software development. I can't deny that Atlassian's tools work nicely together but sometimes the price is just too high.