CVS = "Concurrent Versions System" ------------------------------------------------------------------------------------ There are three sets of CVS-controlled directories or "Repositories" in CVS lingo. - /cvsroot, which is the main, IPN stuff - /cvsroot_ipsfdb2, which is the National Patent Office (ips) stuff, and - /cvsroot_ipsfd, which is the Domino stuff. Each has their own separate passwd files, in their respective ./CVSROOT directories. ------------------------------------------------------------------------------------ To change your CVS password, logon to reindeer, our CVS server, and ~inst1/cryptout.pl - There are separate passwd files for the different CVS Repositories, - /cvsroot for the normal, IPN stuff - /cvsroot_ipsfdb2 for the National Patent Office (ips) stuff, - /cvsroot_ipsfd for the Domino solution stuff. - Take that string, and replace the encrypted password string in vi /cvsroot/CVSROOT/passwd (or whichever repository is appropriate), with the new encrypted password string. ------------------------------------------------------------------------------------ The jCVS stuff came from http://www.jcvs.org/download.html The CVS stuff came from http://freeware.bull.net/download/aix432/cvs-1.11.0.0.exe ------------------------------------------------------------------------------------ jCVS terms include WorkBench - A logical view of your local projects, containing folders and/or projects. Organize it as you see fit. Folder - A directory, holding other folders (subdirectories) or projects under your WorkBench. Project - A leaf in a folder. Actually a local directory. When you open it, you need to point to the Entries file, e.g. ~/ipn-CVS/patsearch/CVS/Entries. Server - reindeer, which is running the inetd-controlled /usr/local/bin/cvs code (originally downloaded from ). Repository - This is /cvsroot or /cvsroot_ipsfdb2, the directory that the CVSROOT subdirectory is in, and this is what you have to specify when you checkout a "module". However, there is a possibility of confusion. When you view a project, the jCVS screen says the "repository" is full directory path as it exists on the server, e.g. /cvsroot/patsearch or /cvsroot_ipsfdb2/ips/cgi-bin. Module - Directory (or subdirectory) on CVS server, under "CVS Repository". In CVS's sense of the word, a "module" could be multiple files. When checking out a project, CVS Module = ips/cgi-bin, CVS Server = reindeer.delphion.com CVS Repository = /cvsroot_ipsfdb2 (this must be the directory on the server with passwd file) Checkout Directory = /afs/d/u/jasper/ips-CVS Checkout Result = Checkout Directory / CVS Module = /afs/d/u/jasper/ips-CVS/ips/cgi-bin When viewing a project, Repository = /cvsroot_ipsfdb2/ips/cgi-bin Root Directory = /cvsroot_ipsfdb2 Local Directory = /afs/delphion.com/u/jasper/ips-CVS/ips/cgi-bin Host Name = reindeer.delphion.com jCVS verbs include Open (a project) - Point to a local directory containing Entries file, e.g. ~/ipn-CVS/patsearch/CVS/Entries. Opens up a new X window, showing you, not the list of files & subdirectories under that directory, but rather the list of files CVS knows about gleamed from the ~/ipn-CVS/patsearch/CVS/Entries file. The distinction being, if you create a new file or rename files, they don't appear in the list. Checkout (a "module") - Create and refresh from CVS server, all files in given "module" (in CVS's sense of the word). The source is the combination of CVS Server,CVS Repository/CVS Module, e.g. reindeer.delphion.com /cvsroot_ipsfdb2/ips/cgi-bin. The destination is your Checkout Directory/CVS Module, e.g. /afs/d/u/jasper/CVS/ips/cgi-bin. Checkout and update are similar. The idea is initially, you checkout things, then update thereafter. "Checkout" will create directories, "Update" won't. Export (a "module") - Checks out a copy of a module in a form intended for export outside the CVS environment. It produces the same directory and file structure as the "checkout" command, but it doesn't create the "CVS" subdirectories and it removes all the RCS keywords from the files (e.g. $Header$ & $Log$). Import (a "module") - A fast way to insert a whole tree of files into CVS. Create (a "module") - Update (a file or ) - Copy (again) the file from the CVS server to your local disk. (a "module") Won't refresh it if your copy is new. Also, timestamp of file is time the update is done, not time of last change or commit. Checkout and update are similar. The idea is initially, you checkout things, then update thereafter. "Checkout" will create directories, "Update" won't. Commit (a file) - Copy your local version, back to the CVS server, updating the server's master copy. Backup (a file) - Copies (without -p option on cp command) file to file.bk. Backup & Remove (a file) - Copies (with -p option on cp command) local file to file.bk, then removes it from CVS server!! Dangerous. Doesn't commit removal though, so you can "resurrect" it (whew!). ------------------------------------------------------------------------------------ To check out CVS things in jCVS, you - Go to the "Checkout" tab, - Fill out Password (the User Name field should already be filled out), CVS Module = whatever directory is under reindeer's "CVS Repository" directory. CVS Server = reindeer.delphion.com CVS Repository = /cvsroot or /cvsroot_ipsfdb2 Checkout Directory = /afs/d/u/jasper/CVS Examples include CVS | CVS | | Module | Repository | Checkout Directory | Resultant Files Locally ============+==================+=========================+====================================== patsearch | /cvsroot | /afs/d/u/jasper/ipn-CVS | /afs/d/u/jasper/ipn-CVS/patsearch/* ips/cgi-bin | /cvsroot_ipsfdb2 | /afs/d/u/jasper/ips-CVS | /afs/d/u/jasper/ips-CVS/ips/cgi-bin/* ips/htdocs | /cvsroot_ipsfdb2 | /afs/d/u/jasper/ips-CVS | /afs/d/u/jasper/ips-CVS/ips/htdocs/* If you wanted to, you could work with (checkout, update, commit, etc) a smaller piece of the pie. For that last example, you might only be interested in the Net.Data macros. You could specify ips/htdocs/macro/v4 for the "CVS Module" and only work with the things in the /afs/d/u/jasper/ips-CVS/ips/htdocs/macro/v4 directory. ------------------------------------------------------------------------------------ To use the raw CVS commands (now that I have cvs installed in /local/bin), * The syntax of the cvs command is cvs verb or cvs [cvs-options] command [command-options-and-arguments] as their help text has it. Note that there are two different places you could specify options, before or after the verb. It's important to realize this because if you try cvs checkout patsearch for example, you'll get the messages cvs checkout: No CVSROOT specified! Please use the `-d' option cvs [checkout aborted]: or set the CVSROOT environment variable. So you might try cvs checkout patsearch -d :pserver:jasper@reindeer:/cvsroot or cvs checkout -d :pserver:jasper@reindeer:/cvsroot patsearch Both are wrong. The -d option they're referring to is a global CVS option, thus goes in front of the checkout verb like so, cvs -d :pserver:jasper@reindeer:/cvsroot checkout patsearch There's also a -d option in the cvs checkout command options, so you might have a command with two -d options, cvs -d :pserver:jasper@reindeer:/cvsroot checkout patsearch -d ~/put.it.in.this.directory * First, to avoid ugliness in your cvs commands, it's best to first export CVSROOT=:pserver:jasper@reindeer:/cvsroot or export CVSROOT=:pserver:jasper@reindeer:/cvsroot_ipsfdb2 otherwise you'll have ugly commands like cvs -d :pserver:jasper@reindeer:/cvsroot login or cvs -d :pserver:jasper@reindeer:/cvsroot_ipsfdb2 login instead of simply cvs login * Then you need to "login", i.e. authenticate, to CVS, by * First, you need to "login", i.e. authenticate, to CVS, by cvs -d :pserver:jasper@reindeer:/cvsroot login or cvs -d :pserver:jasper@reindeer:/cvsroot_ipsfdb2 login * Subsequent CVS commands also either need this -d option in front of the verb, or better yet, export CVSROOT=:pserver:jasper@reindeer:/cvsroot or export CVSROOT=:pserver:jasper@reindeer:/cvsroot_ipsfdb2 * Then you can login by cvs login * Then you can checkout things, by either cd ips-CVS (A directory I've created to do CVS-related things) cvs checkout ips Creates a ./ips directory and populates it. cvs checkout ips/cgi-bin Creates a ./ips/cgi-bin directory and populates it. or cvs checkout ips/cgi-bin/patsearch or in one command, (the junk directory cannot exist) ?????? cvs checkout -d junk ips/cgi-bin ?????? or cvs checkout -d junk ips/cgi-bin/patsearch ?????? * To add new directories or non-binary files into CVS, cvs add directoryname_OR_filename Then cvs commit directoryname_OR_filename or cvs commit -m"your comment here" directoryname_OR_filename If you don't specify the -m on the command line, you will be put into a vi session where you can compose the comment. * If you're adding a binary file, perhaps an executable, then you need to prevent CVS doing keyword replacing (e.g. $Header$ or $Log$), or attempting to diff two versions, by using -kb after the "add" verb. You also can specify the comment on the cvs add command. I don't know why, but the -m comment appears to get ignored for directories and non-binary files. Perhaps I'm wrong here. cvs add -kb -m"Comment on what this file is" binary_filename ------------------------------------------------------------------------------------ Originally, I had just one ~/CVS directory, but I ran into puzzling problems when working between the IPN & IPS repositories. I had thought that I could keep things straight by switching my CVSROOT environment variable whenever I switched working between one repository and another, but that didn't appear to work well. The CVS directories that exist in the high level ~/CVS directory as well as each subdirectory, seemed to be used in preference to $CVSROOT. Finally, I split ~/CVS up into ~/ips-CVS & ~/ipn-CVS. The files in each CVS directory are -rw-r--r-- 1 jasper staff 48 Jul 20 17:22 Entries -rw-r--r-- 1 jasper staff 9 Jul 20 14:20 Repository -rw-r--r-- 1 jasper staff 47 Jul 20 14:20 Root For the ipn-CVS directory, which when I typed this, contained drwxr-xr-x 2 jasper staff 2048 Jul 20 17:22 CVS -rw-r--r-- 1 jasper staff 296 Jul 20 17:22 README drwxr-xr-x 9 jasper staff 2048 Jul 20 17:23 converters drwxr-xr-x 4 jasper staff 2048 May 09 18:09 intranet drwxr-xr-x 3 jasper staff 2048 Jul 20 13:49 patsearch the Entries file contained D/patsearch//// D/intranet//// D/converters//// one for each real, CVS directory under ~/ipn-CVS. the Repository file contained /cvsroot and the Root file contained :pserver:jasper@reindeer.delphion.com:/cvsroot When I had a combined CVS directory, depending on what the Repository and/or Root files contained, I'd get strange responses to normal cvs commands. For example, if like above, they were pointing to /cvsroot, I couldn't checkout IPS things because /cvsroot_ipsfdb2 things didn't exist in the /cvsroot world. The same thing happened if it was the other way around. ------------------------------------------------------------------------------------ Installing CVS & jCVS on spectre on 7-10-2001, and Setting Up Servaas & Ronald. See Sander's directions at /afs/d/software/base/CVS-1.10.8.0/install.html. For CVS: As jasper on jasper, scp -p ~jasper/cvs-1.11.0.0.exe jasper@spectre: scp -p /afs/d/software/base/CVS-1.10.8.0/zlib-1.1.3.2.exe jasper@spectre: As root on spectre, install cvs & zlib, chmod +x /home/jasper/cvs-1.11.0.0.exe /home/jasper/zlib-1.1.3.2.exe mkdir /tmp/cvs cd /tmp/cvs /home/jasper/cvs-1.11.0.0.exe This inflates cvs-1.11.0.0.bff and cvs-1.11.0.0.bff.asc /home/jasper/zlib-1.1.3.2.exe This inflates zlib-1.1.3.2.bff and zlib-1.1.3.2.bff.asc inutoc . smitty installp This will install freeware.cvs.rte 1.11.0.0 # CVS version control syst and freeware.zlib.rte 1.1.3.2 # Data compression library cd rm -rf /tmp/cvs Add to /etc/services, cvspserver 2501/tcp # CVS To use cvs, export CVSROOT=:pserver:jasper@reindeer.delphion.com:/cvsroot_ipsfdb2 and cvs login = = = = = = = = = = = = = = = = = = = = = = = = = = = = = After adding the servaas & ronald userids, I modified their default .profile by adding export ENV="${HOME}/.kshrc" and appending /usr/local/bin to their PATH, and gave them my .kshrc, to wit, export EDITOR=vi set -o vi export PS1="<$(whoami)@$(hostname -s):"'$PWD> ' # alias c='/usr/bin/clear' The problem with doing it this way is # the aixterm's scrollbar buffer gets lost. # There are 64 \\n's here. alias c='echo \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n;clear' # These are convenient when using CVS from the command line. export CVSROOT=:pserver:$USER@reindeer.delphion.com:/cvsroot_ipsfdb2 export MANPATH=/usr/local/man = = = = = = = = = = = = = = = = = = = = = = = = = = = = = To get jCVS working, As jasper on jasper, scp -p /afs/d/software/base/AIX.4.3.3/Java.swing jasper@spectre scp -p /afs/d/software/base/AIX.4.3.3/Java.rte jasper@spectre scp -p /afs/d/software/base/CVS-1.10.8.0/jcvs-522.tar jasper@spectre: scp -p /local/bin/jcvs jasper@spectre: Then as root on spectre, - Update Java and Install Java Swing, cd /home/jasper inutoc . smitty installp Installed Java.rte.bin 1.1.8.0 # Java Runtime Environment Executables Java.rte.classes 1.1.8.0 # Java Runtime Environment Classes Java.rte.lib 1.1.8.0 # Java Runtime Environment Libraries Java.swing.lib 1.1.8.0 # Swing Libraries It only had the Java.rte 1.1.2.0 installed previously. - Install jcvs, cd /usr/local/lib tar -xvf /home/jasper/jcvs-522.tar This creates a bunch of stuff at /usr/local/lib/jCVS-5.2.2 - Updated my jcvs startup script, cp -p /home/jasper/jcvs /usr/local/bin/jcvs Modified the first line of /usr/local/bin/jcvs, to have to have JCVSPATH=/usr/local/lib/jCVS-5.2.2/jars instead of JCVSPATH=/local/lib/jCVS-5.2.2/jars - To test, enter jcvs and followed Sander' test procedure, Select the "Test" tab in the main window. Click the "Servers..." button. Select Delphion Test Module and click OK. Fill in my password. Click "Perform Test". One of the lines you should see is "I LOVE YOU." = = = = = = = = = = = = = = = = = = = = = = = = = = = = = To set their initial CVS passwords, Logon as root on reindeer, our CVS server, and run ~inst1/cryptout.pl ips0 to get the encrypted password string, se13S4KiLMPog Put these two lines in /cvsroot_ipsfdb2/CVSROOT/passwd servaas:se13S4KiLMPog:cvsuser ronald:se13S4KiLMPog:cvsuser ------------------------------------------------------------------------------------ I use my ~/ipn-CVS and ~/ips-CVS directories for all my CVS checking-out, updating, and checking-in. Here is what is at one of those directories. The CVS directory is a working area for all the CVS source trees, namely - Sander's How-To-Install-CVS notes (intranet), - All the National Patent Office (NPO) or IPSfDB2 stuff (ips), - and the IPN (Southbury) source trees. The ips directory is the National Patent Office source tree, which has the following "projects" (i.e. subdirectories of reindeer's /cvsroot_ipsfdb2/ips), - The bin Project/subdirectory, which includes - patreq - supercp - miscellaneous scripts, e.g. clean_*_cache, importpat. - The cgi-bin Project/subdirectory, which includes - patsearch - viewpat.cmd & download.cmd - local.pl - The fcgi-bin Project/subdirectory, which has - any2html - patquery - The htdocs Project/subdirectory, which has - the home.*.html web pages for our testing, - the en subdirectory that has - the other english web pages for our testing, - the art subdirectory holding all the gif files, - the help subdirectory holding all the help files, - the macro subdirectory which has - the v4 subdirectory, which has all the Net.Data macros. - The following other Projects/subdirectories that are now, all empty. coll, config, db2scripts, include, lib, security. The IPN directory has a bunch of directories, most of which I have not investigated. I do know about patsearch and intranet (Sander's How-To-Install-CVS notes).