Author: FCM team

# FCM: User Guide: Annex: Declarations in FCM 1 central/user configuration file

The deprecated FCM 1 commands, i.e. `fcm build`, `fcm cmp-ext-cfg` and `fcm extract`, can modify their settings using the central and user configuration files at:

- `$FCM/etc/fcm.cfg` where $FCM/bin/ is the path at which `fcm` is installed.
- `$HOME/.fcm`.

Note:

- The detail of the above settings will remain undocumented. For further information, please refer to the Perl module `FCM1::Config`, which should be located at `lib/FCM1/Config.pm` in your FCM distribution.
- Setting labels in both files are case insensitive.

The following deprecated settings related to FCM keywords will no longer work in `$FCM/etc/fcm.cfg` but will continue to work in `$HOME/.fcm`. However, it would be desirable to migrate these settings to their equivalents in `$HOME/.metomi/fcm/keyword.cfg` as documented in Annex: FCM Configuration File > FCM Keyword Configuration.

SET::URL::<pck>
SET::REPOS::<pck>

  `$HOME/.metomi/fcm/keyword.cfg` equivalent: `location` or `location{primary}`.

  This declares a URL keyword for the package <pck>. The value of the declaration must be a valid Subversion <URL>. Once declared, the URL keyword <pck> will be associated with the specified URL. In subsequent invocations of the `fcm` command, the following expansion may take place:

  - `fcm:<pck>`: replaced by `<URL>`.
  - `fcm:<pck>_tr` or `fcm:<pck>-tr`: replaced by `<URL>/trunk`
  - `fcm:<pck>_br` or `fcm:<pck>-br`: replaced by `<URL>/branches`
  - `fcm:<pck>_tg` or `fcm:<pck>-tg`: replaced by `<URL>/tags`

  Example:

      # Associate "var" with "svn://server/VAR_svn/var"
      set::url::var  svn://server/VAR_svn/var

      # "fcm:var" is now the same as "svn://server/VAR_svn/var"

SET::REVISION::<pck>::<keyword>

  `$HOME/.metomi/fcm/keyword.cfg` equivalent: `revision`.

  This declares <keyword> to be the revision number for the package <pck>. The <keyword> string can contain any characters except spaces. It must not contain only digits (as digits are treated as revision numbers). It must not be the Subversion revision keywords HEAD, BASE, COMMITTED and PREV. It cannot begin and end with a pair of curly brackets (as this will be parsed as a revision date). The package <pck> must be associated with a URL using the SET::URL::<pck> declaration described above before this declaration can make sense. Once defined, <keyword> can be used anywhere in place the defined revision number.

  Example:

      set::revision::var::v22.0  8410

      # E.g. "fcm list -r v22.0 fcm:var" is now the same as
      #      "fcm list -r 8410 fcm:var".

SET::URL_BROWSER_MAPPING_DEFAULT::<key>

  `$HOME/.metomi/fcm/keyword.cfg` equivalent: `browser.comp-pat`, `browser.loc-tmpl`, and `browser.rev-tmpl`.

  These declarations are used to change the global default for mapping a version control system URL to its corresponding web browser URL. <key> can be LOCATION_COMPONENT_PATTERN, BROWSER_URL_TEMPLATE or BROWSER_REV_TEMPLATE.

  Example:

      set::url_browser_mapping_default::location_component_pattern ^//([^/]+)/(.*)$
      set::url_browser_mapping_default::browser_url_template http://{1}/intertrac/source:{2}{3}
      set::url_browser_mapping_default::browser_rev_template @{1}

SET::URL_BROWSER_MAPPING::<pck>::<key>

  `$HOME/.metomi/fcm/keyword.cfg` equivalent: `browser.comp-pat`, `browser.loc-tmpl`, and `browser.rev-tmpl`.

  Similar to SET::URL_BROWSER_MAPPING_DEFAULT::<key>, but settings only apply to the specified <pck>.

  Example:

      set::url_browser_mapping::var::location_component_pattern ^//([^/]+)/(.*)$
      set::url_browser_mapping::var::browser_url_template http://{1}/intertrac/source:{2}{3}
      set::url_browser_mapping::var::browser_rev_template @{1}