I've recently moved one of my more mature projects to sourceforge.net, which allowed me to re-discover the joys of using a version management system, in this case git. While I've spent some time playing with SVN in the past, git feels more natural to me. That's it's used widely in the FOSS community certainly doesn't hurt either.
So that got me interested in setting up a local git server for projects that may or may not result in anything tangible i.e. projects that I don't want to put online, but are under so much flux that they may break anytime (and I thus want to be able to roll back).
[A pointer to my students: you can obviously use git to maintain versions of your .tex documents as well...]
In this particular case the development machine and the git host are the same. The project is called shellnmr (an attempt to make a bash-like shell in python for NMR processing)
This is very much inspired by/stolen from: http://tumblr.intranation.com/post/766290565/how-set-up-your-own-private-git-server-linux
Getting set up:
On the git host (which has not yet got a copy of the source code)
sudo apt-get install git mkdir ~/work/programming/var -p cd ~/work/programming/var mkdir shellnmr cd shellnmr/ git init --bareFirst time:Initialized empty Git repository in /home/me/work/programming/var/shellnmr
I''ll use localhost below because in this particular example the git host and the development machine is the same.
On the/a development machine, where we keep the already existing project in ~/work/shellnmr
cd ~/work/shellnmr git initInitialized empty Git repository in /home/me/work/shellnmr/.git/git add . git commit -m 'initial commit'[master (root-commit) 5214860] initial commit 2 files changed, 178967 insertions(+) create mode 100644 functions.py create mode 100755 main.pygit remote rm origin git remote add origin me@localhost:/home/me/work/programming/var/shellnmr git push origin masterCounting objects: 2, done. Delta compression using up to 3 threads. Compressing objects: 100% (18/18), done. Writing objects: 100% (2/2), 339.14 KiB, done. Total 2 (delta 5), reused 0 (delta 0) To me@localhost:/home/me/work/programming/var/shellnmr * [new branch] master -> master
Say you've edited the code on your development machine and want to commit the changes:
git commit -a git push
Let's say you go home and want to continue editing the code there and that this is the first time you're doing so:
git clone user@githost:/home/me/work/programming/var/nmrshell nmrshell-code
When you're done editing, just commit as normal;
git commit -a git push
Let's say you've edited the code on another computer, committed the code, and then want to get the latest updates on your regular development machine again:
git pull origin master
And that's about it.
GUI - gitk:
The debian repos have a git GUI as well. To install do
sudo apt-get install git-gui gitk
Start it by launching gitk from the directory where you keep your files (on the development machine)