home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / ver_cont / cvs-1.8 / cvs-1 / cvs-1.8.1 / TODO < prev   
Encoding:
Text File  |  1996-05-06  |  19.7 KB  |  424 lines

  1. $CVSid: @(#)TODO 1.26 94/09/21 $
  2.  
  3. 14. Pathname stripper, for checkout, as well as for writing the
  4.     Repository file.
  5.     [[ I have a simple one, but need to make sure to call it at all the
  6.        appropriate points ]]
  7.     (I'm not sure what this means -kingdon, Jun 1995).
  8.  
  9. 22. Catch signals for cleanup when "add"ing files.
  10.  
  11. 24. Insist on a log message.
  12.     (This should be configurable via commitinfo or some new config file
  13.     -kingdon, Jun 1995).
  14.  
  15. 30. Add "patch" program option to the modules database.
  16.  
  17. 31. Think hard about ^C recovery.
  18.  
  19. 35. Add "admin" command as an interface to "rcs".
  20.     [[ a cheesy version is there, but it should be re-done ]]
  21.  
  22. 38. Think hard about using RCS state information to allow one to checkin
  23.     a new vendor release without having it be accessed until it has been
  24.     integrated into the local changes.
  25.  
  26. 39. Think about allowing parallel source trees that can easily track
  27.     each other.
  28.     [[ sort of solved with the automagic branch support, but I want more ]]
  29.  
  30. 45. Consider enhancing the "patch" and "tag" command support in the module
  31.     database -- they seem hard to use since these commands deal directly
  32.     with the RCS ,v files.
  33.  
  34. 46. Perhaps checkout/checkin/tag/patch commands should be imbedded in the
  35.     file system directly, using special known command names?
  36.  
  37. 49. cvs xxx commands should be able to deal with files in other
  38.     directories.  I want to do a cvs add foo/bar.c.
  39.     [[ most commands now use the generic recursion processor, but not all;
  40.     this note is left here to remind me to fix the others ]]
  41.  
  42. 52. SCCS has a feature that I would *love* to see in CVS, as it is very
  43.     useful.  One may make a private copy of SCCS suid to a particular user,
  44.     so other users in the authentication list may check files in and out of
  45.     a project directory without mucking about with groups.  Is there any
  46.     plan to provide a similar functionality to CVS?  Our site (and, I'd
  47.     imagine, many other sites with large user bases) has decided against
  48.     having the user-groups feature of unix available to the users, due to
  49.     perceived administrative, technical and performance headaches.  A tool
  50.     such as CVS with features that provide group-like functionality would
  51.     be a huge help.
  52.  
  53. 62. Consider using revision controlled files and directories to handle the
  54.     new module format -- consider a cvs command front-end to
  55.     add/delete/modify module contents, maybe.
  56.  
  57. 63. The "import" and vendor support commands (co -j) need to be documented
  58.     better.
  59.  
  60. 64. Need to greatly increase the performance of an initial checkout.
  61.     [[ it got better, then we added functionality, making it worse again ]]
  62.  
  63. 66. Length of the CVS temporary files must be limited to 14 characters for
  64.     System-V stupid support.  As well as the length on the CVS.adm files.
  65.  
  66. 67. cvs import should populate the vendor sources with CVS.adm files so
  67.     that one could use the vendor sources directly without having the check
  68.     them out.
  69.  
  70. 69. Consider enhacing import to add a module automatically to the module
  71.     database.  Perhaps with a new option, or perhaps with an editor.
  72.  
  73. 72. Consider re-design of the module -o, -i, -t options to use the file
  74.     system more intuitively.
  75.  
  76. 73. Consider an option (in .cvsrc?) to automatically add files that are new
  77.     and specified to commit.
  78.  
  79. 76. Consider adding a layer of abstraction so that CVS can work with both
  80.     RCS and SCCS files.  Larry says this should be #ifdef'ed.
  81.  
  82. 79. Might be nice to have some sort of interface to TFS and tagged
  83.     revisions.
  84.  
  85. 82. Maybe the import stuff should allow an arbitrary revision to be
  86.     specified.
  87.  
  88. 84. Improve the documentation about administration of the repository and
  89.     how to add/remove files and the use of symbolic links.
  90.  
  91. 85. Add revision controlled symbolic links to CVS using one of the tag
  92.     fields in the RCS file.
  93.  
  94. 91. Better document the format of the source repository and how one might
  95.     convert their current SCCS or RCS files into CVS format.
  96.  
  97. 92. Look into this:
  98.     After a bit of soul searching via dbx, I realized my sin was that I'd
  99.     specified "echo" as the program to call from loginfo. The commit
  100.     procedure worked fine till it hit my echo, then silently aborted
  101.     leaving the lockfiles intact. Since I needn't use the loginfo
  102.     facility, I simply removed those commands and it all works.
  103.  
  104. 93. Need to think hard about release and development environments.  Think
  105.     about execsets as well.
  106.  
  107. 98. If diff3 bombs out (too many differences) cvs then thinks that the file
  108.     has been updated and is OK to be commited even though the file 
  109.     has not yet been merged.
  110.  
  111. 100. Checked out files should have revision control support.  Maybe.
  112.  
  113. 102. Perhaps directory modes should be propagated on all import check-ins.
  114.      Not necessarily uid/gid changes.
  115.  
  116. 103. setuid/setgid on files is suspect.
  117.  
  118. 104. cvs should recover nicely on unreadable files/directories.
  119.  
  120. 105. cvs should have administrative tools to allow for changing permissions
  121.      and modes and what not.  In particular, this would make cvs a
  122.      more attractive alternative to rdist.
  123.  
  124. 107. It should be possible to specify a list of symbolic revisions to
  125.      checkout such that the list is processed in reverse order looking for
  126.      matches within the RCS file for the symbolic revision.  If there is
  127.      not a match, the next symbolic rev on the list is checked, and so on,
  128.      until all symbolic revs are exhausted.  This would allow one to, say,
  129.      checkout "4.0" + "4.0.3" + "4.0.3Patch1" + "4.0.3Patch2" to get the
  130.      most recent 4.x stuff.  This is usually handled by just specifying the
  131.      right release_tag, but most people forget to do this.
  132.  
  133. 108. If someone creates a whole new directory (i.e. adds it to the cvs
  134.      repository) and you happen to have a directory in your source farm by
  135.      the same name, when you do your cvs update -d it SILENTLY does
  136.      *nothing* to that directory.  At least, I think it was silent;
  137.      certainly, it did *not* abort my cvs update, as it would have if the
  138.      same thing had happened with a file instead of a directory.
  139.  
  140. 109. I had gotten pieces of the sys directory in the past but not a
  141.      complete tree.  I just did something like:
  142.  
  143.         cvs get *
  144.  
  145.      Where sys was in * and got the message
  146.  
  147.         cvs get: Executing 'sys/tools/make_links sys'
  148.         sh: sys/tools/make_links: not found
  149.  
  150.      I suspect this is because I didn't have the file in question,
  151.      but I do not understand how I could fool it into getting an
  152.      error.  I think a later cvs get sys seemed to work so perhaps
  153.      something is amiss in handling multiple arguments to cvs get?
  154.  
  155. 113. The "cvs update" command should tee its output to a log file in ".".
  156.      (why?  What is wrong with piping stdout to "tee"? -kingdon, Jun 1995)
  157.  
  158. 119. Consider an option to have import checkout the RCS or SCCS files
  159.      if necessary.
  160.  
  161. 122. If Name_Repository fails, it currently causes CVS to die completely.  It
  162.      should instead return NULL and have the caller do something reasonable.
  163.  
  164. 123. Add a flag to import to not build vendor branches for local code.
  165.  
  166. 124. Anyway, I thought you might want to add something like the following
  167.      to the cvs man pages:
  168.  
  169.      BUGS
  170.      The sum of the sizes of a module key and its contents are
  171.      limited.  See ndbm(3).
  172.  
  173. 126. Do an analysis to see if CVS is forgetting to close file descriptors.
  174.      Especially when committing many files (more than the open file limit
  175.      for the particular UNIX).
  176.  
  177. 127. Look at *info files; they should all be quiet if the files are not
  178.      there.  Should be able to point at a RCS directory and go.
  179.  
  180. 128. When I tag a file, the message tells me that I'm tagging a directory.
  181.  
  182. 129. Something strange seems to have happened here.  When I check this out,
  183.      the update lines (U CFTS/...) seem to report a bogus leading CFTS
  184.      (e.g. U CFTS/Medusa_TS/...) when the later files are checked out.
  185.  
  186.      The directory structure doesn't seem to be botched, just the
  187.      messages.  I don't recall seeing this before.
  188.  
  189. 130. cvs diff with no -r arguments does not need to look up the current RCS
  190.      version number since it only cares about what's in the Entries file.
  191.      This should make it much faster.
  192.  
  193.      It should ParseEntries itself and access the entries list much like
  194.      Version_TS does (sticky tags and sticky options may need to be
  195.      supported here as well).  Then it should only diff the things that
  196.      have the wrong time stamp (the ones that look modified).
  197.  
  198. 134. Make a statement about using hard NFS mounts to your source
  199.      repository.  Look into checking NULL fgets() returns with ferror() to
  200.      see if an error had occurred.
  201.  
  202. 135. The email CVS sends with each checkin, should include the version
  203.      number of each file it is checking in.
  204.      [[ Sort of solved by contrib/log.pl, which does a good job of this ]]
  205.  
  206. 137. Some sites might want CVS to fsync() the RCS ,v file to protect
  207.      against nasty hardware errors.  There is a slight performance hit with
  208.      doing so, though, so it should be configurable in the .cvsrc file.
  209.      Also, along with this, we should look at the places where CVS itself
  210.      could be a little more synchronous so as not to lose data.
  211.      [[ I've done some of this, but it could use much more ]]
  212.  
  213. 138. Some people have suggested that CVS use a VPATH-like environment
  214.      variable to limit the amount of sources that need to be duplicated for
  215.      sites with giant source trees and no disk space.
  216.  
  217. 141. Import should accept modules as its directory argument.
  218.  
  219. 143. Update the documentation to show that the source repository is
  220.      something far away from the files that you work on.
  221.  
  222. 144. Have cvs checkout look for the environment variable CVSPREFIX
  223.      (or CVSMODPREFIX or some such).  If it's set, then when looking
  224.      up an alias in the modules database, first look it up with the
  225.      value of CVSPREFIX attached, and then look for the alias itself.
  226.      This would be useful when you have several projects in a single
  227.      repository.  You could have aliases abc_src and xyz_src and
  228.      tell people working on project abc to put "setenv CVSPREFIX abc_"
  229.      in their .cshrc file (or equivalent for other shells).
  230.      Then they could do "cvs co src" to get a copy of their src
  231.      directory, not xyz's.  (This should create a directory called
  232.      src, not abc_src.)
  233.  
  234. 145. After you create revision 1.1.1.1 in the previous scenario, if
  235.      you do "cvs update -r1 filename" you get revision 1.1, not
  236.      1.1.1.1.  It would be nice to get the later revision.  Again,
  237.      this restriction comes from RCS and is probably hard to
  238.      change in CVS.  Sigh.
  239.  
  240.      |"cvs update -r1 filename" does not tell RCS to follow any branches.  CVS
  241.      |tries to be consistent with RCS in this fashion, so I would not change
  242.      |this.  Within CVS we do have the flexibility of extending things, like
  243.      |making a revision of the form "-r1HEAD" find the most recent revision
  244.      |(branch or not) with a "1." prefix in the RCS file.  This would get what
  245.      |you want maybe.
  246.       
  247.      This would be very useful.  Though I would prefer an option
  248.      such as "-v1" rather than "-r1HEAD".  This option might be
  249.      used quite often.
  250.  
  251. 146. The merging of files should be controlled via a hook so that programs
  252.      other than "rcsmerge" can be used, like Sun's filemerge or emacs's
  253.      emerge.el.  (but be careful in making this work client/server--it means
  254.      doing the interactive merging at the end after the server is done).
  255.  
  256. 149. On Sun, 2 Feb 92 22:01:38 EST, rouilj@dl5000.bc.edu (John P. Rouillard)
  257.      said:
  258.      Maybe there should be an option to cvs admin that allows a user to
  259.      change the Repository file with some degree of error checking?
  260.      Something like "cvs admin reposmv /old/path /new/pretty/path".  Before
  261.      it does the replace it check to see that the files
  262.      /new/pretty/path/<dir>/<files> exist.
  263.  
  264. 150. I have a customer request for a way to specify log message per
  265.      file, non-interactively before the commit, such that a single, fully
  266.      recursive commit prompts for one commit message, and concatenates the
  267.      per file messages for each file.  In short, one commit, one editor
  268.      session, log messages allowed to vary across files within the commit.
  269.      Also, the per file messages should be allowed to be written when the
  270.      files are changed, which may predate the commit considerably.
  271.  
  272.      A new command seems appropriate for this.  The state can be saved in the
  273.      CVS directory.  I.e.,
  274.  
  275.         % cvs msg foo.c
  276.         Enter log message for foo.c
  277.         >> fixed an uninitialized variable
  278.         >> ^D
  279.  
  280.      The text is saved as CVS/foo.c,m (or some such name) and commit is
  281.      modified to append (prepend?) the text (if found) to the log message
  282.      specified at commit time.  Easy enough.
  283.  
  284. 151. Also, is there a flag I am missing that allows replacing Ulrtx_Build
  285.      by Ultrix_build?  I.E. I would like a tag replacement to be a one step
  286.      operation rather than a two step "cvs rtag -r Ulrtx_Build Ultrix_Build"
  287.      followed by "cvs trag -d Ulrtx_Build"
  288.  
  289. 152. The "cvs -n" option does not work as one would expect for all the
  290.      commands.  In particular, for "commit" and "import", where one would
  291.      also like to see what it would do, without actually doing anything.
  292.  
  293. 153. There should be some command (maybe I just haven't figured
  294.      out which one...) to import a source directory which is already
  295.      RCS-administered without losing all prior RCS gathered data.  Thus, it
  296.      would have to examine the RCS files and choose a starting version and
  297.      branch higher than previous ones used.
  298.  
  299. 154. When committing the modules file, a pre-commit check should be done to
  300.      verify the validity of the new modules file before allowing it to be
  301.      committed.
  302.  
  303. 155. The options for "cvs history" are mutually exclusive, even though
  304.      useful queries can be done if they are not, as in specifying both a
  305.      module and a tag.  A workaround is to specify the module, then run the
  306.      output through grep to only display lines that begin with T, which are
  307.      tag lines.
  308.  
  309. 156. Also, how hard would it be to allow continuation lines in the
  310.      {commit,rcs,log}info files? It would probably be useful with all of
  311.      the various flags that are now available, or if somebody has a lot of
  312.      files to put into a module.
  313.  
  314. 157. The "cvs release" command does not understand about module names with
  315.      the same flexibility that the "checkout" and "rdiff" commands do.
  316.      It should, though, since it's confusing right now.
  317.  
  318. 158. If I do a recursive commit and find that the same RCS file is checked
  319.      out (and modified!) in two different places within my checked-out
  320.      files (but within the realm of a single "commit"), CVS will commit the
  321.      first change, then overwrite that change with the second change.  We
  322.      should catch this (typically unusual) case and issue an appropriate
  323.      diagnostic and die.
  324.  
  325. 159. On "update", when a merge is done, CVS should remember that your file
  326.      was merged into and should keep reminding you of this fact until you
  327.      actually look at the file (change its access time).  Once you do this,
  328.      it should go back to being a normal, unmodified file.  This way, after
  329.      a big update, you can run update again to see which files just got
  330.      merged and may need attention.
  331.  
  332. 160. The checks that the commit command does should be extended to make
  333.      sure that the revision that we will lock is not already locked by
  334.      someone else.  Maybe it should also lock the new revision if the old
  335.      revision was already locked by the user as well, thus moving the lock
  336.      forward after the commit.
  337.  
  338. 161. The date parser included with CVS (lib/getdate.y) does not support
  339.      such RCS-supported dates as "1992/03/07".  It probably should.
  340.  
  341. 163. The rtag/tag commands should have an option that removes the specified
  342.      tag from any file that is in the attic.  This allows one to re-use a
  343.      tag (like "Mon", "Tue", ...) all the time and still have it tag the
  344.      real main-line code.
  345.  
  346. 164. The *info files should allow multiple ocurrences of $CVSROOT and/or
  347.      other cvs variables.  They probably should *not* expand environment
  348.      variables, as their behavior probably should not depend on who is 
  349.      running CVS.
  350.  
  351. 165. The "import" command will create RCS files automatically, but will
  352.      screw-up when trying to create long file names on short file name
  353.      file systems.  Perhaps import should be a bit more cautious.
  354.  
  355. 166. There really needs to be a "Getting Started" document which describes
  356.      some of the new CVS philosophies.  Folks coming straight from SCCS or
  357.      RCS might be confused by "cvs import".  Also need to explain:
  358.         - How one might setup their $CVSROOT
  359.         - What all the tags mean in an "import" command
  360.         - Tags are important; revision numbers are not
  361.  
  362. 167. "cvs log" doesn't understand about CVS magic branch numbers.  As such,
  363.      the command:
  364.  
  365.         cvs log -r1.63.2
  366.         cvs log -rC2
  367.  
  368.      where "C2" is a magic branch that resolves to 1.63.2 do not print the
  369.      same things.  Sigh.
  370.  
  371. 169. We are using CVS as the configuration control for a software reuse library.
  372.      What we do is do system calls passing the needed arguments. In the next
  373.      release, it would be nice to see an option to put cvs .o files into a
  374.      archive library with an API. This enhancement would go nicely with the
  375.      notion of being able to integrate tools into a large software engineering
  376.      environment.
  377.  
  378. 170. Is there an "info" file that can be invoked when a file is checked out, or
  379.      updated ?  What I want to do is to advise users, particularly novices, of
  380.      the state of their working source whenever they check something out, as
  381.      a sanity check.
  382.  
  383.      For example, I've written a perl script which tells you what branch you're
  384.      on, if any.  Hopefully this will help guard against mistaken checkins to
  385.      the trunk, or to the wrong branch.  I suppose I can do this in
  386.      "commitinfo", but it'd be nice to advise people before they edit their
  387.      files.
  388.   
  389.      It would also be nice if there was some sort of "verboseness" switch to
  390.      the checkout and update commands that could turn this invocation of the
  391.      script off, for mature users.
  392.  
  393. 173. We have a tagged branch in CVS.  How do we get the version of that branch
  394.      (for an entire directory) that corresponds to the files on that branch on a
  395.      certain day?  I'd like to specify BOTH -r and -D to 'cvs checkout', but I
  396.      can't.  It looks like I can only specify the date for the main line (as
  397.      opposed to any branches).  True?  Any workarounds to get what I need?
  398.  
  399. 174. I would like to see "cvs release" modified so that it only removes files
  400.      which are known to CVS - all the files in the repository, plus those which
  401.      are listed in .cvsignore.  This way, if you do leave something valuable in
  402.      a source tree you can "cvs release -d" the tree and your non-CVS goodies
  403.      are still there.  If a user is going to leave non-CVS files in their source
  404.      trees, they really should have to clean them up by hand.
  405.  
  406. 175. And, in the feature request department, I'd dearly love a command-line
  407.      interface to adding a new module to the CVSROOT/modules file.
  408.  
  409. 176. If you use the -i flag in the modules file, you can control access
  410.      to source code; this is a Good Thing under certain circumstances. I
  411.      just had a nasty thought, and on experiment discovered that the
  412.      filter specified by -i is _not_ run before a cvs admin command; as
  413.      this allows a user to go behind cvs's back and delete information
  414.      (cvs admin -o1.4 file) this seems like a serious problem.
  415.  
  416. 177. We've got some external vendor source that sits under a source code
  417.      hierarchy, and when we do a cvs update, it gets wiped out because
  418.      its tag is different from the "main" distribution. I've tried to
  419.      use "-I" to ignore the directory, as well as .cvsignore, but this
  420.      doesn't work.
  421.  
  422. 179. "cvs admin" does not log its actions with loginfo, nor does it check
  423.      whether the action is allowed with commitinfo.  It should.
  424.