.. ****** BEGIN LICENSE BLOCK ***** .. Version: CDDL 1.0 .. .. The contents of this file are subject to the COMMON DEVELOPMENT AND .. DISTRIBUTION LICENSE (CDDL) Version 1.0 (the "License"); you may not use .. this file except in compliance with the License. You may obtain a copy of .. the License at http://www.sun.com/cddl/ .. .. Software distributed under the License is distributed on an "AS IS" basis, .. WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License .. for the specific language governing rights and limitations under the .. License. .. .. The Original Code is .. "netlabs.org Open Source Archive Administrator/Client" .. .. The Original Distribution Package is named .. "netlabs.org Open Source Archive Administrator/Client" .. and maintained and distributed by the Initial Developer .. and/or netlabs.org only. .. .. In addition to the CDDL the following applies: .. If you modify the Original Code, you may distribute it only .. as a part of a distribution package where .. - the name of the package, created directories or .. OS2.INI entries do not contain any of the terms .. - "netlabs.org Open Source Archive" .. - "NOSA" .. - "NOSAC" .. - "NOSAADM" .. - neither netlabs.org nor the Initial Developer is stated as .. the vendor or originator of the resulting Distribution Package, .. which contains the Modified Code. .. .. The Initial Developer of the Original Code is .. netlabs.org: Christian Langanke . .. Portions created by the Initial Developer are Copyright (C) 1999-2008 .. the Initial Developer. All Rights Reserved. .. .. Contributor(s): .. .. ***** END LICENSE BLOCK ***** */ .include nosatitle.inc .ti [=DOCTITLE] .hi 234 .. ############################################################################# .1 [=DOCTITLE] .. ############################################################################# .an IDPNL_MAIN .at font='20.Tms Rmn' fc=darkgray italic bold .bitmap nllogo.bmp center .ce in association with .bitmap teamlogo.bmp center .ce present the .at font='24.Tms Rmn' fc=red bold italic .ce [=DOCTITLE] .at [=TOPICS] .su 1 .. ============================================================================= .2 What is it all about ? .. ============================================================================= .an IDPNL_WHAT . [=TOPICS] .su V30 .. ----------------------------------------------------------------------------- .3 Overview .. ----------------------------------------------------------------------------- .an IDPNL_WHAT_OVERVIEW .bitmap src\bmp\nllogo.bmp center .at font='24.Tms Rmn' fc=red bold .ce [=DOCTITLE] .at Are you an OS/2 or eComStation developer, who uses the *netlabs.org Open Source Archive Client* to access the [=NAME]? Do you want to know, how *netlabs.org* sets up a new archive from a zip archive file with a handful of commands in minutes ? Do you want to host an own software archive ? Have you ever wondered how one could secure such archive even without filesystem security on an OS/2 or eComStation client ? Then use the software, that is used by *netlabs.org* to setup the archives for several OS/2 or ecomStation related internet projects, namely the [=TITLE]. It supports the administrator of the *netlabs.org* server in: .ul compact - creating a new archive - importing existing sources out of a zip file - adding keyword lines to all source files - securing the new archive by protecting it from unwanted write access down to directory level - setting up the *TCP/IP* configuration and especially the *CVS* services - creating backups - creating snapshots of the archive - creating a changelog of the changes being committed to the archive Want more ? Well, just read this online book... .. ----------------------------------------------------------------------------- .3 Concurrent Versions System (CVS) .. ----------------------------------------------------------------------------- .an IDPNL_WHAT_CVS . See the following links in order to learn more about the *Concurrent Versions System* (CVS): .ul compact . - [http://www.cvshome.org *CVS* homepage] - [http://www.loria.fr/~molli/cvs-index.html *CVS* Bubbles] with links to documentation You can download *CVS* for OS/2 and eComStation from: .ul compact - [http://hobbes.nmsu.edu/cgi-bin/h-search?key=cvs The Hobbes OS/2 Archive] or search the nearest FTP server near you via .ul compact - [http://ftpsearch.lycos.com/cgi-bin/search?form=medium&query=cvs*.zip&doit=Search&type=Case+insensitive+glob+search&limpath=os2&sort=hostdist FTP Search] [=NOTE] .ul - If you install CVS after installing the [=TITLE], and you don't intend to add the CVS bin directory to your PATH statement, you can rerun the installation program to let NOSA know where CVS is installed. - *CVS* requires the [.IDPNL_WHAT_EMXRUNTIME]. . . See also - [.IDPNL_HOW_SOLVEOPENFILES] .. ----------------------------------------------------------------------------- .3 Info-Zip .. ----------------------------------------------------------------------------- .an IDPNL_WHAT_INFOZIP .bitmap src\bmp\info-zip.bmp center The [=TITLE] uses the *Zip* and *UnZip* program of *Info-Zip*. [=NOTE] .ul compact - The programs and sources of *Info-Zip* is freely available. On the .sl compact - [http://www.info-zip.org Info-ZIP homepage] .el . follow the links to the download pages and download the latest version for OS/2 and eComStation. . - The filename scheme for the executable packages and source packages differ a littlebit between *Zip* and *UnZip*. . This is a littlebit confusing, so the scheme is listed here for the versions *Zip* V2.20 and *UnZip* V5.40 as an example: .lm 10 .pl compact tsize=20 break=none - zip22x1.zip = Zip 2.2, OS/2 16-bit exes (no encryption) - zip22x2.zip = Zip 2.2, OS/2 32-bit exes (no encryption) - zip22.zip = Zip 2.2, source code - unz540d2.zip = UnZip 5.40, OS/2 DLL (32-bit, C and REXX) - unz540x1.exe = UnZip 5.40, OS/2 self-extr. exes (16-bit) - unz540x2.exe = UnZip 5.40, OS/2 self-extr. exes (32-bit) - unzip540.zip = UnZip 5.40, source code .lm .. ----------------------------------------------------------------------------- .3 EMX Runtime .. ----------------------------------------------------------------------------- .an IDPNL_WHAT_EMXRUNTIME . *EMX* is an environment for creating 32-bit programs for OS/2 and eComStation (and also DOS). Developers can use the GNU C compiler to compile programs for emx. The main design goal of EMX is to support the GNU environment to simplify porting Unix software to OS/2, eComStation and DOS- This has been done with the [.IDPNL_WHAT_CVS], which is a widely used Unix software. As *CVS* is being used by the [=TITLE], the runtime of the *EMX* package is required. You can download the *EMX runtime* for OS/2 from: .ul compact - [http://hobbes.nmsu.edu/cgi-bin/h-search?key=emxrt.zip&dir=%2Fpub%2Fos2%2Fdev%2Femx The Hobbes OS/2 Archive] Download the file *emxrt.zip* from the subdirectory with the highest revision number. See also .ul compact - [.IDPNL_HOW_SOLVEOPENFILES] .. ----------------------------------------------------------------------------- .3 GNU sort .. ----------------------------------------------------------------------------- .an IDPNL_WHAT_GNUSORT . The *GNU* sort program is shipped with [=TITLE] as gsort.bin and gsort.dll, supporting the creation of sorted changelogs. The version used is V1.12, so somewhat outdated, but this version runs perfectly for this task. You can download a current port of the *GNU text utilities* at .sl compact - [http://www2s.biglobe.ne.jp/~vtgf3mpr/index-e.htm FreeSoftWare for OS/2] .. ============================================================================= .2 Prerequisites .. ============================================================================= .an IDPNL_PREREQUISITES . The following prerequisites apply to the current version of the [=TITLE]: .ul - The [=TITLE] runs under OS/2 WARP Version 3 or later with *REXX* installed - Also required is the OS/2 version of the [.IDPNL_WHAT_CVS Concurrent Versions System (CVS)] for to provide access the [=NAME]. - *CVS* in turn requires the [.IDPNL_WHAT_EMXRUNTIME]. - *Zip* and *UnZip* programs of [.IDPNL_WHAT_INFOZIP] are required. - For providing access to the [=NAME], also of course a working internet connection is required. .. ============================================================================= .2 Copyright & Co. .. ============================================================================= .an IDPNL_LEGAL . [=TOPICS] .su V30 .. ----------------------------------------------------------------------------- .3 Common Development and Distribution License (CDDL) .. ----------------------------------------------------------------------------- .an IDPNL_LEGAL_CDDL . [=TITLE] . was written by [.IDPNL_LEGAL_AUTHOR Christian Langanke], [=YEAR] . All rights reserved. You are welcome to send me your comments/suggestions via internet e-mail. Send your e-mail to: *[=EMAIL]* The source code of this package is available under the *Common Development and Distribution License (CDDL)*. See [http://www.sun.com/cddl/] for the full license text of the CCDL, and the following text for further restrictions on distributing modified versions of the [=TITLE]: .fo off Version: CDDL 1.0 The contents of this file are subject to the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.sun.com/cddl/ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is "netlabs.org Open Source Archive Administrator/Client" The Original Distribution Package is named "netlabs.org Open Source Archive Administrator/Client" and maintained and distributed by the Initial Developer and/or netlabs.org only. In addition to the CDDL the following applies: If you modify the Original Code, you may distribute it only as a part of a distribution package where - the name of the package, created directories or OS2.INI entries do not contain any of the terms - "netlabs.org Open Source Archive" - "NOSA" - "NOSAC" - "NOSAADM" - neither netlabs.org nor the Initial Developer is stated as the vendor or originator of the resulting Distribution Package, which contains the Modified Code. The Initial Developer of the Original Code is netlabs.org: Christian Langanke . Portions created by the Initial Developer are Copyright (C) 1999-2008 the Initial Developer. All Rights Reserved. .fo on .. ----------------------------------------------------------------------------- .3 The author .. ----------------------------------------------------------------------------- .an IDPNL_LEGAL_AUTHOR . This program is written by *Christian Langanke*. You can contact the author via internet e-mail. .. Note to translators: Please translate an additional line here: .. Please write either in german or english. Send your e-mail to: *[=EMAIL]* Visit also the homepage of .ul compact - [http://nosa.netlabs.org the *netlabs.org Open Source Archive*] - [http://clanganke.de the author *Christian Langanke*] - [http://www.netlabs.org *netlabs.org*] - [http://www.teamdv.de *Team OS/2 Germany*] and its member associations .. ============================================================================= .2 Installation .. ============================================================================= .an IDPNL_INSTALL . [=TOPICS] .su V30 .. ----------------------------------------------------------------------------- .3 Manual installation .. ----------------------------------------------------------------------------- .an IDPNL_INSTALL_MANINST . The [=ARCHIVE] packages are installed by a *WarpIN* archive: .ul - *[=NAME] [=ADMIN_PROGTYPE]* - *[=NAME] [=CLIENT_PROGTYPE]* The packages are by default installed into separate directories. [=NOTE] .ul compact - Do not install both packages into the same directory, as several scripts have the same name! During installation of the [=NAME] [=ADMIN_PROGTYPE], in a command window the user is prompted for several [.IDPNL_INSTALL_CONFIG configuration values]. .. ----------------------------------------------------------------------------- .3 Configuration .. ----------------------------------------------------------------------------- .an IDPNL_INSTALL_CONFIG . During installation, in a command window you are prompted for the following values. When entering values .ul compact - press *Enter* if the default value in brackets applies - press *Ctrl-Break* and *Enter* to abort - specify a drive to only modify the drive of the value - path values must be specified with a drive letter You also can rerun the installation program *install\install.cmd* in a command window at any time in order to modify any of these values. These are the values, that you are prompted for: .pl tsize=5 bold - hostname for the netlabs.org Open Source Archive server = The hostname of the server, under it is to be adressed via internet. This hostname is being written into [.IDPNL_USAGE_CVSCFG_PUBLICLIST] and/or [.IDPNL_USAGE_CVSCFG_PRIVATELIST], which in turn are being used by the [=NAME] *Client*. - root directory of the netlabs.org Open Source Archive = The directory, where all archive directories, that you use with the [=TITLE], are being created. - root directory for working directories on your computer = The directory, where all working directories, that you use with the [=TITLE], are being created. - root directory for snapshot zipfiles on your computer = The directory, where the snapshot zip files of the source are being created - root directory for backup zip files on your computer = The directory, where the backup zip files of the archive directories are being created - CVS home directory = The (empty) directory, where *CVS* settings are stored - Init Command for project windows (optional) = any command that you want to be executed before [=TITLE] executes any *CVS* operation. This is especially useful when you frequently use *cvsenv* in a [.IDPNL_INSTALL_WPSOBJ_WINDOW archive Window] and/or shells like telnet or SSH, for which you may need to setup a different environment. . . Leave that field empty, if you do not need any init command. - CVS Administrator User Id = your user id, that you want to use with a *CVS* archive on the [=NAME] server. . . [=NOTE] .ul compact - If the environment variable #%USER%# is set, this value is offered as default. - In [.IDPNL_INSTALL_WPSOBJ_WINDOW archive Window] or shells like telnet or SSH, where you call *cvsenv*, the environment variable #%USER%# will be set up with the user id, that you specify here. Keep that in mind, if you have to use different values for #%USER%# within the [=TITLE] and elsewhere. - Directory of CVS installation = This prompt only appears, if the *CVS* executables are not reachable by your *PATH* statement in your *CONFIG.SYS*. Then you can specify the installation directory of *CVS*, this will not modify your *CONFIG.SYS*. In order to use *CVS* then, just call *cvsenv* on the commandline and the [=TITLE] will extend the *PATH* for you, so that you can use *CVS* in that session. After that, to create a WorkplaceShell folder with precustomized program objects in it, execute the following steps: .ol compact - open a *command window* - change into the directory, where the files of the [=TITLE] package resides - run the command .sl compact - *cvswps* This program creates the [=TITLE] [.IDPNL_INSTALL_WPSFOLDER Workplace Shell folder] with several objects in it. .include nosawps.inc .. ----------------------------------------------------------------------------- .3 Installation on remote systems .. ----------------------------------------------------------------------------- .an IDPNL_INSTALL_REMOTE . When installing the *[=NAME] [=ADMIN_PROGTYPE]* on a remote system, using e.g. a telnet or SSH session, the *WarpIN* archive cannot be used for that. Instead, this package can be installed as follows: .ul compact - install the package on a local system - copy the installed directory to the remote system - on the remote system, exexute *install.cmd* within the subdirectory *install* .. ============================================================================= .2 Usage .. ============================================================================= .an IDPNL_USAGE . [=TOPICS] .su V30 .. ----------------------------------------------------------------------------- .3 Using the [=SHORTNAME] security .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_SECURITY . [=WARNING] .ul compact .at fc=red - Read this section carefully, if you allow others to use a *CVS* service on your computer ! . If so, you may want to use the [=TITLE] security feature in order to protect your system from unwanted access and/or modifications !!! .at Within all *CVS* archives on all platforms, or better, with all services, that allow to login on a computer in any way, there is a need to secure the server from unwanted access, that could destroy the system. Under OS/2 and eComStation, this has to be achieved by different methods as under other operating systems. _*Restricting login access to the archive*_ . The first step is to restrict login access to the archive. In case of the [=NAME] the only security issue is, that we do not only need to enable login (and write access) for all developers, but also have a commin "user id - password" combination, that allows everybody in the world to access the archive - but of course only in readonly mode. Otherwise this archive would not be an open one, right ? . The [=TITLE] will support you by initially creating a login account for you as the administrator and for a guest user with the password #readonly#. You will have to add more accounts, when you want to allow others to make modifications to your archive (see below). _*Restricting write access to the complete archive*_ . The second step is to restrict write access to the archive by creating a list of users, who may write to the archive, excluding all users not being in that list from being able to make any modifications to the archive. . The [=TITLE] will support you by initially creating a list with only our user id in it, but you have to customize this list further, when you want to allow others to make modifications to your archive (see below). _*Restricting write access to the archive administrative database (CVSROOT)*_ . The third step is to restrict write access to each directory within the archive, and most important is the *CVSROOT* directory of each archive, as it contains the administration database for it. The files in that directory especially need protection, because by modification of certain of these files, any person, that can modify them, can achive to execute any program on the server. You as the archive administrator should be the only person to have write access to this crucial directory, and, as other restrictions are considered, all users, that you give also write access to this directory, are also considered to be an administrator. In order to implement such access restriction to the *CVSROOT* directory, we could use any mechanism, that restricts access to any directory within the archive, like mentioned in the next section. _*Implementing CVS write access restrictions per directory under OS/2 and eComStation*_ . On platforms with filesystem security, normally the sysadmin would restrict access to these files by applying appropriate filesystem ACLs (detetmining, that only the administrator can write these files). . Currently, the OS/2 WARP client, and eComStation as well, has no filesystem security, so that we need a different approach here. We can instead use a *CVS* feature for this, which was invented to allow the setup of check routines. These are for to check for certain conditions before allowing commit and tag operations, namely the pre-commit and pre-tag checks. . That is exactly what also we will do. [.IDPNL_USAGE_CVSSEC] will check, wether a user may make the desired changes (commit or tag) to files within the archive or not. . The [=TITLE] will support you in setting up this pre-check feature and a list file [.IDPNL_USAGE_WRITEINFO], that contains the information, who may write to which directory. You may have to customize this listfile further, if you want to allow others to make modifications to your archive. _*Implementing CVS tag restrictions for developers*_ . Tags are a good mechanism to document, who has changed which files. Also, after having build a release, it is good practise to tag all files with a release tag name. In order to protect such release tags from being accidentally deleted by developers, only the archive administrator (having write access to *CVSROOT*) can set tags with any name. All other writers are forced to use #personal# tags, that is, they have to preceed the tagname by their userid and underscore, if they want to tag files. _*Setting up the security*_ . If you use the [=TITLE] to secure your *CVS* archives, it makes modifications to some files in *CVSROOT*, setting up access security for each directory already existing in the archive. All directories being created afterwards, inherit their security information fro their parent directory, unless you add such information for such directory manually to the appropriate file containing this information. In order to secure an archive, execute .sl compact - *cvsenv* [[#archive__dirname#]] [.IDPNL_USAGE_SECURE $SECURE] within a shell. See section .sl compact - [.IDPNL_USAGE_CVSSEC_MODIFIEDFILES] in order to find out how your archive is secured. .. ----------------------------------------------------------------------------- .3 Security levels .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_SECURITY_LEVELS . These are the following security levels provided both by *CVS* and the [=TITLE]: .pl tsize=2 - *administrator* . = The administrator is included in .ul compact - the [.IDPNL_USAGE_PASSWD] file for being able to login - this file resides in the archive tree only ! - maintain this file with the [.IDPNL_USAGE_PASSWD_SYNC the userid/password synchronization program] of the [=TITLE] - in the [.IDPNL_USAGE_WRITERS] file, so that the administrator can make changes to files within the archive. - in the [.IDPNL_USAGE_WRITEINFO] in order to determine, within which directories the administrator can change or tag files. The administrator normally is allowed to make modifications within all directories, especcially within the archive administrative database in the *CVSROOT* directory. - *developer* . = The developer is included in .ul compact - the [.IDPNL_USAGE_PASSWD] file for being able to login - this file resides in the archive tree only ! - maintain this file with the [.IDPNL_USAGE_PASSWD_SYNC the userid/password synchronization program] of the [=TITLE] - in the [.IDPNL_USAGE_WRITERS] file, so that the administrator can make changes to files within the archive. - in the [.IDPNL_USAGE_WRITEINFO] in order to determine, within which directories the developer can change ot tag files. Developers may be restricted to change files only within certain directories, this depends on decisions of the project team. At least developers should not be allowed to write the archive administrative database in the *CVSROOT* directory. . . [=NOTE] .ul compact - A developer can only use _personal tags_, that means that a developer has to preceed tag names by his/her userid and underscore. .el - *guest* . = The guest accound is implemented by only adding the appropriate user definition to the [.IDPNL_USAGE_PASSWD] file. With the password #readonly# a guest user can only download sources, but cannot make any modifications to the archive. .. ----------------------------------------------------------------------------- .3 Configuring TCP/IP and CVS service .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_CVSCFG . The [=TITLE] automates the configuration of both *TCP/IP* and the *CVS* service. Simply run the [.IDPNL_USAGE_CONFIG configuration command] and let *cvsenv* do the work for you, namely [.IDPNL_USAGE_CVSCFG_MODIFIEDFILES modifying and/or creating several files]. [=WARNING] .ul compact - .at fc=red You need to use this command, whenever you modify the *Autostart* section within the *TCP/IP* configuration program, because this program will discard any information from #%etc%#*\inetd.lst* about services not coming with the *TCP/IP* software itself! OTHERWISE YOUR CVS SERVICE WILL BE INACTIVE AFTER A REBOOT! .at [=NOTE] .ul compact - After having added new archives or deleted obsolete ones, run this command in order to update the . - [.IDPNL_USAGE_CVSCFG_SERVICEPROG current *CVS* service program] - [.IDPNL_USAGE_CVSCFG_RESFILE the current *CVS* resource file] - [.IDPNL_USAGE_CVSCFG_PUBLICLIST] - [.IDPNL_USAGE_CVSCFG_PRIVATELIST] .. ----------------------------------------------------------------------------- .3 Providing the archive list to clients .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_FTPLIST . In order to give acces to [=NAME] *Clients* to the hosted *CVS* archives, the server must make the file [.IDPNL_USAGE_CVSCFG_PUBLICLIST] available via FTP. For that the following is required: .ul compact - a running FTP server - a FTP user definition with the following properties . .pl italic tsize=5 - userid = nosac - password = getarchiveslist - default FTP login directory = directory containing the file [.IDPNL_USAGE_CVSCFG_PUBLICLIST] . You may want to set the *config* subdirectory of the [=TITLE] installation to the home directory of this FTP user, as this way always the current *archives.lst* file will be available for download, because otherwise you always would have to copy the file to the FTP home directory of the FTP user after updating the [.IDPNL_USAGE_CVSCFG_PUBLICLIST] with the [.IDPNL_USAGE_CONFIG $CONFIG] command. As a drawback, if any archives are restricted to private access though, the file *private.lst*, also generated by the [.IDPNL_USAGE_CONFIG $CONFIG] command, will also be available in that directory and publicly available, and although this does not already grant public access to private archives, you may want to keep even the existance of private archives secret. .. ----------------------------------------------------------------------------- .3 Modified files .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_CVSCFG_MODIFIEDFILES . The following files are created or modified, when you run the [.IDPNL_USAGE_CONFIG configuration command]: .su H50 See also .ul compact - [.IDPNL_USAGE_CVSCFG] .. ............................................................................. .4 The CVS service program .. ............................................................................. .an IDPNL_USAGE_CVSCFG_SERVICEPROG . This program is the so called service program of the [=TITLE]. *cvsenv* rewrites this file each time the [.IDPNL_USAGE_CONFIG $CONFIG] command is being executed. It contains the call to *CVS*, as it normally would reside in [.IDPNL_USAGE_CVSCFG_IP_INETDLST], but with only one dummy --allow-root directive. The --allow-root directives for the hosted archives are instead written to the [.IDPNL_USAGE_CVSCFG_RESFILE CVS resoure file]. This avoids length limitations of the command line interface of OS/2 ad eComStation. Moreover, within this program the current drive is changed to the drive of where all archives reside, so that within the CVSROOT directives no drive letters are required (like normally specified under non-unix platforms). Also the HOME environment variable is set to the value specified within the [.IDPNL_INSTALL_INSTALL], so that the [.IDPNL_USAGE_CVSCFG_RESFILE CVS resoure file] can be found even when the HOME variable is not specified within your *CONFIG.SYS*. Calling a batch file instead of calling *CVS* directly from within the *internet super daemon* (inetd) process has another advatage: stopping the *internet super daemon* does not block the *CVS* port. Due to an unknown reason this sometimes happens, when a service like *CVS* is started once from the *internet super daemon* and then the deamon is stopped. This may block the service and most often a reboot is required to be able to use the service again via inetd. This can easily be avoided by calling a batchfile instead of an executable. .. ............................................................................. .4 The CVS resource file .. ............................................................................. .an IDPNL_USAGE_CVSCFG_RESFILE . This file is called *.cvsrc* and must reside in the home directory, specified by the environment variable HOME. *cvsenv* rewrites this file each time the [.IDPNL_USAGE_CONFIG $CONFIG] command is being executed. It contains the CVS commandline containing --allow-root directives for all hosted archives to this file. This avoids length limitations of the command line interface when specifying a lot of --allow-root directives on the command line. [=NOTE] .ul compact .at fc=red - the file #%home%#\*.cvsrc* is completely rewitten, so all changes made manually to it are lost! .at .. ............................................................................. .4 %ETC%\services .. ............................................................................. .an IDPNL_USAGE_CVSCFG_IP_SERVICES . The file #%etc%#*\services* file contains the numbers and symbolic names of *TCP/IP*. If the *CVS* port with the number 2401 is not already included, *cvsenv* will add it by using the symbolic name *cvspserver*. .. ............................................................................. .4 %ETC%\inetd.lst .. ............................................................................. .an IDPNL_USAGE_CVSCFG_IP_INETDLST . The file #%etc%#*\inetd.lst* contains the *TCP/IP* services, that are autostarted by the *internet super daemon* (inetd). If *CVS* is not already included here, *cvsenv* will add a call to the [.IDPNL_USAGE_CVSCFG_SERVICEPROG CVS service program] of the [=TITLE]. This is especially important, because after each use of the *TCP/IP* configuration program, where you save the configuration data, this file is completely overwritten and all entries, that are not known to the *TCP/IP* configuration program (like CVS) are deleted. In these cases, just run the [.IDPNL_USAGE_CONFIG $CONFIG] command again. [=NOTE] .ul compact - *cvsenv* will use the service name, that is specified within #%etc%#*\services*. If you have added a different name than *cvspserver* to #%etc%#*\services*, *cvsenv* will use your symbolic name when adding *CVS* to #%etc%#*\inetd.lst*. - Instead of adding a line, that calls *CVS* directly, *cvsenv* will write a line calling the [.IDPNL_USAGE_CVSCFG_SERVICEPROG CVS service program], which in turn calls *CVS*. .. ............................................................................. .4 TCPSTART.CMD .. ............................................................................. .an IDPNL_USAGE_CVSCFG_IP_TCPSTARTCMD . This file resides in the *bin* subdirectory of your *TCP/IP* installation and contains the calls that autostart activated *TCP/IP* services during system startup. For runnig a *CVS* service with [=TITLE], the *internet super daemon* (inetd) is required. If inetd is configured not to be autostarted, the appropriate lines normally are already present, but are preceeded by REM commands. If this is the case, *cvsenv* simply removes these REM commands and thus activates the autostart feature. [=NOTE] .ul compact - You need to restart *TCP/IP* in order to activate the changes by executing the following command within an command window or fullscreen: .sl compact - *tcpstart* - If an instance of the *internet super daemon* (inetd) is already running, you will have to close this session first, before you run the *tcpstart* command. Otherwise, the new instance of inetd cannot properly be started and the *CVS* service will be unavailable. .. ............................................................................. .4 archives.lst .. ............................................................................. .an IDPNL_USAGE_CVSCFG_PUBLICLIST . When you run the [.IDPNL_USAGE_CONFIG configuration command] after having setup some archives, *cvsenv* will create this file in the [.IDPNL_USAGE_GOTONOSAADM program directory] of the [=TITLE]. This file will only enlist the public archives (not containing *CVSROOT\readinfo*). Private archives are enlisted in [.IDPNL_USAGE_CVSCFG_PRIVATELIST]. [=NOTE] .ul compact - This file must be [.IDPNL_USAGE_FTPLIST made available for FTP access] to [=NAME] *Clients*. .. ............................................................................. .4 private.lst .. ............................................................................. .an IDPNL_USAGE_CVSCFG_PRIVATELIST . When you run the [.IDPNL_USAGE_CONFIG configuration command] and at least one of the archives is *private* (containing *CVSROOT\readinfo*), *cvsenv* will create this file in the [.IDPNL_USAGE_GOTONOSAADM program directory] of the [=TITLE]. Public archives are enlisted in [.IDPNL_USAGE_CVSCFG_PUBLICLIST]. [=NOTE] .ul compact - This file is normally not made available for FTP access to [=NAME] *Clients* like the file [.IDPNL_USAGE_CVSCFG_PUBLICLIST]. Instead, you may want to send the file *private.lst* or parts of it via email to special users, who have access to private archives. The users must make the contents of this file available within in the [=NAME] *Client* program directory also in a file named *private.lst*. For that they must use the [=NAME] *Client* V1.06 or better, as older versions ignore this file. .. ----------------------------------------------------------------------------- .3 The userid/password synchronization program .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_PASSWD_SYNC . Users should be able to use the same userid/password combination for all of the archives being hosted by the [=NAME] server. This can only be achieved by keeping the [.IDPNL_USAGE_PASSWD] files in the archive trees of all archives equal. Normally, you would maintain all these files separately with cvspw.exe of the [.IDPNL_WHAT_CVS CVS package], or would have to copy one of the *[=.IDPNL_USAGE_PASSWD]* files to the archive trees of all archives manually. Instead the [=TITLE] comes with the password utility *nosapw.cmd*, which accepts all valid parameters of cvspw.exe, but extends it in the following ways: .ul compact - *nosapw* maintains only one passwd file, namely one in the [=TITLE] program directory. If this changes during a *nosapw* operation, it is automatically distributed to the CVSROOT directory in the archive tree of all archives, thus keeping all user/password conbinations of all archives in sync. - a new option *-query* allows to query, wether a user is already being defined in the *passwd* file in the [=TITLE] program directory. [=NOTE] .ul compact - execute *nosapw* without parameters to get a brief online help .. ----------------------------------------------------------------------------- .3 The security program .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_CVSSEC . The security program of the [=TITLE] will check, wether a commit or tag operation is allowed for the user performing it. [=NOTE] .ul compact - This program is to be called by the *CVS* service only and automatically activated, when you [.IDPNL_USAGE_SECURE secure] an archive. By doing this, [.IDPNL_USAGE_CVSSEC_MODIFIEDFILES several files are beind modified] within the archive, wich in turn activates the automatic useage of the security program. - It requires, that the file [.IDPNL_USAGE_WRITEINFO] is properly customized, as this holds the access information per directory within the archive. Directories not heing exlicitely listed in *writeinfo* inherit their security information from their parent directory. - It writes the file [.IDPNL_USAGE_WRITEINFOLOG] on the server, where each successful and unsuccessful pre-commit and pre-tag check is recorded. .. ----------------------------------------------------------------------------- .3 Modified files .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_CVSSEC_MODIFIEDFILES . The following files are created or modified, when you [.IDPNL_USAGE_SECURE secure] an archive: .su H50 See also .ul compact - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ............................................................................. .4 CVSROOT\passwd .. ............................................................................. .an IDPNL_USAGE_PASSWD . This file contains both userids and encrypted password for each user, that may login to the archive. It does not exist in a working directory tree, instead it has to be placed into the archive directory tree of an archive, where *CVSROOT* holds the archive administrative database of an archive. If you [.IDPNL_USAGE_SECURITY secure] your archive with the [=TITLE] security feature, it will initially create this file with two accounts: .ul compact - the account for the administrator. You are prompted twice for a password, that is being used here. - a guest account with the password #readonly# [=NOTE] .ul compact - Unlike all other files in the *CVSROOT* directory, you cannot modify this file remotely, but only directly on the server, as this file is not to be added to the archive! - Execute *nosapw* without parameters to get help for how to customize the *[=.IDPNL_USAGE_PASSWD]* file for all archives at once. See also .ul compact - [.IDPNL_USAGE_WRITERS] - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ............................................................................. .4 CVSROOT\writers .. ............................................................................. .an IDPNL_USAGE_WRITERS . This file contains the user ids of all, who may write to the archive. If you [.IDPNL_USAGE_SECURITY secure] your archive with the [=TITLE] security feature, it will initially create this file only with your user id in it. [=NOTE] .ul compact - If you want to allow more users to make modifications, you have to add their user ids to this file (one per line). Do not include a password here, you have to customize the login account in [.IDPNL_USAGE_PASSWD]. - You must always modify this file by checking in a modified version, otherwise it is overwritten the next time, that *CVS* rebuilds the administrative database by checking out the *CVSROOT* directory on the server. See also .ul compact - [.IDPNL_USAGE_PASSWD] - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ............................................................................. .4 CVSROOT\checkoutlist .. ............................................................................. .an IDPNL_USAGE_CHECKOUTLIST . This file contains the names of the files, that are added to the standard file list of the administrative database in the *CVSROOT* directory. As we are adding a new file to this database, we will have to extend this file. Whenever one commits changes to files in the *CVSROOT* directory, *CVS* needs to checkout the changed files also on the server to make them available for the server process. For this, *CVS* needs to know from *[=.IDPNL_USAGE_CHECKOUTLIST]*, what files beside the standard files need this treatment, too. If you [.IDPNL_USAGE_SECURITY secure] your archive with the [=TITLE] security feature, it will add the file [.IDPNL_USAGE_WRITEINFO] to this file to make sure, that this file is available for the [.IDPNL_USAGE_CVSSEC security program] on the server. [=NOTE] .ul compact - You will not have to modify that file further, unless you plan to add more files to the administrative database. See also .ul compact - [.IDPNL_USAGE_WRITEINFO] - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ............................................................................. .4 CVSROOT\commitinfo .. ............................................................................. .an IDPNL_USAGE_COMMITINFO . This file contains the names of the filter programs, that are to be executed before a commit operation is allowed within the archive. If you [.IDPNL_USAGE_SECURITY secure] your archive with the [=TITLE] security feature, it will add the [.IDPNL_USAGE_CVSSEC security program] to this file, making sure that this program is called before allowing commit operations within the archive. [=NOTE] .ul compact - You will not have to modify that file further, unless you want to add more filter programs for pre-commit checks. See also .ul compact - [.IDPNL_USAGE_WRITEINFO] - [.IDPNL_USAGE_CVSSEC] - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ............................................................................. .4 CVSROOT\taginfo .. ............................................................................. .an IDPNL_USAGE_TAGINFO . This file contains the names of the filter programs, that are to be executed before a tag operation is allowed within the archive. If you [.IDPNL_USAGE_SECURITY secure] your archive with the [=TITLE] security feature, it will add the [.IDPNL_USAGE_CVSSEC security program] to this file, making sure that this program is called before allowing tag operations within the archive. More, only the archive administrator (having write access to *CVSROOT*) can set tags with any name. All other writers are forced to preceed the tagname by their userid and underscore, if they want to tag files. [=NOTE] .ul compact - You will not have to modify that file further, unless you want to add more filter programs for pre-tag checks. See also .ul compact - [.IDPNL_USAGE_WRITEINFO] - [.IDPNL_USAGE_CVSSEC] - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ............................................................................. .4 CVSROOT\writeinfo .. ............................................................................. .an IDPNL_USAGE_WRITEINFO . This file is created by the [=TITLE], when you secure your archive. It extends the archive administrative database in the *CVSROOT* directory and is used by the by the [.IDPNL_USAGE_CVSSEC security program] on the server side. Both parts together implement access restrictions to each directory within an archive by using the pre-commit check and pre-tag check feature of *CVS*. One line is required for each archive directory in this file, for that you want to set up access restrictions. Directories, that are not exlicitely listed in *writeinfo*, possibly because they are being created later, inherit their security information from their parent directory, as long as the administrator does not manually add a line to *writeinfo* for such directory. . As a minimum only a line for the rootdirectory (*/*) is required, although it is highly recomended to have at least also a line for the */CVSROOT* directory included in order to protect the administrative database of the archive from unwanted write access. Each line contains the following: .ul compact - the pathname of the directory relative to #%CVSROOT%# (no blanks allowed in directorynames !!!) - a list of the ids of those users, that may perform commit and tag operation within that directory. If the id list contains a "**", all users, that may write to the archive, may also write to that directory. If you [.IDPNL_USAGE_SECURITY secure] your archive with the [=TITLE] security feature: .ul compact - it will initially create this file with all directories currently existing in the archive and allowing all writers to access all directories except for *CVSROOT*, which is allowed to write only for you as the administrator. [=NOTE] .ul compact - all users having write access to *CVSROOT* are considered to be archive administrators. They can set tags with any name, while all other other writers are forced to preceed the tagname by their userid and underscore, if they want to tag files. See also .ul compact - [.IDPNL_USAGE_COMMITINFO] - [.IDPNL_USAGE_TAGINFO] - [.IDPNL_USAGE_CHECKOUTLIST] - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ............................................................................. .4 CVSROOT\writeinfo.log .. ............................................................................. .an IDPNL_USAGE_WRITEINFOLOG . This file is written on the server side, and it contains one line for each pre-commit and pre-tag check, that has been processed by the [.IDPNL_USAGE_CVSSEC security program]. [=NOTE] .ul compact - You can deactivate logging by simply deleting or renaming this file and reactivate it by recreating it or renaming it back. See also .ul compact - [.IDPNL_USAGE_WRITEINFO] - [.IDPNL_USAGE_CVSSEC] - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ----------------------------------------------------------------------------- .3 Using the administrator package on the commandline .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_COMMANDLINE . As the administrator package has to run on the machine, where the [=NAME] resides, you mostly will use the programs of the [=TITLE] through a telnet or shell and cannot make use of Workplace Shell folders and objects. Therefore you will have to know, how you can perform all actions via commandline. All actions are performed by calling the program *cvsenv* with .ul compact - the name of an archive directory and - optionally an action to be taken onto the archive. [=TOPICS] .su H50 .. ............................................................................. .4 Setup the CVS environment .. ............................................................................. .an IDPNL_USAGE_SETUPCMD . Execute .sl compact - *cvsenv* #archive__dirname# within a shell in order to setup the environment variables for access to the specified *CVS* archive and to change to the working directory of the project. [=NOTE] .ul compact - the specified archive must exist - By specifiying different archive names on consecutive calls, you can switch between archives. This applies to all *cvsenv* commands, no matter what action you also specify. .. ............................................................................. .4 Initialize a new archive .. ............................................................................. .an IDPNL_USAGE_INIT . Execute .sl compact - *cvsenv* #archive__dirname# *$INIT* within a shell in order to initialize a new *CVS* archive. During initialization, you are prompted for an archive comment. This comment is being stored in the file *CVSROOT\projectinfo* in the archive directory and not checked in, so it cannot be checked out into a working directory. This comment is being written into [.IDPNL_USAGE_CVSCFG_PUBLICLIST], when you run the [.IDPNL_USAGE_CONFIG configuration command]. This file in turn is being used by the [=NAME] *Client*, displaying this comment in folder title names. You can modify this comment at every time using the [.IDPNL_USAGE_COMMENT comment command]. [=NOTE] .ul compact .at fc=red - With the current version of the [=TITLE], the name of an archive directory *MAY NOT CONTAIN BLANKS* !!! - The name of the base directory of an archive may not start with a *!* or *?*. .at - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. - if the archive directory already exists, cvsenv skips the initialization of the archive in order to prevent any data loss. - After initialization, the archive is in an empty, unsecured and public state. .. ............................................................................. .4 Reinitialize an existing archive .. ............................................................................. .an IDPNL_USAGE_REINIT . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$REINIT* within a shell in order to reinitialize an existing *CVS* archive to an empty state and unsecured state. [=WARNING] .ul compact - .at fc=red This call deletes the contents of the specified archive ! All files in both the archive and the working directory are completely deleted, so all versions of all files are lost. .at - After deletion, the archive is initialized again to an empty and unsecured state. Execute the [.IDPNL_USAGE_SECURE $SECURE] command to secure the newly initialized archive again. [=NOTE] .ul compact - The specification of #archive__dirname# is optional, if you have already setup the environment with *cvsenv* #archive__dirname# in that shell before. - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. .. ............................................................................. .4 Edit an archive comment .. ............................................................................. .an IDPNL_USAGE_COMMENT . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$COMMENT* [[#comment#]] within a shell in order to set the comment for an archive. If you do not specify a comment text with this command, you are prompted for one. This comment is being stored in the file *CVSROOT\projectinfo* in the archive directory and not checked in, so it cannot be checked out into a working directory. This comment is being written into [.IDPNL_USAGE_CVSCFG_PUBLICLIST], when you run the [.IDPNL_USAGE_CONFIG configuration command]. This file in turn is being used by the [=NAME] *Client*, displaying this comment in folder title names. You can modify this comment at every time using the [.IDPNL_USAGE_COMMENT comment command]. [=NOTE] .ul compact - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. .. ............................................................................. .4 Restrict a public archive to private access .. ............................................................................. .an IDPNL_USAGE_PRIVATE . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$PRIVATE* within a shell in order to restrict an archive to private access. This is being achieved by adding the file *CVSROOT\readinfo* to the archive. [=NOTE] .ul compact - If the achive has not been private yet, first of all, your (the admins) user id is being added to this file. So after running this command for the first time for an archive, you as the administrator are the only one who can read from this archive. All other users currently being defined in the passwd file in the [=TITLE] program directory, are also added, but with a preceeding semicolon, thus inactivating these entries. Just remove the semicolon from a line to let a project member read from the archive, and commit the change. After that you have to execute [.IDPNL_USAGE_PASSWD_SYNC nosapw -d] to apply the changes to the password files (of all archives, but especially to this private one). - If an archive has once been restricted to private access, but then been opened for public access, executing the *$PRIVATE* command just restores the old *CVSROOT\readinfo* file. - In order to open a restricted archive for public access again, execute the [.IDPNL_USAGE_PUBLIC $PUBLIC] command. - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. .. ............................................................................. .4 Open a private archive to public access .. ............................................................................. .an IDPNL_USAGE_PUBLIC . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$PUBLIC* within a shell in order to open a private archive to public access. This is being achieved by making the file *CVSROOT\readinfo* as removed from the archive. In fact, it is not deleted and can easily be restored by executing the [.IDPNL_USAGE_PRIVATE $PRIVATE] command. [=NOTE] .ul compact - In order to restrict an archive to private access again, execute the [.IDPNL_USAGE_PRIVATE $PRIVATE] command. - The file *CVSROOT\readinfo* can only be edited/changed within the archive only when it is not marked as removed, thus only when the archive is restricted to private access. - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. .. ............................................................................. .4 Import zip files with source .. ............................................................................. .an IDPNL_USAGE_IMPORT . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$IMPORT* within a shell in order to import sources from a source zip file. [=NOTE] .ul compact - The specification of #archive__dirname# is optional, if you have already setup the environment with *cvsenv* #archive__dirname# in that shell before. - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. - The working directory has to be completely empty for this, otherwise *cvsenv* will abort the import. *cvsenv* needs an empty directory, but will not delete any files within it itself, because uncommitted data changes may be destroyed. - If you are sure, that you have committed all changes (if any) to the *CVS* archive, you can use the "[.IDPNL_USAGE_CLEARWORK]" feature of *cvsenv* before performing an import again. .. ............................................................................. .4 Secure archive .. ............................................................................. .an IDPNL_USAGE_SECURE . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$SECURE* within a shell in order to add commit and tag security to the archive. If you use an archive only for use on your own computer and will not allow others to access it, you may not need to secure this archive. See section .sl compact - [.IDPNL_USAGE_CVSSEC_MODIFIEDFILES] in order to find out how your archive is secured. [=NOTE] .ul compact - .at fc=red Read the VERY IMPORTANT section [.IDPNL_USAGE_SECURITY], if you allow others to use a *CVS* service on your computer ! .at - The specification of #archive__dirname# is optional, if you have already setup the environment with *cvsenv* #archive__dirname# in that shell before. - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. - several files are changed for to add security. For all changes *cvsenv* checks, wether the change has already been applied to the archive, and if so, does not perform it again. See also .ul compact - [.IDPNL_USAGE_CVSSEC_MODIFIEDFILES] .. ............................................................................. .4 Create snapshot .. ............................................................................. .an IDPNL_USAGE_SNAPSHOT . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$SNAPSHOT* #[tagname]# within a shell in order to create a snaptshot zip file. You can specify a tag name in order to create a snapshot of a certain build. [=NOTE] .ul compact - The specification of #archive__dirname# is optional, if you have already setup the environment with *cvsenv* #archive__dirname# in that shell before. - If you specify a tagname, only these files are included in the snapshot zip file, that have this tagname. All other files are ignored. - The zip file is created in the subdirectory ## of the *root directory for snapshot zipfiles*, that you specified within the [.IDPNL_INSTALL_INSTALL]. - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. - The filename of the zip file consists of the ## and a timestamp. - The complete pathname of the zip file is as follows : . .sl - (CVS__SNAPSHOTROOT)\\__yyyymmdd.zip .el . where .ul compact - is the name of the archive directory - yyyymmdd represents the current date .el . Example: .ul compact - d:\netlabs.snap\odin32\odin32__19990515.zip .. ............................................................................. .4 Create backup .. ............................................................................. .an IDPNL_USAGE_BACKUP . Execute .sl compact - *cvsenv* [#archive_dirname|**#] *$BACKUP* within a shell in order to create a backup zip file of the archive. [=NOTE] .ul compact - The specification of #archive__dirname# is optional, if you have already setup the environment with *cvsenv* #archive__dirname# in that shell before. - Specifiying a '**' as archiv name backups all archives on the server. .at fc=red IMPORTANT: This is no wildcard function, so that names like *test*** are *not* possible. .at - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. - The zip file is created in the subdirectory ## of the *root directory for backup zipfiles*, that you specified within the [.IDPNL_INSTALL_INSTALL]. - The filename of the zip file consists of a timestamp. - The complete pathname of the zip file is as follows : . .sl - (CVS__BACKUPROOT)\\yyyymmddhhmmss.zip .el . where .ul compact - is the name of the archive directory - yyyymmddhhmmss represents the current date and time of the backup .el . Example: . .ul compact - d:\netlabs.bak\odin32\19990515172509.zip .. ............................................................................. .4 List current archives .. ............................................................................. .an IDPNL_USAGE_LISTARCHIVES . Execute .sl compact - *cvsenv* *$LIST* within a shell in order to display a list of all currently defined archives. For each archive a status is being displayed, wether this archive is public (e.g. all have read access) or it is private (read access restricted by a readers list). [=NOTE] .ul compact - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. .. ............................................................................. .4 Clear working directory .. ............................................................................. .an IDPNL_USAGE_CLEARWORK . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$CLEARWORK* within a shell in order to clear a working directory for an existing *CVS* archive. Before deleting all directories, the working directory is being checked for uncommitted changes. If such are found, the user is prompted for an additional confirmation. [=NOTE] .ul compact - The specification of #archive__dirname# is optional, if you have already setup the environment with *cvsenv* #archive__dirname# in that shell before. - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. .. ............................................................................. .4 Delete archive .. ............................................................................. .an IDPNL_USAGE_DELETE . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$DELETE* within a shell in order to delete the archive, working, snapshot and backup directory for an existing *CVS* archive. Before deleting all directories, the working directory is being checked for uncommitted changes. If such are found, the user is prompted for an additional confirmation. [=NOTE] .ul compact - The specification of #archive__dirname# is optional, if you have already setup the environment with *cvsenv* #archive__dirname# in that shell before. - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. .. ............................................................................. .4 Generate a changelog .. ............................................................................. .an IDPNL_USAGE_GENLOG . Execute .sl compact - *cvsenv* [[#archive__dirname#]] *$GENLOG* #[[outputfile]]# within a shell in order to create or to continue a changelog for an existing *CVS* archive. [=NOTE] .ul compact - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. - The default output file is #changelog.txt# in the current directory. - .at fc=red The filename for the output file may not contain blanks. .at - Do not modify the first lines of the output file, because they are read the next time in order to determine the time range for the *cvs log* command. - The working directory is updated to the current contents of the archive. This is required in order to get a correct output from the *cvs log* command. - Configure the full names of the archive writers in the [.IDPNL_USAGE_FULLNAMES the fullnames list file], otherwise only the userids are included in the changelog. See also .ul compact - [.IDPNL_USAGE_CHANGELOG] - [.IDPNL_USAGE_FULLNAMES] - [.IDPNL_USAGE_FULLNAMES_SAMPLE] .. ............................................................................. .4 Configure CVS service .. ............................................................................. .an IDPNL_USAGE_CONFIG . Execute .sl compact - *cvsenv* *$CONFIG* within a shell in order to modify your *TCP/IP* configuration to support and autostart the *CVS* service. [=WARNING] .ul compact - .at fc=red You need to use this command, whenever you modify the *Autostart* section within the *TCP/IP* configuration program, because this program will discard any information from #%etc%#*\inetd.lst* about services not coming with the *TCP/IP* software itself ! OTHERWISE YOUR CVS SERVICE WILL BE INACTIVE ! .at [=NOTE] .ul compact - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. - After having added new archives or deleted obsolete ones, run this command update the current *CVS* service program. See also .ul compact - [.IDPNL_USAGE_CVSCFG] - [.IDPNL_USAGE_CVSCFG_MODIFIEDFILES] .. ............................................................................. .4 Pause CVS service .. ............................................................................. .an IDPNL_USAGE_PAUSE . Execute .sl compact - *cvsenv* *$PAUSE* within a shell in order to pause the *CVS* service. A flagfile named *.cvsstop* is being written to the installation directory of the [=TITLE], which is being checked by the [.IDPNL_USAGE_CVSSEC the security program]. [=NOTE] .ul compact - While the flagfile exists, all remote requests to the *CVS* archives hosted by [=TITLE] will be denied. .. ............................................................................. .4 Resume CVS service .. ............................................................................. .an IDPNL_USAGE_RESUME . Execute .sl compact - *cvsenv* *$RESUME* within a shell in order to resume the *CVS* service. This deletes the flagfile *.cvsstop* within the installation directory of the [=TITLE], which is being checked by the [.IDPNL_USAGE_CVSSEC the security program]. [=NOTE] .ul compact - While the flagfile exists, all remote requests to the *CVS* archives hosted by [=TITLE] will be denied. .. ............................................................................. .4 Change to the working directory of an archive .. ............................................................................. .an IDPNL_USAGE_GOTOWORK . Execute .sl compact - *cvsenv* *$WORK* within a shell in order to change to the root of the working directory of the current archive. This is identical with executing .sl compact - *cvsenv* #archive__dirname# with the name of the current archive. [=NOTE] .ul compact - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. See also .ul compact - [.IDPNL_USAGE_GOTOARCHIVE] - [.IDPNL_USAGE_GOTONOSAADM] .. ............................................................................. .4 Change to the tree root of an archive .. ............................................................................. .an IDPNL_USAGE_GOTOARCHIVE . Execute .sl compact - *cvsenv* *$ARCHIVE* within a shell in order to change to the root of an archive directory tree of the current project archive. There you might want to check the files in the archive administrative database in the directory CVSROOT, for example the passwd file. [=NOTE] .ul compact - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. See also .ul compact - [.IDPNL_USAGE_GOTOWORK] - [.IDPNL_USAGE_GOTONOSAADM] - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] .. ............................................................................. .4 Change to the [=ADMIN_SHORTNAME] program directory .. ............................................................................. .an IDPNL_USAGE_GOTONOSAADM . Execute .sl compact - *cvsenv* *$BIN* within a shell in order to change to the program directory of the [=TITLE]. There you want might to check the current *CVS* service program, which is to be updated by the [.IDPNL_USAGE_CONFIG config command] of *cvsenv*, or the fullnames list file, which is being used to generate [.IDPNL_USAGE_CHANGELOG a changelog]. [=NOTE] .ul compact - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. See also .ul compact - [.IDPNL_USAGE_GOTOWORK] - [.IDPNL_USAGE_GOTOARCHIVE] .. ............................................................................. .4 Edit System or [=ADMIN_SHORTNAME] related configuration files .. ............................................................................. .an IDPNL_USAGE_EDIT . Execute .sl compact - *cvsenv* *$EDIT* #type# to quickly load a system or [=SHORTNAME] configuration file into the editor. This saves you from chasing these files all the while, when analyzing problems with a *CVS* archive. Specify one of the following types: .pl compact bold - Rc = loads the file %HOME%\.cvsrc . This file contains the *CVS* configuration values. - Service = loads the file *cvsservice.cmd* from the config directory of the [=TITLE]. . This file contains all the project definitions currently served by the CVS service. - Archivelist = loads the file *archives.lst* from the config directory of the [=TITLE]. . This file contans all public archives being served by the CVS service. - Privatelist = loads the file *private.lst* from the config directory of the [=TITLE]. . This file contans all private archives being served by the CVS service. [=NOTE] .ul compact - You can abbreviate the command name. It depends on the command, how many letters are required for this command. Execute .sl compact - *cvsenv /?* .el in order to get more information on the command names and the valid abbreviations. .. ----------------------------------------------------------------------------- .3 Generating a changelog .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_CHANGELOG . The [=TITLE] can [.IDPNL_USAGE_GENLOG create a changelog] out of the *cvs log* output. This is done for all files within the archive either from the begin or the archive or from the last point of time, when the changelog file has been written, up to the current point of time. Every time, when an existing changelog file is extended, the new entries are prepended to the beginning of the old file. This way you can automatically extend an existing changelog continuously by any scheduler. Configure the full names of the archive writers in the [.IDPNL_USAGE_FULLNAMES the fullnames list file], so that not only the userids appear in the changelog. See also .ul compact - [.IDPNL_USAGE_GENLOG] - [.IDPNL_USAGE_FULLNAMES] - [.IDPNL_USAGE_FULLNAMES_SAMPLE] .su H50 nolist .. ............................................................................. .4 The fullnames list file .. ............................................................................. .an IDPNL_USAGE_FULLNAMES . The [=TITLE] can only determine the userids of the writers out of the *CVS* log output. If you want to have the full usernames (plus the email adresses) within the changelog instead, add this information to the file #fullnames.lst# in the *config* subdirectory of the [=TITLE] installation. Each line of the file contains: .ul compact - the userid - the fullname (in whatever format you like, e.g. with email address) [=NOTE] .ul compact - If a userid is not contained in this file, the plain userid is used within the changelog instead of the fullname. - You can find a sample #fullnames.lst# file in the #samples# subdirectory within the [=TITLE] program directory. Use the [.IDPNL_USAGE_GOTONOSAADM $BIN command of cvsenv] in order to quickly change to this directory. - all spaces between the userid and the fullname are discarded, so that you can start all fullnames in the same column. See the sample fullnames list file .ul compact - [.IDPNL_USAGE_FULLNAMES_SAMPLE] .. ............................................................................. .4 samples\fullnames.lst .. ............................................................................. .an IDPNL_USAGE_FULLNAMES_SAMPLE . This is the sample fullnames list file: .fo off .im samples\fullnames.lst .fo on .. ----------------------------------------------------------------------------- .3 Using the administrator package locally with WPS .. ----------------------------------------------------------------------------- .an IDPNL_USAGE_WPS . While you mostly will access a *CVS* server via telnet and therefore cannot access the admin package via Workplace Shell folders and objects, you may test the admin package also on a machine, that you have local access to. There you can use the [.IDPNL_INSTALL_WPSFOLDER] for some operation as well. Select one of the following topics: .su H50 .. ............................................................................. .4 Refresh the administrator folder .. ............................................................................. .an IDPNL_USAGE_REFRESHFOLDER . In order to refresh the [.IDPNL_INSTALL_WPSFOLDER] after having created or deleted an archive, perform the following steps: .ul compact - open the [=TITLE] folder - execute the icon - *[.IDPNL_INSTALL_WPSOBJ_REFRESH]* See also .ul compact - [.IDPNL_INSTALL_WPSOBJ_CREATENEW] .. ............................................................................. .4 Create new project archive .. ............................................................................. .an IDPNL_USAGE_CREATENEW . In order to create a new archive, perform the following steps: .ul compact - open the [=TITLE] folder - execute the icon - *[.IDPNL_INSTALL_WPSOBJ_CREATENEW]* - specify the name of the archive directory (not the archive name, which may be different !). [=WARNING] .ul compact .at fc=red - With the current version of the [=TITLE], the name of an archive directory *MAY NOT CONTAIN BLANKS* !!! - The name of the base directory of an archive may not start with a *!* or *?*. .at See also .ul compact - [.IDPNL_INSTALL_WPSOBJ_REFRESH] .. ============================================================================= .2 How can I ... ? .. ============================================================================= .an IDPNL_HOW . [=TOPICS] .su V30 .. ----------------------------------------------------------------------------- .3 How can I solve the 'Too many open files' problem ? .. ----------------------------------------------------------------------------- .an IDPNL_HOW_SOLVEOPENFILES . If *CVS* displays the message "To many open files", you must increase the default file handle limit of the [.IDPNL_WHAT_EMXRUNTIME]. In order to do so, add the following environment variable to your CONFIG.SYS: .sl compact - *SET EMXOPT=-c -n -h1024* where .pl compact tsize=10 break=none bold - -c = disables core dumps caused by signals and exceptions (they are only really useful if you use debug versions of a software). - -n = Suppress popups for exceptions. As emx.dll displays an appropriate error message, popups are not required. - -h1024 = Set the file handle limit for CVS (and other EMX based programs) to 1024, thus eliminating your current problem. The number must be between 10 and 65536, possibly CVS will also run with a smaller value. See also the file *doc\emxrt.doc* of the *[=.IDPNL_WHAT_EMXRUNTIME]* for further details on values of the *EMXOPT* environment variable. .. ----------------------------------------------------------------------------- .3 How can I create a new archive ? .. ----------------------------------------------------------------------------- .an IDPNL_HOW_CREATENEW . In order to create a new archive, you have to perform the following actions: .ul compact - [.IDPNL_USAGE_INIT initialize] the new archive. If it already exists, and you want to replace an existing archive, [.IDPNL_USAGE_REINIT reinitialize] the existing archive instead. - [.IDPNL_USAGE_IMPORT import] the existing source, if any. - [.IDPNL_USAGE_SECURE secure] the archive. See section .sl compact - [.IDPNL_USAGE_CVSSEC_MODIFIEDFILES] in order to find out how your archive is secured. .. ----------------------------------------------------------------------------- .3 How can I secure an archive ? .. ----------------------------------------------------------------------------- .an IDH_IDPNL_HOW_SECURE . See sections .sl compact - [.IDPNL_USAGE_SECURITY] - [.IDPNL_USAGE_SECURITY_LEVELS] - [.IDPNL_USAGE_SECURE] for more information on how to implement access restrictions to an existing archive. .. ----------------------------------------------------------------------------- .3 How can I add a new user to all archives ? .. ----------------------------------------------------------------------------- .an IDPNL_HOW_NEWUSER . In order to add a new user or change an existing user to/in all archives at once, simply do not use cswps to maintain the [.IDPNL_USAGE_PASSWD] file. If you would use cvspw (coming with *CVS*), you would have to make either .ul compact - the change to all archives one after another or - make the change to one archive and then distibute the resulting [.IDPNL_USAGE_PASSWD] file to all archive trees. Instead, use [.IDPNL_USAGE_PASSWD_SYNC the userid/password synchronization program] *nosapw* to let the [=TITLE] do the distribution job. For that, a main passwd file is being kept in the program directory of the [=TITLE]. If this changes during a *nosapw* operation, it is distributed automatically to all archive trees. [=NOTE] .ul compact - execute *nosapw* without parameters to get a brief online help .. ============================================================================= .2 Limitations .. ============================================================================= .an IDPNL_LIMITATIONS . The following limitations apply to the current version of the [=TITLE]: .ul - The name of the base directory of an archive may not start with a *!* or *?*. - directory names of and within *CVS* archives may currently not include blanks. However this restriction does not exist for filenames. - output filenames for changelogs may not contain blanks. - This packages is available only in English language. This is due to the reason, that programmers mostly understand english and that development tools, such as the required [.IDPNL_WHAT_CVS *Concurrent Versions System* (CVS)] are also only available in english. - When users import new directories, they will not be able to add files to it, because this requires to add the directory to [.IDPNL_USAGE_WRITEINFO] by the administrator. - This package has not yet been tested with *Object REXX* coming with *OS/2 Warp 4* or *eComStation*. .. ============================================================================= .2 Revision history .. ============================================================================= .an IDPNL_REVISIONS . [=TOPICS] .su V30 .. ----------------------------------------------------------------------------- .3 file__id.diz .. ----------------------------------------------------------------------------- .an IDPNL_FILE_ID_DIZ .fo off .textinclude file_id.diz .fo on .. ----------------------------------------------------------------------------- .3 Version 1.10 .. ----------------------------------------------------------------------------- .an IDPNL_REVISION_HISTORY_110 . _*New:*_ . .ul - put NOSA under the [.IDPNL_LEGAL_CDDL Common Development and Distribution License (CDDL)] - joined with NOSA Client into one WPI package with same version number - adapted name change from *OS/2 Netlabs* to *netlabs.org* - added new command . .sl compact - [.IDPNL_USAGE_EDIT $EDIT -] [.IDPNL_USAGE_EDIT] .el . to allow to quickly load system and [=SHORTNAME] related config files into TEDIT. This saves you from chasing these files all the while, when analyzing problems with a *CVS* archive. - moved the INF files to a subdirectors INF within the installation of [=TITLE]. Make sure to delete the old INF files from the main directory after having upgraded. - changed the installation programs to - create all [.IDPNL_INSTALL_WPSOBJ_WINDOW Administrator Window] icons in a [.IDPNL_INSTALL_WPSOBJ_WINDOWDIR] folder - create the shadows of the archive, source, backup and snapshot root folder in the subfolder [.IDPNL_INSTALL_WPSOBJ_SHADOWFOLDER] - changed the security program from REXX script cvssec.cmd to a C program cvssec.exe _*Fixed:*_ . .ul - [.IDPNL_USAGE_PASSWD_SYNC nosapw.cmd] has been extended to - display a warning if a password distributions was attempted while no passwd file has been created yet (no archive beng secured yet) - use both readinfo and writeinfo files of private archives to add the users to the passwd file of the archive - the [.IDPNL_INSTALL_INSTALL] has been modified to create an icon for the online help, which will now launch directly the overview panel. - modified *cvsenv.cmd* to - write the - [.IDPNL_USAGE_CVSCFG_SERVICEPROG *CVS* service program] and the - [.IDPNL_USAGE_CVSCFG_RESFILE the *CVS* resource file] . .el more efficiently. If the *config* subdirectory does not yet exist, it is now created. - after executing the [.IDPNL_USAGE_PRIVATE $private] or [.IDPNL_USAGE_PUBLIC $public] command to turn the access to a given project public or private, the following commands are executed automatically: - [.IDPNL_USAGE_CONFIG cvsenv $CONFIG] in order to write the archive lists - [.IDPNL_USAGE_PASSWD_SYNC nosapw.cmd -d] in order to rewrite the passwd file for all archives, instantly making the new access limitations becoming effective - within this book - changed all references to *CVSROOT\readers* to *CVSROOT\readinfo*, because only this file (introduced by the [=TITLE]) in conjunction with the passwd files maintained by [.IDPNL_USAGE_PASSWD_SYNC nosapw.cmd] are used to restrict readers access to the archives hosted by the [=TITLE]. Using *CVSROOT\readers* in order to limit read access to the archives showed up to not work properly. - *CVSROOT\readinfo* now gets deleted if an archive is made public, to remove the read restriction for everybody - extended the panel [.IDPNL_USAGE_PRIVATE] by the information, that a call [.IDPNL_USAGE_PASSWD_SYNC nosapw.cmd -d] is necessary to let become committed changes in the file *CVSROOT\readinfo* active in the passwd files. - modified the panel [.IDPNL_USAGE_FULLNAMES] to state that the file *fullnames.lst*, being used when [.IDPNL_USAGE_GENLOG generating a changelog], is being read from the *config* subdirectory of the [=TITLE] installation. - reworked the panel [.IDPNL_USAGE_FTPLIST] - within the whole package updated the email address of the author .. ----------------------------------------------------------------------------- .3 Version 1.08 .. ----------------------------------------------------------------------------- .an IDPNL_REVISION_HISTORY_108 . .at fc=red *WARNING*: . From this version on CVSENV will not longer use drive letters in CVSROOT directives! When you used previous releases of this package before and now migrate to this package, all old versions of [.IDPNL_USAGE_CVSCFG_PUBLICLIST] and [.IDPNL_USAGE_CVSCFG_PRIVATELIST] previously being fetched by clients are outdated and will not longer work, because they still contain drive letters within their CVSROOT values. All clients must fetch the new list files to obtain the new CVSROOT values !!! .at _*New:*_ . .ul - changed *cvsenv.cmd*, so that all commands now can be specified with either *$ / -* as the first character. For example, the following commands are all valid: *$Bin /Bin -Bin* . . This helps within shells, where a $ character has a special function, as in unix-style shells environment variables start with a $ character. . . Execute .sl compact - *cvsenv /?* .el . in order to get an overview of all commands. - added new commands . .sl compact - [.IDPNL_USAGE_PAUSE $PAUSE -] [.IDPNL_USAGE_PAUSE] - [.IDPNL_USAGE_RESUME $RESUME -] [.IDPNL_USAGE_RESUME] .el . to allow to pause the operation of the [=TITLE] service or to resume it. While the service is paused, connections are not possible, just as if the CVS service was not configured. - added new command . .sl compact - [.IDPNL_USAGE_DELETE $DELETE -] [.IDPNL_USAGE_DELETE] .el . for to delete the archive, working, snapshots and backup directory of an archive in order to completely remove all files corresponding to an archive. - added new command . .sl compact - [.IDPNL_USAGE_PUBLIC $PUBLIC -] [.IDPNL_USAGE_PUBLIC] .el . which is the counterpart to the [.IDPNL_USAGE_PRIVATE $PRIVATE] command and opens a once restricted archive for public access again. - added a new parameter to the command . .sl compact - [.IDPNL_USAGE_BACKUP $BACKUP -] [.IDPNL_USAGE_BACKUP] .el . so that one now can backup all archives on the [=TITLE] in one step by specifiying a '**' as archive name (NOTE: wildcard usage like test** is not possible !). - added a check for uncommitted changes for the . .sl compact - [.IDPNL_USAGE_CLEARWORK $CLEARWORK -] [.IDPNL_USAGE_CLEARWORK] .el . command, so that uncommitted changes to the working directory are not deleted by accident. If uncommitted changes are detected, *cvsenv.cmd* prompts the user for a confirmation. - replaced the former REXX implementation of the [.IDPNL_USAGE_CVSSEC security program] by an implementation as a C program. This decreases the time required to check access rights on pre-commit and pre-tag checks, especially when large subdirectory trees are processed. . - enhanced the command . .sl compact - [.IDPNL_USAGE_REINIT $REINIT -] [.IDPNL_USAGE_REINIT] .el . which reinitializes/resets an existing archive to an empty archive. *cvsenv.cmd* now displays a warning and executes several PAUSE commands in order to give the user a chance to abort the operation. - further enhancements/modifications to this book . .ul compact - added comments about [.IDPNL_USAGE_FTPLIST how to provide FTP access] for [=NAME] *Clients* to the file [.IDPNL_USAGE_CVSCFG_PUBLICLIST] - updated the sections about the files - [.IDPNL_USAGE_CVSCFG_PUBLICLIST] - [.IDPNL_USAGE_CVSCFG_PRIVATELIST] - migrated this file to *HyperText/2* source, making maintenance far easier - added a descriptive section for the [.IDPNL_WHAT_GNUSORT] pogram being shipped with the [=TITLE] package - added [.IDPNL_CREDITS_GENERAL credits] for the developers, maintainers and porters of the GNU sort program _*Fixed:*_ . .ul - cvsenv did not properly add ID lines to certain files. - cvsenv did not properly set the environment variable #%home%# when setting up the ennvironment for an archive. - updated the hobbes link to the [.IDPNL_WHAT_EMXRUNTIME] and removed the outdated link to OS/2 Supersite. - changed *cvsenv* to use source root directories without leading drive letters. This avoids problems when accessing the hosted archives from within a unix system with newer CVS versions. - changed *cvsenv* to write the list of currently hosted archives into the [.IDPNL_USAGE_CVSCFG_RESFILE CVS resource file] instead of into the [.IDPNL_USAGE_CVSCFG_SERVICEPROG service program], avoiding limitations within CVS.EXE when reading a lot of --allow-root directions from the commandline. You must invoke the [.IDPNL_USAGE_CONFIG configuration command] at least once in order to write the new style of configuration. After that all clients MUST fetch the [.IDPNL_USAGE_CVSCFG_PUBLICLIST] and [.IDPNL_USAGE_CVSCFG_PRIVATELIST] files in order to also use the new CVSROOT values. - changed *nosapw* to .ul compact - check wether *cvspw.exe* from the *CVS* package is available. - use the same help function in all cases (the parameter -distribute did not show up always) - detect changes in size of passwd file also when timestamp does not change, this may happen e.g. in consecutive calls from a batch file (within 2 seconds!) .. ----------------------------------------------------------------------------- .3 Version 1.07 .. ----------------------------------------------------------------------------- .an IDPNL_REVISION_HISTORY_107 . _*New:*_ . .ul - added new sections to this book about the [.IDPNL_WHAT_EMXRUNTIME], wich is a prerequisite for the [.IDPNL_WHAT_CVS]. . . See .ul compact - [.IDPNL_WHAT_EMXRUNTIME] - [.IDPNL_PREREQUISITES] - [.IDPNL_HOW_SOLVEOPENFILES] - You do not longer need to write the *cvsenv* commands in uppercase. More, you can use abbreviations, mostly with only one letter behind the dollar sign (e.g. $L or $list instead of $LIST). . Take care though, where two commands start with the same letter: in order to distinct between such commands, you may have to specify more than one letter of the command name. Execute .sl compact - *cvsenv /?* .el . in order to get an overview of all commands. _*Fixed:*_ . .ul - The [.IDPNL_USAGE_COMMENT $COMMENT] command now queries the old comment of the project. - The [=TITLE] can now use also a project definition not containing a comment. Previously, such project was simply ignored. - when [.IDPNL_USAGE_BACKUP creating a backup from an archive], directories are now also stored within an archive (removed switch -D). - fixed a bug in the [.IDPNL_USAGE_INIT $INIT] command. In some cases you needed to (re)initialize a new archive twice. - [.IDPNL_USAGE_CVSCFG_SERVICEPROG] is now deleted, if you run the [.IDPNL_USAGE_CONFIG $CONFIG] command and no archive is present. - [.IDPNL_USAGE_CVSCFG_SERVICEPROG] from now on is written as a plain batch file. (REXX seems to have a problem with literals longer than 256 chars :-( ). Doing this the current limit for the commandline of the *CVS* server is 1000 characters (either implied by CVS.EXE or CMD.EXE), wich leads to a practical limit of 15 to 25 projects per server. .. ----------------------------------------------------------------------------- .3 Version 1.06 .. ----------------------------------------------------------------------------- .an IDPNL_REVISION_HISTORY_106 . _*New:*_ . .ul - added new sections to this book about configuration of *TCP/IP* and the *CVS* service. . See .ul compact - [.IDPNL_USAGE_CVSCFG] - [.IDPNL_USAGE_CVSCFG_MODIFIEDFILES] - the following additional files are now generated during the configuration: .ul compact - [.IDPNL_USAGE_CVSCFG_PUBLICLIST] - [.IDPNL_USAGE_CVSCFG_PRIVATELIST] - added a new cvsenv command for setting a comment for an archive on the commandline: . .sl compact - [.IDPNL_USAGE_COMMENT $COMMENT -] [.IDPNL_USAGE_COMMENT] .el . Archive comments are being written either to the [.IDPNL_USAGE_CVSCFG_PRIVATELIST] or the [.IDPNL_USAGE_CVSCFG_PRIVATELIST] (depending on the privacy status of the archive), when you run the [.IDPNL_USAGE_CONFIG config command]. - the [.IDPNL_INSTALL_INSTALL] now also prompts for the hsotname of the [=NAME] server. This hostname is being written into [.IDPNL_USAGE_CVSCFG_PUBLICLIST] and/or [.IDPNL_USAGE_CVSCFG_PRIVATELIST], which in turn are being used by the [=NAME] *Client*. - added a new cvsenv command for listing the currently defined archives: on the commandline: . .sl compact - [.IDPNL_USAGE_LISTARCHIVES $LIST -] [.IDPNL_USAGE_LISTARCHIVES] - added a new cvsenv command for restricting an archive to private access on the commandline: . .sl compact - [.IDPNL_USAGE_PRIVATE $PRIVATE -] [.IDPNL_USAGE_PRIVATE] - Added [.IDPNL_USAGE_PASSWD_SYNC the userid/password synchronization program] in order to have an easy way to set up the users for all archives across one server. Just use *nosapw* instead ov cvspw, and all [.IDPNL_USAGE_PASSWD] files are kept in sync. . . See also .ul compact - [.IDPNL_HOW_NEWUSER] - added two new cvsenv commands for easier change between directories on the commandline: . .sl compact - [.IDPNL_USAGE_GOTOWORK $WORK -] [.IDPNL_USAGE_GOTOWORK] - [.IDPNL_USAGE_GOTOARCHIVE $ARCHIVE -] [.IDPNL_USAGE_GOTOARCHIVE] - [.IDPNL_USAGE_GOTONOSAADM $BIN -] [.IDPNL_USAGE_GOTONOSAADM] - removed the obsolete cvsenv command *$RECONFIG* for *reconfiguration of the CVS service*. This is not longer required, since *cvsenv* now uses a separate service program to maintain the list of hosted archives. . . See also .ul compact - [.IDPNL_USAGE_CVSCFG] - [.IDPNL_USAGE_CONFIG] - Added contents to pages .ul compact - [.IDPNL_MAIN] - [.IDPNL_WHAT_OVERVIEW] _*Fixed:*_ . .ul - fixed several bugs in the program fo generating a [.IDPNL_USAGE_GENLOG changelog]. - fixed a bug in the [.IDPNL_USAGE_CVSSEC security program], preventing the correct determination of access rights, if the only directories in [.IDPNL_USAGE_WRITEINFO] are */* and *CVSROOT*. - added information about a [.IDPNL_LIMITATIONS limitation]: The name of the base directory of an archive may not start with a *!* or *?*. .. ----------------------------------------------------------------------------- .3 Version 1.05 .. ----------------------------------------------------------------------------- .an IDPNL_REVISION_HISTORY_105 . _*New:*_ .ul - enhanced the [.IDPNL_USAGE_CVSSEC security program]: . [.IDPNL_USAGE_WRITEINFO] does not longer need to contain all directories of the archive. If new directories are being created in that archive, they implicitely inherit the access rights from its parent directory. - The specification of #archive__dirname# is now optional for most *cvsenv* commands, if you have setup the environment with . .sl compact [.IDPNL_USAGE_SETUPCMD *cvsenv* #archive__dirname#] .el . before. - implemented a new cvsenv command for [.IDPNL_USAGE_GENLOG generating a changelog]. - added a cvswrappers file for the [.IDPNL_USAGE_INIT initialization of a new archive]. This file implements wrappers, that disables keyword substitution for all sorts of binary files. - fixed a bug in this INF file: . replaced all *cvswps* with *cvsenv* (as it should be). - enhancements/modifications to this book .ul compact - added sections to the [.IDPNL_HOW] section. - rearranged the [.IDPNL_USAGE] section: Security comes first ! - reworked all security sections in the [.IDPNL_USAGE] section. Please read them ! - Implemented a new cvsenv command for *reconfiguration of the CVS service*, which rewrites the *CVS* information in the #%etc%#*\inetd.lst* with the actual existing archives. _*Fixed:*_ . .ul - fixed an error within the [.IDPNL_USAGE_CONFIG configuration of the CVS service]: . in certain situations tcpstart.cmd could not be found. .. ----------------------------------------------------------------------------- .3 Version 1.04 .. ----------------------------------------------------------------------------- .an IDPNL_REVISION_HISTORY_104 . First public release .. ============================================================================= .2 Trademarks .. ============================================================================= .an IDPNL_TRADEMARKS . The following trademarks are used in this online help file: .ul compact - *OS/2* is a trademark of IBM Corporation. - *eComStation* is a trademark of Serenity Systems International .. ============================================================================= .2 Credits .. ============================================================================= .an IDPNL_CREDITS . [=TOPICS] .su V30 .. ----------------------------------------------------------------------------- .3 General credits .. ----------------------------------------------------------------------------- .an IDPNL_CREDITS_GENERAL . Credits go to: .ul - all people having helped the development of this program, especially to - Steven Levine . for a bugfix to [.IDPNL_USAGE_PASSWD_SYNC nosapw.cmd] - all developers, who share and who will share their code through the [=NAME]. You all help the current and wannabe developers of the OS/2 community building better code, participating within internet projects and bringing OS/2 forward with new programs, that we all need. - all developers being involved in making, maintaining and porting .ul compact - [.IDPNL_WHAT_CVS] - [.IDPNL_WHAT_INFOZIP] - [.IDPNL_WHAT_GNUSORT GNU sort program gsort] .el . Without these programs, the [=NAME] would not have been possible.