DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(cvs.info.gz) Configuring keyword expansion

Info Catalog (cvs.info.gz) Substitution modes (cvs.info.gz) Keyword substitution (cvs.info.gz) Log keyword
 
 12.5 Configuring Keyword Expansion
 ==================================
 
 In a repository that includes third-party software on vendor branches,
 it is sometimes helpful to configure CVS to use a local keyword instead
 of the standard $Id$ or $Header$ keywords. Examples from real projects
 include $Xorg$, $XFree86$, $FreeBSD$, $NetBSD$, $OpenBSD$, and even
 $dotat$.  The advantage of this is that you can include your local
 version information in a file using this local keyword (sometimes
 called a "custom tag" or a "local tag") without disrupting the upstream
 version information (which may be a different local keyword or a
 standard keyword). In these cases, it is typically desirable to disable
 the expansion of all keywords except the configured local keyword.
 
    The `KeywordExpand' option in the `CVSROOT/config' file is intended
 to allow for the either the explicit exclusion of a keyword or list of
 keywords, or for the explicit inclusion of a keyword or a list of
 keywords. This list may include the `LocalKeyword' that has been
 configured.
 
    The `KeywordExpand' option is followed by `=' and the next character
 may either be `i' to start an inclusion list or `e' to start an
 exclusion list. If the following lines were added to the
 `CVSROOT/config' file:
 
              # Add a "MyBSD" keyword and restrict keyword
              # expansion
              LocalKeyword=MyBSD=CVSHeader
              KeywordExpand=iMyBSD
 
    then only the $MyBSD$ keyword would be expanded.  A list may be
 used. The this example:
 
              # Add a "MyBSD" keyword and restrict keyword
              # expansion to the MyBSD, Name and Date keywords.
              LocalKeyword=MyBSD=CVSHeader
              KeywordExpand=iMyBSD,Name,Date
 
    would allow $MyBSD$, $Name$, and $Date$ to be expanded.
 
    It is also possible to configure an exclusion list using the
 following:
 
              # Do not expand the non-RCS keyword CVSHeader
              KeywordExpand=eCVSHeader
 
    This allows CVS to ignore the recently introduced $CVSHeader$
 keyword and retain all of the others. The exclusion entry could also
 contain the standard RCS keyword list, but this could be confusing to
 users that expect RCS keywords to be expanded, so care should be taken
 to properly set user expectations for a repository that is configured
 in that manner.
 
    If there is a desire to not have any RCS keywords expanded and not
 use the `-ko' flags everywhere, an administrator may disable all
 keyword expansion using the `CVSROOT/config' line:
 
      	# Do not expand any RCS keywords
      	KeywordExpand=i
 
    this could be confusing to users that expect RCS keywords like $Id$
 to be expanded properly, so care should be taken to properly set user
 expectations for a repository so configured.
 
    It should be noted that a patch to provide both the `KeywordExpand'
 and `LocalKeyword' features has been around a long time. However, that
 patch implemented these features using `tag=' and `tagexpand=' keywords
 and those keywords are NOT recognized.
 
Info Catalog (cvs.info.gz) Substitution modes (cvs.info.gz) Keyword substitution (cvs.info.gz) Log keyword
automatically generated byinfo2html