A quick conversion from cvs to git

notes:

  • I store all files related to services under /srv, or provide symbolic links.
  • Personal files are stored in a CVSROOT of :ext:Terry@vectra:/srv/cvs/ and are filed under module ‘Terry’, for lack of a better name lol.
  • server is vectra, workstation is dixie; communication done via the Secure SHell protocol.
  • I don’t use graphical software for these kind of tasks. GUIs are available, but I don’t want them wasting my time
  • The contents of my personal CVS module will be stored in it’s own spot as ‘cvs-head’ for backup purposes: I have no plans of committing to CVS or merging stuff back into it.
  • Access git is more or less just me and occasionally root@hostname, but may be expanded later
OpenBSD server:
# su - root
...
# pkg_add git cvsps
...
# groupadd -g 2005 git
# cd /srv/
# mkdir git
# chmod 7755 git
if you want to lock down the CVS, go to the CVSROOT
and revoke write access on your modules files
e.g. chmod -R ugo-w fooproject
# cd git
# git cvsimport -ikv -d /srv/cvs -C cvs-head Terry
...
# mkdir Terry
# chmod 0750 Terry; chown Terry:git Terry
# su - Terry
$ cd /srv/git/Terry
$ git init
...
FreeBSD workstation:

$ su - root
# pkg_add -r git
# pw groupadd -n git -g 2005 -M Terry
# exit
$ git clone vectra:/srv/git/cvs-head /tmp/Terry
$ cd /tmp/Terry; mv * .* ~/
$ cd ~
$ git remote add origin vectra:/srv/git/Terry
$ git push origin master
...

In a little while, I’ll probably refine things. Originally, I used the old mv file.ext file.c-vN.M and (cd ..; tar cf – project | gzip -c > /tmp/project-N.M.tar && mv /tmp/project-N-M.tar ./project/backups/) style approaches to my stuffs. The first time I went into using a source code management / version control system for a project, I selected Subversion (also known as svn) and enjoyed it quite a lot. Later on, when I decided to start checking in my configuration files, well… I like to keep my OpenBSD box pretty lean & mean; thus I used what came in the base, which was cvs (concurrent versions system). Subversion and CVS are so much alike, that I could live with CVS very easily (after all, it’s just my config files and an occasional project). I prefer svn to cvs, but hey, I’m a cheap bastard!

I’ve been thinking over the merits of Subversion, Bazaar (bzr), and git for various projects. I generally ruled out Monotone on inputs from another programmer, and having a general lack of interest in it myself. I also considered Mercurial (also known as hg), but I’m more familiar with git then hg. One of my friends uses hg for submitting patches to Mozilla and what not, and there is a project I’m involved with that I feel would benefit from using bzr; but either of those would mean a dependency on Python. Despite my levels of fluency in Python, my file server doesn’t have need of a scripting language like Ruby or Python; because OpenBSD provides Perl, SED, and AWK. So for me, git is a smaller package and it is just as easy to choose to pickup git as it is bzr. My workstation will always have Python, but that’s because I write python code lol.

Several of my various micro-projects use git on my work station, because there is no real need to stick them in the CVS server – and I don’t like CVS or rcs enough to employ them for the task lol. I’ve also considered replacing cvs with git on my laptop, and using it to fire off final commits to the CVS server, but eh… fuck CVS.