Modula-3 CVS SSH access @ elego Software Solutions

The Modula-3 source code for the PM3 and CM3 distributions is kept under CVS control in CVS repositories located on the server modula3.elegosoft.com. CVS is a client/server based version control system, which is used to keep control of all changes, branch independent lines of development for certain projects or stable releases and fixes, and coordinate the work of all developers working on the sources.

CVS features the concepts of workspaces and concurrent independent development. Every developer checks out one (or more) copies of the sources he/she is interested in into his/her own workspace where changes may be made independent of other developers; the results of the work are committed to the CVS repository via the cvs commit command; work from other developers or other development lines is transferred to the workspace via the cvs update command (and always merged with local changes). Configurations can be created and named with CVS tags.

If you are not familiar with CVS, have a look at the CVS project home page. You will find a short description of every CVS command in its Unix manual page (man cvs).

Everybody who wants to work on the CM3 or PM3 sources directly can get write access if he provides an ssh key (protocol version 2 (DSA) preferred). Send email to m3-support{at}elego.de if you are interested, and have a look at the CM3 configuration management rules.

Everybody who wants to work with the CVS repositories for CM3 and PM3 directly needs SSH access to the server modula3.elegosoft.com. We need to setup a user account on this machine, which will enable you to commit changes to the CVS repositories via the CVS protocol tunnelled by SSH. This may sound a bit complex, but is the only advisable secure access method. If you don't know about SSH please read the manual page on your Unix operating system (man ssh), or refer to the Open SSH home page. (mdiers should add some info about ssh on win32 here.)

SSH uses public/private key pairs for authetication and encrypts all traffic over the internet. So the first thing you need to do is create an SSH key pair for protocol 2, which is usually accomplished with

  ssh-keygen -t dsa
    

This will generate the files ${HOME}/.ssh/id_dsa (private key) and ${HOME}/.ssh/id_dsa.pub (public key). Permissions on ${HOME}/.ssh must not allow anybody but the owner to write, and permissions of the private key file must be r/w by user only (0600). The private key will be used on the client machine where you keep your CVS workspace, and the public key must be placed in the ${HOME}/.ssh/authenticated_keys file on the server (which elego will do for you). You should also use a passphrase to protect your key pair; and you may ssh-agent for convenience, so that you only need to type the passphrase once per session. Please refer to the appropriate manual pages (man ssh, man ssh-keygen, man ssh-agent).

Let's say your user name is harry, and you have created an dsa key pair and sent us the public key, which we have placed beneath your home directory on modula3.elegosoft.com. You should then be able to execute remote commands on modula3.elegosoft.com, for example display your id: (The example shows the output for user wagner, of course.)

  % ssh modula3.elegosoft.com id
  uid=1105(wagner) gid=1105(wagner) \
  groups=1105(wagner),216(cvs),200(m3),\
  201(cmmagazin),400(cmmag),401(contrib)
    

If this does not work, use the -v option of ssh to locate the failure (and send us the output). You may use -v multiple times to increase the verbosity level.

If everything looks okay, you are ready to access the CVS repository and checkout some files into your workspace. You must set the environment variable CVS_RSH to ssh to instruct CVS to use SSH as the transport mechanism, and you must either use the cvs -d option or set CVSROOT appropriately, for example

  CVS_RSH=ssh
  CVSROOT=:ext:harry@modula3.elegosoft.com:/usr/cvs
  export CVS_RSH CVSROOT
    

Please note that the CVS repository path is /usr/cvs for the CM3 distribution but /usr/cvs/pm3 for the PM3 distribution.

This done you may try something like

  cvs -z3 checkout cm3/scripts
    

which will copy the actual versions of the cm3 scripts into your workspace. The option -z3 sets the compression level to three, which should be reasonable for many connections. If this works as expected, checkout everything you like, i.e. the complete CM3 distribution:

  cd cm3
  cvs -z3 update -dAP
    

If you experience any problems, feel free to ask us if you cannot solve them on your own (after having consulted the copious documentation :-).