This document summarizes the directory structures, tools, and procedures for use in editing chapters of the TEI Guidelines. It describes the current state of affairs and should apply (mutatis mutandis) to future systems.
The master copies of the Guidelines are housed on machines at each editorial site; each site has
To the extent possible, all machines used to house master copies should have the same setup: TEI files should have the same directory structure, and the same tools should be available for working with them. When the systems have different tools, the editors should write programs (e.g. shell scripts) to mask the differences as far as possible. This similarity is not an end in itself; its purpose is to simplify the tasks of editing the Guidelines and reduce the chances of time-consuming or catastrophic errors.
There are two sets of directories: one for the live master copies of the files, and one for working copies of files currently being edited.
Master copies of the files are :
In an ideal world, these two directories would each be remotely mounted on the other machine via NFS or something similar, so that each editor could work just on the local machine. In practice, this doesn't always work, so each machine should have a read-only shadow copy of the other machine's files.
Working directories, for files currently checked out by one editor, are on each machine at
Each of these four directories will have an RCS subdirectory symbolically linked to the corresponding master RCS subdirectory, so that a file can be checked in to the master RCS directory from the editors' working directories.
The following invariants govern the relationships of these directories and should be preserved by all procedures:
cd ~cmsmcq/TEI/p3/master/gluon co *Any read/write copies in this directory are errors and may be deleted without examination or warning. All files in the master directories should be valid SGML using the current production DTD. All should include the RCS
$Id$
and $Log$
keywords.System identifiers in all files should have the file name and extension (in 8+3 form, for maximum portability) only, without any directory information.
To pick up the current production version of each file, software relying on system identifiers should search these directories in this order:
To pick up the newest changes to each file currently being worked on locally, and the production versions of files being worked on by the other editor, the following search path should be used:
When public identifiers are used, SGML Open catalogs should be provided to guide the resolution, thus:
-- for Chicago -- CATALOG "~cmsmcq/TEI/p3/master/catalog" CATALOG "~cmsmcq/sgml/catalog" CATALOG "/usr/local/doc/SGML/catalog" -- for Oxford -- CATALOG "/home/TEI/p3/master/catalog" CATALOG "~cmsmcq/sgml/catalog"
To get production copies of all files, software which handles public identifiers should start with the catalog file in the master directory; to get working copies with the newest changes, it should start in the working directories.
/home/TEI/p3/master/
onions
(master files for tagdocs, entdocs, and classdocs)
RCS
(old versions, under RCS control)gluon
(NFS copy (if available) of master files
in Chicago)
RCS
(old versions, under RCS control)fallback
(shadow copy (maintained by ftp) of master files
in Chicago, no RCS subdirectory)~lou/TEI/p3/working/
onions
(working files for tagdocs, entdocs, and classdocs)
RCS
(symbolic link to /home/TEI/p3/master/onions/RCS
)gluon
(working files for Odd files)
RCS
(symbolic link to /home/TEI/p3/master/gluon/RCS
)~cmsmcq/TEI/p3/working/
onions
(working files for tagdocs, entdocs, and classdocs)
RCS
(symbolic link to /home/TEI/p3/master/onions/RCS
)gluon
(working files for Odd files)
RCS
(symbolic link to /home/TEI/p3/master/gluon/RCS
)~cmsmcq/TEI/p3/master/
onions
(NFS copy, if possible of
tagdocs, entdocs, and classdocs on onions)
RCS
(old versions, under RCS control)gluon
(master copy of Odd files)
RCS
(old versions, under RCS control)fallback
(shadow copy (maintained by ftp) of master files
in Oxford, no RCS subdirectory)~lou/TEI/p3/working/
onions
(working files for tagdocs, entdocs, and classdocs)
RCS
(symbolic link to ~cmsmcq/TEI/p3/master/onions/RCS
)gluon
(working files for Odd files)
RCS
(symbolic link to ~cmsmcq/TEI/p3/master/gluon/RCS
)~cmsmcq/TEI/p3/working/
onions
(working files for tagdocs, entdocs, and classdocs)
RCS
(symbolic link to ~cmsmcq/TEI/p3/master/onions/RCS
)gluon
(working files for Odd files)
RCS
(symbolic link to ~cmsmcq/TEI/p3/master/gluon/RCS
)To simplify maintenance and problem solving, the editors should agree on languages to use for shell scripts and major programs. At present, shell scripts should be written in ksh, csh, or TCL.
There is no current agreement on the language(s) to be used in programs to be shared by the editors; at the time this is written, current production programs are in standard Spitbol, Spitbol with Catspaw extensions, Rexx, C, TCL, and Perl.
The following tools are currently available on tigger.cc.uic.edu and should be available on onions.natcorp.ox.ac.uk:
rcs -l
against a file (preparatory
to checking in revisions), this script checks to see that the file in
question has not been updated since the copy in the current directory
was created. If the file in the current directory and the current RCS
version have different version numbers, an error message is issued and
the file is not locked; otherwise the native rcs
program is called to do its normal work. The script can be
circumvented by invoking the native RCS system directly.This section provides checklists for checking files in and out and performing various maintenance tasks. These tasks should probably be automated as time permits.
cd ~/TEI/p3/working/gluon co -l p2hd*.oddThe editors will not edit the files in the master directories; editors should check files out into the working directories, not the master directories. When files are edited on other machines and copied back to tigger.cc.uic.edu or onions.natcorp.ox.ac.uk to be checked in, they should be copied into the editors' working directories, not into the master directories.
ftp tigger.cc.uic.edu cd ~/TEI/p3/working/gluon mput p2hd*.odd quit
cd ~/TEI/p3/working/gluon ci p2hd*.oddIt is the responsibility of each editor to lock files before editing them, and when this is not possible then to ensure that changes made by the other editor are not overwritten when checking the file in. When the TCL wrappers for rcs and ci are complete, this process will be less error-prone. In the meantime, the rule is simple: if ci fails because a file is not locked, it is not legitimate just to lock the file and check it in: it's necessary to check the version numbers to make sure it's safe to check the file in.
cd ~cmsmcq/TEI/p3/master/gluon refreshor if refresh does not work, we can do it manually, at the cost of messing up the file dates:
cd ~cmsmcq/TEI/p3/master/gluon co *
co RCS/*,v
date > date.last.refreshed
cd ~cmsmcq/TEI/p3/master/fallback ftp onions.natcorp.ox.ac.uk cd /home/TEI/p3/master/onions mget *
date > date.last.refreshed
cd /home/TEI/p3/master/fallback ftp tigger.cc.uic.edu cd ~cmsmcq/TEI/p3/master/gluon mget *
date > date.last.refreshed
cd
to the temporary directory and
compare the temp and the shadow directory with one of the
following commands:
diff . /home/TEI/p3/master/fallback diff . ~cmsmcq/TEI/p3/master/fallback