If you'd like the how-to, read the rest of the article...
Setting up CVS on Mac OS X using the bash shell
- Set your .bashrc file to know about the CVS server by adding the following lines to ~/.bashrc on the client machine.
export CVSROOT=:ext:username@remotehost:remote_path_to_cvsroot
export CVS_RSH=ssh - Set up your ssh key using ssh2
ssh-keygen -t dsa
(accept the default file and enter a passphrase)
- Physically transfer the file ~/.ssh/id_dsa.pub to the CVS server and add it to the contents of ~/.ssh/authorized_keys2.
- Set your .bashrc file to start up the ssh-agent so that you won't need to type a passphrase to access the CVS server. Add the following line to ~/.bashrc on the client machine:
alias ssh-add='ssh-add $HOME/.ssh/id_dsa'
Open a new Terminal window and type the following (path is the path to the project you wish to get from the CVS server):
eval `ssh-agent -s`To use SCM from within Project Builder
ssh-add [ then enter passphrase ]
cvs checkout path
Project Builder needs to be able to access the ssh-agent that was started in your terminal session above, so you must launch Project Builder from the terminal and keep the terminal window open during your Project Builder session. From the terminal, type:
open /Developer/Applications/Project Builder.appIf you are beginning from a fresh terminal session, you will need to do the following:
eval `ssh-agent -s`Caveats and Gotchas
ssh-add
open /Developer/Applications/Project Builder.app
- Every time that you run the ssh-agent command, the agent lives even after the terminal window that opened it is closed. This is a bummer. It would be nice to find a way to make ssh-agent the parent of every process, but my attempts to patch it into the login process didn't work. I tried using -LoginHook, modifiying the loginwindow process, modifying the Finder process, and changing the 'Finder' key in loginwindow.plist. I'm up for suggestions... Fixing this would also allow one to launch Project Builder from the Finder instead of needing to do it from the command line. Since the ssh-agent doesn't die, we might as well add the following to our .bashrc file so we don't have to type it every time we want to code something:
eval `ssh-agent -s` > /dev/null
- I'd personally prefer to do this using SSH version 1 instead of version 2. But I don't care enough to switch 'em. If you're using version one, just use ssh-keygen (with no arguments) instead of the command I gave above and physically transfer the file identity.pub to the server computer instead of id_dsa.pub. Also, you won't have to make the alias for ssh-add.
- If you're using tcsh, change the 'export's to 'setenv' and stick an '=' in between the thing being defined and its definition.
- You may want to add an alias for Project Builder to your .bashrc file so that you can launch it a bit more easily. For example:
alias ProjectBuilder='open /Developer/Applications/Project Builder.app'

