Go Down

Topic: Source code revision control (Read 2 times) previous topic - next topic


What is the correct practice for keeping track of software projects, which makes sense for microcontroller programs?

I am just a hobby programmer and I currently just keep my programs in folders and edit them as needed. When I get to a point where I think the code is stable I will just copy the program to a new name and start working on that as my new 'release candidate'. But I don't have a system for generating actual releases. Which means I also don't have a good system for rolling back to previous versions. When I go back to fix a bug or add a feature to an older project, it's very hard for me to remember which one of these version files my device is currently running, and which ones are unstable, and so I don't know which one to work on.

I have only a handful of small programs to keep track of, but if I continue to work with AVRs my code base will continue to get bigger and so I would like to start out on the right foot, rather than have to migrate to something later.

I have heard of things like SVN, git, and so on. I gather people used them for software projects but I don't know how they work and I don't know if they make sense for a "one-man shop" which MIGHT expand in the future. I develop on linux and use vi if that makes any difference.

I would be interested in hearing what other people do to keep track of code and code versions, even if it's just a naming scheme. Any advice is appreciated.


i personally use SVN on my private server for most of my Projects when i know they might be in a constant development.

You can also create local svn repositories relatively easy with tortoisesvn.

If you want to work alone. But doing a backup might be harder this way.

If you keep to the recommendet default repository structur with the folders "trunk" for your ongoing development,
"tags" for all your release candidates and "branches" for when you want to change a lot on your code. It looks a lot like you are already doing just without a real versioning system.

I also looked at a lot at other systems like GIT or mercurial. But i love SVN just because its simple to understand system "a folder for everything".

If you want to try it on a real server environment, i could create a repository for you because i never used a local repository.


Always, always, always put your code under source control. Being a one man shop is not a reason not to do it.

I use Visual Svn Server at home. They have an easy installer for Windows that will give you a Svn repository out of the box (10 minutes). You can also expose it over http, so I can even access my source code from outside my home. I backup the repository (folder structure on file system) to my NAS (where it is copied to a second disk). Restoring is a simple xcopy.

I use AnkhSvn as an Svn client that integrates into Visual Studio but also have TurtoiseSvn installed for Windows Explorer integration. I don't have any experience with Linux, so you have to do some research there.

Git seems to be hot these days, but I have never used it and I understand from colleagues it is not THAT easy to get started with.

So I would recommend Svn in any shape or form.


Git is state of the art version control.  There are lots of "getting started" guides out there.  Here's one that's thorough and pretty well written: http://hoth.entp.com/output/git_for_designers.html

It's no harder to get started on than any other source code management system.  Where git gets tricky is when things get complicated, but you don't seem to need complex features.  That said, for your usage, ANY system will be fine, CVS, SVN, Mercurial, Git, just pick one and start using it.


Personally I keep my WIP and test programs in my documents folder which is synced with my dropbox folder.

This gives me very quick access to my sketches from anywhere in the world and there is no messing around re-committing the code (simply save it to My Documents and dropbox does the rest). Dropbox also gives some revision control, as you can view and restore back to previous states.

Once I am happy with the code and want to make it public, I upload it to github.

Go Up