Best Practice: Check-Ins, Like Minions..

“Commits should be like Minions: small and numerous.” – @michaellperry


What does that look like practically in day to day activities… well, you certainly shouldn’t be going for more than a day without checking your work in, ideally you’d be in the habit of checking in your work multiple times through out the day. At my work, most teams use TFS, and some use GIT (we’re moving some to GIT hosted on TFS – did you know that was an option?)

BTW..  Alternative titles for this post: “Always Be Checking-In (ABC)”, “Check In ALL THE THINGS!” .. but I digress…

What about when my code isn’t complete?

You know, those times when you’re just trying out an idea, or you know what imageyour code needs to do, but you’re still a couple hours away from achieving it. You want to reduce the bus factor of keeping that work stored on your laptop, especially when you’ve worked so hard on it, but you don’t want to check in half-way complete code and break something for someone else.

That’s why TFS has Shelvesets. (Similar to git stash)

imageNormal Check-ins for TFS are called “Changesets” but every developer has there own private way of checking in code without touching what anyone else is doing – Shelevesets.

Check out this article on MSDN that covers a couple of other reasons that you might want to consider using Shelvesets:

    • Interruption: You have pending changes that are not ready for check in, but you need to work on a different task.
    • Collaboration: You have pending changes that are not ready for check in but you need to share them with another team member
    • Code Review: You want another team member to perform a code review of your pending changes.
    • Private Build: Before you check in your changes, you can use your automated build system to build and test your code.
    • Backup: You have work in progress that you cannot finish now so you want a backup copy that is stored on your server and available to other team members who might need to access it.
    • Handoff: You have work in progress that you want to hand off to another team member.


What about you? What has your team adopted, or what other features would you like to hear about? Leave your comments below!


Minion images © Copyright Universal Studios

About Caleb Jenkins

Caleb Jenkins is an international speaker, author and 6 time Microsoft MVP award recipient, he currently works for Solera as a Director of Software Development. An entertaining and informative speaker who approaches software from a fresh perspective that spans UX, agile practices and technologies for enterprise customers from across the globe. Leading UX product design teams, coaching multi-team agile transformations and architecting and mentoring at some of the largest companies in the world, As a long time community leader and former Microsoft Developer Evangelist, Caleb is well known for his engaging speaking style, depth of knowledge and creative energy. Founder and Principal Mentor of Proaction Mentors, former UX Manager and Agile Coach, Senior Architect for Six Flags Corporation, Product Architect on a Cloud Marketing Platform, Caleb has made a career out of empowering others while building products and teams that delight customers and solve business needs. You can follow him on twitter (@calebjenkins) or his blog, and if you're still reading this, then you could also subscribe to his blog RSS feed or sign up to receive updates by email