home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 22 gnu
/
22-gnu.zip
/
cvs14p9b.zip
/
cvs
/
ReadMe.too
< prev
next >
Wrap
Text File
|
1994-02-10
|
8KB
|
176 lines
This info is scheduled to be added to the CVS faq.
1. The Port
Lutz Gruenenberg made a first attempt to port CVS 1.3. I found his
work when I was looking into CVS because I needed a way to collect
all my RCS files in a more easy to use manner.
Lutz' port soon turned out to be a very rough one, so I started
communicating with him about parts I fixed. He then asked me to
maintain this port, since he was in serious lack of time. So I did.
Most of the work went into dealing with 8.3 file naming on DOS
and OS/2 FAT systems. Both version handle this well now, though
some compromises had to be made, and the OS/2 version also supports
the original names on the HPFS. In fact, the OS/2 version has a
switch to choose between short or long names on the HPFS.
A serious shortcoming of DOS is the 640k barrier, that can't be
circumvented unless a DPMI compiler is used. I haven't got one
(yet) so can't work on this yet. I did manage to use an alternative
spawn function, that swaps the current program out to XMS, EMS or
disk before it calls a sub program, so that allows at least some
work to be done. In combination with a DPMI compliant diff
(Kai Uwe Rommel compiled one) this will make CVS viable even on
DOS systems. There can, however, be done some optimisation on
CVS itself, as it seems rather inefficient in its use of the stack.
The complete source will be available from ftp.rrzn.uni-hannover.de
as long as Lutz keeps making space available. It will be
in both /pub/msdos-local and /pub/os2-local.
I also upload to ftp-os2.cdrom.com, but rrzn might be more up
to date on occasion.
2. Special considerations
2.1 OS/2
The only consideration for OS/2 is whether or not one uses the
HPFS or the FAT system.
When using the HPFS CVS 1.3 functions exactly the same as it
would on Unix systems. The same naming scheme holds, no special
memory considerations, in short, nothing to worry about.
When using the FAT system, the same story for DOS holds where
file names are concerned.
When using a mix of both, there are two possibilities. Either
you keep the repository on FAT or you keep it on HPFS.
If you keep it on FAT you are forced to always use short names,
even if your working dir is on HPFS.
If you keep it on HPFS you again have two options. Either
you do or do not use short names. If you do, then that part
of the repository you want to work on has to be in short name
format, ie. using an RCS subdir. If you do not, then the
opposite has to be the case.
So, you cannot checkout from a long name repository onto a
FAT file system, but you can checkout from a short name
repository onto HPFS.
CVS could be modified to always use the short name version
for the repository, and allow for both version in the working
dir, and it could also be modified to auto-detect HPFS or
FAT. Neither has been done yet, and ideas or preferences on
why this should be done are welcome.
An extra consideration for OS/2 is the fact that you can also
run DOS software under OS/2. This means that the DOS version
of CVS can be used under OS/2, instead of the OS/2 32-bit
binary, and it may also have as a consequence that DOS software
is used for development. The former is ill-advised because
the DOS version has severe limitations compared to the OS/2
version. See the section on DOS. The latter implies that
short names might be preferable to prevent naming conflicts.
The best solution to this is to always use the 32-bit OS/2
version of CVS, possibly using the short names option.
This removes all the limitations of the DOS version, and
if source names are chosen wisely, there will be no naming
conflicts.
A known, yet not resolved, conflict under OS/2 is the case
retentiveness of the file system. I have not yet found
a satisfactory solution to this. Prerequisites are that
the case is retained on HPFS, yet case insensitivity
is used internally. Any ideas are welcome.
2.2 DOS
The DOS version is a special case of the OS/2 version. File
names have to always confirm with 8.3 conventions. There
is also the 640k barriere to be dealt with.
If one uses the EMX binary than the memory limit is not
there.
2.2.1 DOS file system limitations
First implication of this is that the ,v files are unusable.
RCS solves this by setting the extension to be void (RCSINIT=-x/).
RCS then uses a seperate subdir, RCS, to put it's files in,
instead of the default.
So a repository that would look like this on Unix:
%CVSROOT/module_1 ,v RCS files
| |---/module_1.1 ,v RCS files
|---/module_2 ,v RCS files
|---/module_3 ,v RCS files
Would look like this on DOS:
%CVSROOT/module_1/RCS RCS files
| |---/module_1.1/RCS RCS files
|---/module_2/RCS RCS files
|---/module_3/RCS RCS files
No big problem there.
Some of the files in %CVSROOT/CVSROOT had to be renamed because they
where to long:
commitinfo -> commitin.fo
cvsignore -> ignore.cvs
Also, some of the local administrative directory and file names had
to be changed:
CVS/Entries.Backup -> CVS/Entries.Bak
CVS/Entries.Static -> CVS/Entries.Sta
CVS/Repository -> CVS/Reposit.ory
CVS/Checkin.prog -> CVS/Checkin.prg
CVS/Update.prog -> CVS/Update.prg
.cvsignore -> ignore.cvs
The .p and .t files that are use to mark added files have been
changed to use P and T subdirs instead.
As are the merge backup files. Now a directory named Merge.Bak is
created in which the backups are placed. No attempt was made to
retain the version number, as this presents the problem of
both multiple dots in file names, as well as again exceeding the
8.3 convention. Instead it is assumed that once a new merge is
done, the previous backups are either no longer necessary, or
if they are, the have been moved by hand to keep them available.
A new merge will therefore overwrite any previous file of the
same name, possibly being of another version number.
Lock files have also changed name and form. Locks are now of
the form XXXXX.[rwt]fl, instead of #cvs.[rwt]fl.XXXXX and
#cvslock instead of #cvs.lock.
2.2.2 DOS memory limitations
Using CVS one becomes painfully aware of the 640k barriere.
CVS isn't exactly economical with regards to memory. It uses
a large stack for recursion purposes. On top of that it
calls sub programs that in turn may call another sub program.
Example: on checkin, cvs calls RCS' ci, that in turn calls
diff.
The latter is especially waistfull with memory. Diff reads
both files in their entirety, resulting in memory problems
on even moderate sized files.
Some of CVS' internals have been modified to solve some
major problems. For instance, a swapping spawn is used
to swap CVS out to XMS, EMS or disk before an external
command is run. This gives us some slack, but not enough
to work with large files. For this, diff has to be fixed.
Kai Uwe Rommel developed a DPMI compliant diff that
will most likely remove this problem.
In turn CVS can be optimised to use less (unnecessary) memory,
and it can be made DPMI compliant. Neither is done yet.
One can use gcc/emx for compilation. As emx is a DOS extender,
the memory limit is raised.
ir. E. van Linstee | Delft University of Technology
Man Machine Consultancy | I'll be back ...
----
We are god, 'cause only we can create the idea of his existence
in our holy brains... (Yello)
----
Gentlemen! You cannot fight in here. This is the war-room! (P.Sellers)