2.4. Project Version Management Changes

This section contains all changes related to version management on project level, i.e. the creation and manipulation of bound and unbound configurations and change sets, or the commit and checkout of whole projects. Project version management is implemented primarily in prjm, but also used directly in ComPactHTTPd.

  ---- [ip] project status commands
  devel_prjm_d14_0_0:
    date: 1999/10/06 21:35:12;  author: wagner;  state: Exp;  lines: +1 -0
    solution for change request compact-prjm/11:

    `prjm' now can display the status of packages in a more readable form
    than with the `-showcache' command. The new options are

      -showshortstatus | -shortstatus | -shortstat | -sstat
      -showlongstatus  | -longstatus  | -longstat  | -lstat

    The shortstatus options print only the package tag and the version
    control status, while the longstatus options print all the cache
    attributes.

    The new commands can be regarded as the mapping of the -sstat
    option of pkg(v)m to all packages of a project.
       


  ---- [ip] local commit and autocommit of project packages
  devel_prjm_d15_0_0:
    date: 1999/11/11 23:56:50;  author: wagner;  state: Exp;  lines: +1 -0
    Several extensions have been implemented:
     o The formerly recognized but unimplemented options
       -commitlocal, -ciloc, -cil have been implemented and
       documented in the usage help.
     o The options -message, -msg, -file have been added to allow for
       commit messages from the command line or files.
     o The options -novc, -noversioncontrol have been added to disable
       version control for project files.
     o After creation of a new snapshot or release, all local files are
       now auto-committed to the repository unless -novc is specified.
     o The use of the state cache has been disabled to -showsnapshots
       and -showreleases.

    These changes require at least the following versions of libraries:
      devel_pkg=vc_d33_1_4
      devel_pkg=base_d22_4_0
      devel_prjbase_d28_0_0
       


  ---- [ip] improved default behaviour of command newrelease
  devel_prjm_d16_0_0:
    date: 1999/11/12 12:44:56;  author: wagner;  state: Exp;  lines: +1 -0
    Fix for PR 79:

    Change of -newrelease command: prjm now only creates new release
    branches for those packages that are not currently checked out as
    release. For the old behaviour the -forcerelease option must be
    used.

    UsageHelp has been updated accordingly.
       


  ---- [ip] new command makestablerelease
  devel_prjm_d17_0_0:
    date: 1999/11/12 15:41:36;  author: wagner;  state: Exp;  lines: +1 -0
    implementation for change request PR81:

    new command options -makestablerelease, -stablerelease, -makestable
    which create a named stable release branch mapping based on a
    release description
       


  ---- [] confirm checkout of missing packages
  devel_prjm_d17_0_1:
    date: 1999/11/15 23:58:11;  author: wagner;  state: Exp;  lines: +1 -0
    part of fix for PR38: packages are checked out without warning

    Prjm now passes a confirmation closure to the PrjDesc object it uses.
       


  ---- [ip] project diff listings
  devel_prjm_d18_0_0:
    date: 2000/01/31 16:57:13;  author: wagner;  state: Exp;  lines: +1 -0
    part of implementation for PR88 (prjm -diff|-cdiff|-udiff):
      This commit uses the extended versions of
      PrjDesc.T.applyToPackages() and selectPackages() as well as the
      extended PkgBase.DefaultData file containing actions diff, diff1,
      and diff2.

      The command options

        prjm [-k] -diff  [-t <snapshot1> [-t <snapshot2>]]
        prjm [-k] -cdiff [-t <snapshot1> [-t <snapshot2>]]
        prjm [-k] -udiff [-t <snapshot1> [-t <snapshot2>]]

      have been added, as well as the obligatory evaluation of the -t
      options for package selections. The UsageHelp has been extended by a
      short description of the diff commands.
       


  ---- [ip] change sets
  change set change-set-basics
    created by wagner at 2000.05.08.11.08.59
    description:
    Basic support for project-oriented change sets. 
    A ChangeSet module has been added to prjbase, the Snapshot module
    has been extended to handle change sets, pkg_base and pkg_vc now 
    export some additional functionality, and prjm has been extended
    by functions to create, edit, and apply change sets.
    package changes:
      prjbase       devel_prjbase_d32_0_1   devel_prjbase_d32_0_1
      prjm          devel_prjm_d18_0_2      devel_prjm_d18_0_2
      pkg_base      devel_pkg=base_d23_0_2  devel_pkg=base_d23_0_2
      pkg_vc        devel_pkg=vc_d33_1_11   devel_pkg=vc_d33_1_11

    This change set has not yet been propagated to the compact_1_1_stable
    configuration.
       


  ---- [f] change set change-set-and-diff-fixes-01
    created by wagner at 2000.05.25.12.54.12
    description:
    fixes for change sets and diffs:
     o state cache knows about merge actions and resets properly
     o PrjDesc.PackageUpdateSequence does no more crash with depGraph = NIL
     o change set command line are evaluated correctly
     o merge and diff actions are not executed in update order
    package changes:
      prjbase devel_prjbase_d33_0_1   devel_prjbase_d33_0_2
      prjm    devel_prjm_d19_0_3      devel_prjm_d19_0_4
       


  ---- [ip] change set feature-show-snapshot-and-package-paths
    created by wagner at 2000.06.06.16.40.29
    description:
    new command options have been added to prjm:

     |  -showsnapshot <n>*       | -showsnap <n>*    | -ssnap <n>*
     |  -showrelease <n>*        | -showrel <n>*     | -srel <n>*
     |  -showpackagepaths        | -showpkgpaths     | -spp

    Some ugly output handling has been cleaned up a bit, too.
    package changes:
      prjm  devel_prjm_d19_1_3      devel_prjm_d19_2_0
       


  ---- [] change set fix-prjm-checkout-some-packages-01
    created by wagner at 2000.06.06.17.43.05
    description:
    Checkout of some (not all) packages of a project using a given
    configuration would not work, but should now (hopefully).
    package changes:
      prjm  devel_prjm_d19_2_0      devel_prjm_d19_2_1
       


  ---- [im] change set feature-sort-snapshots-and-changesets
    created by wagner at 2000.08.09.12.43.54
    description:
    In package prjbase, data structures and interfaces to sort snapshots
    by name and change sets by name and type have been added. 
    The project manager now sorts lists of snapshots, releases, and change
    sets alphabetically by default, while the change set log is displayed
    in chronological order. Sorting order may be changed with the options
    -nosort, -byname, -bydate, -reverse, -down.
    package changes:
      prjbase       devel_prjbase_d35_0_1      devel_prjbase_d36_0_0
      prjm          devel_prjm_d21_0_0         devel_prjm_d22_0_0
      ComPactHTTPd  devel_ComPactHTTPd_d14_0_0 devel_ComPactHTTPd_d15_0_0
       


  ---- [ip] change set feature-snapshot-log-and-edit
    created by wagner at 2000.08.16.21.26.29
    description:
    Several commands have been added to the project manager to list
    snapshot and release logs and edit existing snapshots and releases:

         |  -showsnapshot [-l] <n>*  | -showsnap <n>*    | -ssnap <n>*
         |  -editsnapshot <n>        | -editsnap <n>     | -esnap <n>
         |  -snapshotlog [-mtime]    | -snaplog          | -ssl
         |  -showrelease [-l] <n>*   | -showrel <n>*     | -srel <n>*
         |  -editrelease <n>         | -editrel <n>      | -erel <n>
         |  -releaselog  [-mtime]    | -rellog           | -rl

    Some commands have been extended by an -l option to produce more 
    information when present.

    The gui has been extended to allow viewing snapshot and release logs
    as well as editing existing snapshots and releases. 
    The target window of several project version control status operations
    has been changed to Viewer.

    NOTE: GUI online help has not yet been updated to explain the new features.
    package changes:
      prjbase       devel_prjbase_d36_0_0      devel_prjbase_d37_0_0
      prjm          devel_prjm_d22_0_1         devel_prjm_d23_0_0
      ComPactHTTPd  devel_ComPactHTTPd_d16_1_0 devel_ComPactHTTPd_d17_0_0
       


  ---- [p] change set feature-external-commit-hook-extensions
    created by wagner at 2000.09.05.11.01.04
    description:
    There are now several more external hooks that are checked for different
    actions:

      package-commit                -> external-package-commit-hook
      package-release               -> external-package-release-hook
      project-snapshot              -> external-project-snapshot-hook
      project-release               -> external-project-release-hook
      project-change-set            -> external-project-change-set-hook

    If one of the above hooks is not set, but external-commit-hook is
    defined, this is used as the default.

    In the external command specified in compactrc to check the commit or
    log message, three additional variables may be specified:

      action      action name as above
      name        name of the new version, snapshot, release, or change set
      id          request id extracted from the log message, if present

    For the creation of change sets, the order of commit message requests
    and checks has been changed: Now the change set message is requested
    first (before any committing takes place), and it may be re-used as local
    commit message.
    package changes:
      prjm       devel_prjm_d24_0_2      devel_prjm_d25_0_1
      pkg_vc     devel_pkg=vc_d37_0_0    devel_pkg=vc_d38_0_0
       


  ---- [f] change set fix-accept-unchanged-cslogs
    created by wagner at 2000.09.06.18.11.48
    description:
    The project manager creates a meaningful local commit message for
    change sets. Until now this message would be discarded if it was not
    changed, as this was the default behaviour of PkgVCUtils.GetMessage.
    package changes:
      prjm          devel_prjm_d26_0_0      devel_prjm_d26_0_1
      pkg_vc        devel_pkg=vc_d38_0_0    devel_pkg=vc_d38_0_1
       


  ---- [f] change set fix-rcsdate-conversions
    created by wagner at 2000.11.03.14.22.31
    description:
    RCS date conversion (ToTime) was totally broken on non-POSIX systems,
    since these usually don't work with an epoch of 1970. The relevant
    code now checks if it is running on a POSIX or a WIN32 platform and
    takes appropriate actions. RCS dates are checked for correctness
    before they are processed. If any element has an impossible value, an
    exception is raised by ToTime. ToTimeApprox has been added to allow
    for more lenient error handling: it never raises an exception;
    instead, it issues an error message and tries to correct the values.

    In the prjbase package now ToTimeApprox is used throughout, which
    should fix crashes of prjm and ComPactHTTPd due to incorrect RCS
    dates.
    package changes:
      prjbase       devel_prjbase_d37_0_9   devel_prjbase_d37_0_10
       


  ---- [f] change set fix-prjm-no-internal-pkg-release
    created by wagner at 2000.11.20.16.33.02
    description:
    The project manager no more tries to release packages on its own,
    but rather relies on the package manager or the version manager for
    this task. This is important, because if the package can be built then 
    it _must_ be built before a meaningful release can be made, and only
    the package manager knows how to do this. 

    This also implies that before any commitrelease actions on project level,
    all the package dependencies must be known.

    This change has temporarily been backed out because it breaks the
    newrelease action of prjm. New strategies must be considered.
    package changes:
      prjbase  devel_prjbase_d37_0_11  devel_prjbase_d37_0_12
      prjm     devel_prjm_d26_0_4      devel_prjm_d26_0_5
       


  ---- [i] change set feature-add-missing-import-export
    created by wagner at 2000.12.11.10.42.24
    description:
    This change set adds the commands

      -export <name> <fn>  | -exp <name> <fn>
      -import <fn> <name>  | -imp <fn> <name>

    to the project manager, which can be used to import change sets,
    snapshot and release descriptions from ordinary text files and vice
    versa. These are currently more or less convenience methods, since the
    files are kept in the snaps subdirectory, but are randomly
    named. Future versions may need these functions to import/export
    information from a relational database. Anyway, a syntax check is
    performed on every import.
    package changes:
      prjm  devel_prjm_d26_0_8      devel_prjm_d26_1_2
       


  ---- [f] change set fix_log_message_cleanup
    created by wagner at 2000.12.10.16.43.07
    description:
    cleanup of log message handling for package commits, releases,
    project change sets, project snapshots and releases, and project stable
    configurations:

     o PKG: lines are now always removed from the message (there were some
       cases where they were left inside)
     o appropriate local commit messages are now always suggested by the
       project manager
     o local commit messages are extended if necessary by some action 
       related information by the project manager
    package changes:
      prjm    devel_prjm_d26_0_7      devel_prjm_d26_0_8
      pkg_vc  devel_pkg=vc_d38_1_10   devel_pkg=vc_d38_1_11