Yesterday I configured GNU CVS (Concurrent Versions System) for my PIC and AVR code development. I had the code all over the places including usb memory sticks and was loosing control over the versions. CVS made life a lot easier and now I could easily manage the code.
The CVS server runs Ubuntu Linux, on the client side I use gCVS (linux) and TortoiseCVS (windows) GUIs. The clients are configured to use ssh to communicate with the server.