ClearCase::Wrapper::MGi
==================================

PURPOSE

This is an overlay module for ClearCase::Wrapper. See the POD for that
module. It is built following the example of ClearCase::Wrapper::DSB.
The extensions contained here are meant to support a consistent
branching policy, advocated in:
 http://www.cmcrossroads.com/cgi-bin/cmwiki/view/CM/BranchYesMergeNo
Beyond this module, changes were also made to ClearCase::SyncTree,
which closely relate to the same purpose.
My intentions are to make this module orthogonal to the DSB ones, so
that they might be installed separately, or together.

INSTALLATION

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

VERSIONS

Notice as from ClearCase::Wrapper::DSB--there is no strict correlation
between versions of the base module and overlay modules. I.e. you do
not necessarily need ClearCase::Wrapper::DSB 1.04 if you have
ClearCase::Wrapper 1.04.  If an overlay requires a certain feature in
the base module this dependency will be noted in the prerequisites
within Makefile.PL.  In other words, if the install sequence doesn't
generate a warning you should be ok.

DEPENDENCIES

  ClearCase::Wrapper

  Even if ClearCase::Wrapper::DSB is not a dependency, the extension
to catcs developed in it is compatible with the extension of config
specs presented here, and can be used to display it.

KNOWN BUGS AND MISSING FEATURES

  - No tests provided.
  - The view attribute is not searched from included config spec
    fragments.
  - The treatment of -ver and -bra options is problematic:
    - their effect on one argument overrides any -mkbranch behaviour,
      whether off root or not (respected)
    - the problem is with multiple options, and their order, in the
      default cleartool behaviour:
      - a -ver option is self-sufficient so that a later -bra option
	only applies to following arguments if any;
      - a -bra option followed with a -ver one are considered mutually
	exclusive;
      - only one single -ver or -bra option (of each) can be given.
    - the wrapper does not try to consider the order of the options,
      and thus return to the default behaviour if any is gievn.

Many more functions need to be modified in order to support the
'BranchOff: root' functionality:
  - describe -fmt "%Pn": should return a merge contributor, unless a
    direct parent is found on the same branch
  - diff -pred: should as well be extended
  - ls: should mention '-off /{root}' if 'BranchOff: root' is set
  - lsgen: should support a -graphical option
  - synctree: should be added as an operation, with a -from syntax.

I don't intend (for now) to modify findmerge, on the following
grounds:
  - the only common usage pattern under 'BranchOff: root' is the 'home
    merge', i.e. merging towards one's changes, already in a branch.
  - the purpose of branching off the root of the version tree is to
    avoid cascading far away; few levels of cascading are innocuous.

An other functionality is needed to support in-place publication,
directly from the development branches, in order to make the
application of labels cheaper than it currently is.

The intended strategy is to support yet another 'view attribute':
'##:TypeFamilies: incremental'.
Preliminary documentation can be found at:
  http://www.cmcrossroads.com/cgi-bin/cmwiki/view/CM/LabelFamily
  http://www.cmcrossroads.com/cgi-bin/cmwiki/view/CM/IncrementalTypesImp

COPYRIGHT AND LICENCE

Copyright (c) 2007 IONA Technologies PLC (mgirod@iona.com). All rights
reserved. This Perl program is free software; you may redistribute it
and/or modify it under the same terms as Perl itself.
