home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / unix / programm / 5899 < prev    next >
Encoding:
Text File  |  1993-01-12  |  5.8 KB  |  115 lines

  1. Newsgroups: comp.unix.programmer
  2. Path: sparky!uunet!zaphod.mps.ohio-state.edu!howland.reston.ans.net!usc!cs.utexas.edu!torn!utzoo!utdoe!torag!robohack!woods
  3. From: woods@robohack.UUCP (Greg A. Woods)
  4. Subject: Re: Revision control by directory tree
  5. Organization: Elegant Communications Inc.
  6. References: <1352@curly.appmag.com> <1993Jan8.083451.21875@ericsson.se>
  7. Message-ID: <1993Jan12.064614.28450@robohack.UUCP>
  8. Keywords: sccs rcs cvs directories
  9. Date: Tue, 12 Jan 93 06:46:14 GMT
  10. Lines: 103
  11.  
  12. In article <1993Jan8.083451.21875@ericsson.se> etxmesa@eos.ericsson.se (Michael Salmon) writes:
  13. > In article <1352@curly.appmag.com>
  14. > pa@curly.appmag.com (Pierre Asselin) writes:
  15. > |> I am maintaining libraries of in-house code and I want to place the
  16. > |> files under revision control.  My boxes (AIX 3.[12]) only have sccs.
  17. > |> I have been using sccs for single-file programs, but a library source
  18. > |> is typically spread over many files.  I want all the files to have the
  19. > |> same revision number.  Sccs won't do that.  I don't have large teams of
  20. > |> programmers to manage;  all I need at this point is per-project
  21. > |> revision numbers.
  22.  
  23. No, unless you want to lose the ability to control, identify, and
  24. measure changes to each file, you most definitely do not want all
  25. files in a given library to have the same "revision number".  Perhaps
  26. what you meant to say was you want to be able to identify the revision
  27. (number) of a given file by a version label for the final product, such
  28. that the revision (number) of each file necessary to build a given
  29. version of the product (library) may be identified.
  30.  
  31. Revision numbers of individual files have no meaning outside of being
  32. simple sequential markers of change management events for each file.
  33.  
  34. SCCS and RCS manage chages to individual files, not groups of files
  35. (though both have some features which permit common identification of
  36. a given configuration of files, and both can be used on a group of
  37. files such that simultaneous, possibly empty, deltas can be done in
  38. order to maintain identical revision numbers).
  39.  
  40. This simple idea is crutial to understanding how to effectively and
  41. practically use such tools.
  42.  
  43. A simple configuration management scheme can be constructed with SCCS
  44. (or RCS) by keeping a release manifest which identifies the files
  45. present in a given configuration, together with the revision numbers
  46. of each of file.  A *very* simple script, when given the release
  47. manifest for a give version of the library, will then suffice to
  48. generate the source files necessary to build the product.
  49.  
  50. In the simple cases this manifest may itself be submitted to change
  51. management, and perhaps its revision number will then suffice as the
  52. version number for the entire product.
  53.  
  54. > |> According to the c.u.questions FAQ, RCS has a feature (symbolic names)
  55. > |> that might come close enough to what I want.  I lifted some BSD docs
  56. > |> from uunet but they weren't specific enough.
  57.  
  58. Indeed, this is one such configuration management feature, though it
  59. does not address the issues surrounding addidion or deletion (or
  60. re-naming) of source files from the product configuration definition.
  61. To do this a manifest is still required.
  62.  
  63. > |> Surely this is a common problem.  How do you handle it?  Should I
  64. > |> install RCS?  Should I get CVS instead?
  65.  
  66. Yup, it's a common problem.  Unfortunately it has until recently been
  67. a poorly understood problem, and most everone has had a different view
  68. and various opinions as to how best to solve it.  Only recently have
  69. folks begun to pay serious attention to the (not so) recent developments
  70. in the software engineering disciplines.
  71.  
  72. You should most definitely get CVS (1.3), but you'll have to get RCS
  73. (5.6) and GNU-diff (2.0) installed first.  It has a few quirks, and
  74. requires some TLC by the admin/librarian/whatever, but makes
  75. coniguration management a breeze, and regardless of the number of
  76. programmers working on a product (i.e. from one to ????), it permits a
  77. great deal of freedom, while still strictly enforcing merging of
  78. simultaneous changes and facilitating easy sharing of changes for
  79. multi-programmer products.  In addition, CVS is an essential tool to
  80. helping maintain local modifications to on-going releases of
  81. third-party sources.
  82.  
  83. Send mail to info-cvs-request@prep.ai.mit.edu to join the mailing
  84. list!  There's been lots of good discussion lately, and even a few
  85. patches!
  86.  
  87. > Hence when you edit a file for the first time in a release e.g. 5 set
  88. > the revision to 5.1 then follow the normal edit/delta cycle and when
  89. > you make the library simply set SCCSFLAGS to -r5. Alternately you can
  90. > check out all sources at the beginning of the release with the correct
  91. > revision and then check them back without changes, personally I prefer
  92. > the first method though it does require some thought. This isn't quite
  93. > what you asked for but I hope that it is what you want.
  94.  
  95. Indeed this will work, though it's only practical for a small group of
  96. files which can be clearly identified as source for a single given
  97. product.  In addition, this scheme also lacks the file manifest...
  98.  
  99. Another option, which has far more flexibility, is to use cutoff dates
  100. for the version identification.  I.e. the source file revisions for a
  101. given version of a product release might be identified by finding the
  102. most recent revision prior to a given date (and time).  This can be
  103. done with the '-c<cutoff>' option to SCCS's get command.  The drawback
  104. to this approach is that it requires that all development be frozen
  105. while testing and QA verifies that the current code is in working
  106. order.  In other words, this scheme is best used by single-developer
  107. projects.  An example of how you can tie all of this together with
  108. make(1) can be found in the forthcoming release of uutraf-2.0 in
  109. comp.sources.unix.
  110. -- 
  111.                         Greg A. Woods
  112.  
  113. woods@robohack.UUCP, woods@Elegant.COM  VE3TCP    UniForum Canada & ECI
  114. +1 416 443-1734 [home] +1 416 362-XRSA [work]    Toronto, Ontario; CANADA
  115.