home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / cvsdos / readme.too < prev    next >
Text File  |  1994-01-18  |  8KB  |  185 lines

  1. This info is scheduled to be added to the CVS faq.
  2.  
  3. 1. The Port
  4.  
  5. Lutz Gruenenberg made a first attempt to port CVS 1.3. I found his
  6. work when I was looking into CVS because I needed a way to collect
  7. all my RCS files in a more easy to use manner.
  8. Lutz' port soon turned out to be a very rough one, so I started
  9. communicating with him about parts I fixed. He then asked me to
  10. maintain this port, since he was in serious lack of time. So I did.
  11. Most of the work went into dealing with 8.3 file naming on DOS
  12. and OS/2 FAT systems. Both version handle this well now, though
  13. some compromises had to be made, and the OS/2 version also supports
  14. the original names on the HPFS. In fact, the OS/2 version has a
  15. switch to choose between short or long names on the HPFS.
  16. A serious shortcoming of DOS is the 640k barrier, that can't be
  17. circumvented unless a DPMI compiler is used. I haven't got one
  18. (yet) so can't work on this yet. I did manage to use an alternative
  19. spawn function, that swaps the current program out to XMS, EMS or
  20. disk before it calls a sub program, so that allows at least some
  21. work to be done. In combination with a DPMI compliant diff
  22. (Kai Uwe Rommel developed one) this will make CVS viable even on
  23. DOS systems. There can, however, be done some optimisation on
  24. CVS itself, as it seems rather inefficient in its use of the stack.
  25. The complete source will be available from ftp.rrzn.uni-hannover.de
  26. as long as Lutz keeps making space available. It will be
  27. in both /pub/msdos-local and /pub/os2-local.
  28. I also upload to ftp-os2.cdrom.com, but rrzn might be more up
  29. to date on occasion.
  30.  
  31. 2. Special considerations
  32.  
  33. 2.1 OS/2
  34.  
  35. The only consideration for OS/2 is whether or not one uses the
  36. HPFS or the FAT system.
  37. When using the HPFS CVS 1.3 functions exactly the same as it
  38. would on Unix systems. The same naming scheme holds, no special
  39. memory considerations, in short, nothing to worry about.
  40. When using the FAT system, the same story for DOS holds where
  41. file names are concerned.
  42. When using a mix of both, there are two possibilities. Either
  43. you keep the repository on FAT or you keep it on HPFS.
  44. If you keep it on FAT you are forced to always use short names,
  45. even if your working dir is on HPFS.
  46. If you keep it on HPFS you again have two options. Either
  47. you do or do not use short names. If you do, then that part
  48. of the repository you want to work on has to be in short name
  49. format, ie. using an RCS subdir. If you do not, then the
  50. opposite has to be the case.
  51. So, you cannot checkout from a long name repository onto a
  52. FAT file system, but you can checkout from a short name
  53. repository onto HPFS.
  54. CVS could be modified to always use the short name version
  55. for the repository, and allow for both version in the working
  56. dir, and it could also be modified to auto-detect HPFS or
  57. FAT. Neither has been done yet, and ideas or preferences on
  58. why this should be done are welcome.
  59.  
  60. An extra consideration for OS/2 is the fact that you can also
  61. run DOS software under OS/2. This means that the DOS version
  62. of CVS can be used under OS/2, instead of the OS/2 32-bit
  63. binary, and it may also have as a consequence that DOS software
  64. is used for development. The former is ill-advised because
  65. the DOS version has severe limitations compared to the OS/2
  66. version. See the section on DOS. The latter implies that
  67. short names might be preferable to prevent naming conflicts.
  68. The best solution to this is to always use the 32-bit OS/2
  69. version of CVS, possibly using the short names option.
  70. This removes all the limitations of the DOS version, and
  71. if source names are chosen wisely, there will be no naming
  72. conflicts.
  73.  
  74. A known, yet not resolved, conflict under OS/2 is the case
  75. retentiveness of the file system. I have not yet found
  76. a satisfactory solution to this. Prerequisites are that
  77. the case is retained on HPFS, yet case insensitivity
  78. is used internally. Any ideas are welcome.
  79.  
  80. 2.2 DOS
  81.  
  82. The DOS version is a special case of the OS/2 version. File
  83. names have to always confirm with 8.3 conventions. There
  84. is also the 640k barriere to be dealt with.
  85. If one uses the EMX binary than the memory limit is not
  86. there.
  87.  
  88. 2.2.1 DOS file system limitations
  89.  
  90. First implication of this is that the ,v files are unusable.
  91. RCS solves this by setting the extension to be void (RCSINIT=-x/).
  92. RCS then uses a seperate subdir, RCS, to put it's files in,
  93. instead of the default.
  94. So a repository that would look like this on Unix:
  95.  
  96. %CVSROOT/module_1               ,v RCS files
  97.     |       |---/module_1.1     ,v RCS files
  98.     |---/module_2               ,v RCS files
  99.     |---/module_3               ,v RCS files
  100.  
  101. Would look like this on DOS:
  102.  
  103. %CVSROOT/module_1/RCS           RCS files
  104.     |       |---/module_1.1/RCS RCS files
  105.     |---/module_2/RCS           RCS files
  106.     |---/module_3/RCS           RCS files
  107.  
  108. No big problem there.
  109. Some of the files in %CVSROOT/CVSROOT had to be renamed because they
  110. where to long:
  111.  
  112.     commitinfo  -> commitin.fo
  113.     cvsignore   -> ignore.cvs
  114.  
  115. Also, some of the local administrative directory and file names had
  116. to be changed:
  117.  
  118.     CVS/Entries.Backup  -> CVS/Entries.Bak
  119.     CVS/Entries.Static  -> CVS/Entries.Sta
  120.     CVS/Repository      -> CVS/Reposit.ory
  121.     CVS/Checkin.prog    -> CVS/Checkin.prg
  122.     CVS/Update.prog     -> CVS/Update.prg
  123.     .cvsignore          -> ignore.cvs
  124.  
  125. The .p and .t files that are use to mark added files have been
  126. changed to use P and T subdirs instead.
  127. As are the merge backup files. Now a directory named Merge.Bak is
  128. created in which the backups are placed. No attempt was made to
  129. retain the version number, as this presents the problem of
  130. both multiple dots in file names, as well as again exceeding the
  131. 8.3 convention. Instead it is assumed that once a new merge is
  132. done, the previous backups are either no longer necessary, or
  133. if they are, the have been moved by hand to keep them available.
  134. A new merge will therefore overwrite any previous file of the
  135. same name, possibly being of another version number.
  136.  
  137. Lock files have also changed name and form. Locks are now of
  138. the form XXXXX.[rwt]fl, instead of #cvs.[rwt]fl.XXXXX and
  139. #cvslock instead of #cvs.lock.
  140.  
  141. 2.2.2 DOS memory limitations
  142.  
  143. Using CVS one becomes painfully aware of the 640k barriere.
  144. CVS isn't exactly economical with regards to memory. It uses
  145. a large stack for recursion purposes. On top of that it
  146. calls sub programs that in turn may call another sub program.
  147. Example: on checkin, cvs calls RCS' ci, that in turn calls
  148. diff.
  149. The latter is especially waistfull with memory. Diff reads
  150. both files in their entirety, resulting in memory problems
  151. on even moderate sized files.
  152. Some of CVS' internals have been modified to solve some
  153. major problems. For instance, a swapping spawn is used
  154. to swap CVS out to XMS, EMS or disk before an external
  155. command is run. This gives us some slack, but not enough
  156. to work with large files. For this, diff has to be fixed.
  157. Kai Uwe Rommel developed a DPMI compliant diff that
  158. will most likely remove this problem.
  159. In turn CVS can be optimised to use less (unnecessary) memory,
  160. and it can be made DPMI compliant. Neither is done yet.
  161. One can use gcc/emx for compilation. As emx is a DOS extender,
  162. the memory limit is raised.
  163.  
  164. 2.2.3 DOS command line limitations
  165.  
  166. A severe handicap is the 127 character limit on the command line.
  167. This makes it next to impossible to use a reasonably sized
  168. log message.
  169. This problem can only be solved if RCS allows for comments to be
  170. read from a file.
  171.  
  172.  
  173.  
  174.  
  175.  
  176. ir. E. van Linstee           | Delft University of Technology
  177. Man Machine Consultancy      | I'll be back ...
  178. ----
  179.    We are god, 'cause only we can create the idea of his existence
  180.    in our holy brains...  (Yello)
  181. ----
  182.    Gentlemen! You cannot fight in here. This is the war-room!  (P.Sellers)
  183.  
  184.  
  185.