Yes, I said it. Read the title again. Source Code Repositories Are Too Intrusive. I am speaking in generalizations, but before you leave an angry comment on this post, hear me out.
Regardless of whether you’re using Git, Mercurial, TFS, or some other technology to store your source code files, your solution is intruding on your world. It may or may not be built into your toolset, and you likely have to be ultra-conscious of what is and is not checked in.
Don’t get me wrong. I think that being able to branch a project and merge it back later is a phenomenal feature. I think that changesets are valuable. What I’m suggesting, is that on a daily basis, I am very AWARE that I’m using source control. In my opinion (and this entire article is opinion), great software is invisible.
An example of invisible software is Dropbox. (I am not endorsing Dropbox for source control.) I never think about it. I never have to open the Dropbox client. Yet, my files are persisted to a website where I can get them at any time. They’re synced to each of my machines. Never once do I have to “commit” them to one location or another.
Why isn’t our source control software invisible? I don’t want to think about my source control software until I need it. A hard drive fails. I accidentally delete some files. I absolutely want to be able to get previous versions of those files back.
Why doesn’t source control “check in” my code every time I save instead? I’m not talking about “committing” to the original branch, mind you. We’d be breaking the build every 7 seconds. I think that committing my code back to the shared source repository that my entire team is using is a monumental decision, and should not be taken lightly. But for my personal “bookshelf” or whatever term you use, I truly believe that each press of the Save button should also be preserved.
We get pulled away from our desks all of the time. Meetings, lunch, meetings, etc. If something happens when we’re away, we’ve lost our work. I don’t know about you, but if I were to lose even an hour’s worth of code, my productivity for the day would be shot. I have a trigger finger for the “Ctrl + S” command, and I think that our invisible software should recognize that, and persist it somewhere other than my local machine.
What do you think? Do you like having to remember to check-in every time you’re done with a file? Would persisting every “save” be beneficial or detrimental? My vote is for beneficial.