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