FCM System User Guide > FCM Command Reference

FCM Command Reference

fcm Configuration File

The FCM system uses simple line based text files to store configuration settings. All configuration files used by FCM are based on the same principles:

The FCM central and user configuration files can be used to add or modify some of the default settings of FCM. When the fcm command is invoked, it normally attempts to search for a central configuration file at $BINDIR/../etc/fcm.cfg and then $BINDIR/fcm.cfg, where $BINDIR is the container directory of the fcm command. If a central configuration file can be located, the settings in the file will replace the pre-defined ones. After searching/reading the central configuration file, the system will attempt to search for a user configuration file located at $HOME/.fcm of the current user. If such a file can be found, its settings will replace the pre-defined ones as well as those defined in the central configuration file.

For information on the valid entries in the central and user configuration files, please refer to the Annex: Declarations in FCM central/user configuration file.

fcm build

Usage

fcm build [OPTIONS...] [CFGFILE]

Description

fcm build invokes the FCM build system.

The path to a valid build configuration file CFGFILE may be provided as either a URL or a pathname. Otherwise, the build system searches the default locations for a build configuration file.

If no option is specified, the system uses the "-s 5 -t all -j 1 -v 1" by default.

For further details, please refer to the chapter on The Build System.

Alternate Names

bld

fcm extract

Usage

fcm extract [OPTIONS...] [CFGFILE]

Description

fcm extract invokes the FCM extract system.

The path to a valid extract configuration file CFGFILE may be provided as either a URL or a pathname. Otherwise, the extract system searches the default locations for an extract configuration file.

For further details, please refer to the chapter on The Extract System.

Alternate Names

ext

fcm cmp-ext-cfg

Usage

fcm cmp-ext-cfg [--verbose (-v)] [--wiki (-w) arg] CFG1 CFG2

Description

fcm cmp-ext-cfg compares the extract configurations of two similar extract configuration files CFG1 and CFG2. It reports repository branches and source directories that are declared in one file but not another. If a source directory is declared in both files, it compares their versions. If they differ, it uses svn log to obtain a list of revision numbers at which changes are made to the source directory. It then reports, for each declared repository branch, the revisions at which changes occur in their declared source directories.

The list of revisions for each declared repository branch is normally printed out as a simple list in plain text.

fcm gui

Usage

fcm gui [DIR]

Description

fcm gui starts up the FCM GUI. If DIR is specified then this is used as the working directory.

For further details, please refer to the section Using the GUI.

fcm Subversion Subcommands

This section describes all of the Subversion related commands supported by fcm.

fcm add

Usage

fcm add --check (-c)

fcm add <any valid svn add options>

Description

fcm add supports all of the switches and arguments supported by svn add (refer to the Subversion book for details).

In addition, fcm add supports a --check switch (no other switches or arguments). When this is specified then fcm checks for any files which are not currently under version control (i.e. those marked with a "?" by svn status) and prompts to see if you wish to schedule them for addition at the next commit (using svn add).

For further details refer to the section Adding and Removing Files.

fcm branch

Usage

fcm branch [--info (-i)] [--verbose (-v)] [--show-children] [--show-siblings] [--show-other] [--show-all (-a)] [TARGET]

fcm branch --delete (-d) [--verbose (-v)] [--show-children] [--show-siblings] [--show-other] [--show-all (-a)] [--svn-non-interactive] [--non-interactive] [--password arg] [TARGET]

fcm branch --create (-c) --name (-n) arg [--type (-t) arg] [--rev-flag arg] [--ticket (-k) arg] [--branch-of-branch] [--svn-non-interactive] [--non-interactive] [--password arg] [--revision arg] [TARGET]

fcm branch --list (-l) [--user (-u) arg] [--verbose (-v)] [--revision arg] [TARGET]

Description

If TARGET is specified, it must either be a URL or a path to a local working copy. Otherwise, the current working directory must be a working copy. For --info and --delete, the specified URL or that of the working copy must be a valid branch (including the trunk) in a standard FCM project. For --create and --list, it must be a valid URL of a standard FCM project.

fcm branch --info displays information about a branch.

fcm branch --delete deletes a branch.

fcm branch --create creates a new branch.

fcm branch --list lists the branches created by you (and/or other users) at the HEAD revision of a standard FCM project.

Alternate Names

br

fcm commit

Usage

fcm commit [--dry-run] [--svn-non-interactive] [--password arg] [PATH]

Description

fcm commit sends changes from your working copy in the current working directory (or from PATH if it is specified) to the repository.

For further details refer to the section Committing Changes.

Alternate Names

ci

fcm conflicts

Usage

fcm conflicts [PATH]

Description

fcm conflicts helps you to resolve any text files in your working copy which have conflicts by using the graphical merge tool xxdiff. If PATH is set, it must be a working copy, and the command will operate in it. If PATH is not set, the command will operate in your current working directory.

This command performs the following actions:

For further details refer to the section Resolving Conflicts.

Alternate Names

cf

fcm delete

Usage

fcm delete --check (-c)

fcm delete <any valid svn delete options>

Description

fcm delete supports all of the switches, arguments and alternate names supported by svn delete (refer to the Subversion book for details).

For further details refer to the section Adding and Removing Files.

fcm diff

Usage

fcm diff --branch (-b) [--graphical (-g) | --diff-cmd arg [--extensions (-x) arg] | --summarize (--summarise) | --wiki | --trac (-t)] [TARGET]

fcm diff [--graphical (-g) | --diff-cmd arg [--extensions (-x) arg] | --summarize (--summarise)] <any valid svn diff options>

Description

fcm diff supports all of the switches, arguments and alternate names supported by svn diff (refer to the Subversion book for details). In addition, fcm diff supports the following switches:

For further details refer to the section Examining Changes.

fcm merge

Usage

fcm merge [--dry-run] [--non-interactive] [--verbose (-v)] SOURCE

fcm merge --custom --revision N[:M] [--dry-run] [--non-interactive] [--verbose (-v)] SOURCE

fcm merge --custom [--dry-run] [--non-interactive] [--verbose (-v)] URL1[@REV1] URL2[@REV2]

fcm merge --reverse --revision [M:]N [--dry-run] [--non-interactive] [--verbose (-v)]

Description

fcm merge allows you to merge changes from a source into your working copy.

Before it begins, the command does the following:

If neither --custom nor --reverse is specified, the command defaults to the automatic mode. Automatic merges are used to merge changes between two directly related branches, (i.e. the branches must either be created from the same parent or have a parent/child relationship). These merges are tracked by FCM and can be used by subsequent FCM commands. The merge delta is calculated by doing the following:

The --custom mode is useful if you need to merge changes selectively from another branch. The custom mode can be used in two forms:

N.B. Unlike automatic merges, custom merges are not tracked or used by subsequent FCM diff or merge commands, (although branch --info can be set to report them). Custom merges are always allowed, even if your working copy is pointing to a sub-tree of a branch. However, there is no checking mechanism to ensure the safety of your sub-tree custom merge so you should only do this if you are confident it is what you want. Therefore, it is recommended that you use automatic merges where possible, and use custom merges only if you know what you are doing.

The --reverse mode is useful if you need to reverse a changeset (or a range of changesets) in the current branch of the working copy. In this mode, you must specify a revision (range) using the --revision option. If you specify a single revision N, the merge delta is between revision N and revision N - 1 of the current branch. Otherwise, the merge delta is between revision M and revision N, where M > N.

N.B. Like custom merges, reverse merges are not tracked or used by subsequent FCM diff or merge commands, (although branch --info can be set to report them). Likewise, reverse merges in sub-trees are always allowed, although there is no checking mechanism to ensure the safety of your sub-tree reverse merge.

Once the merge delta is determined, the command performs the following:

For further details refer to the section Merging.

fcm mkpatch

Usage

fcm mkpatch [OPTIONS] URL [OUTDIR]

Description

fcm mkpatch creates patches from the specified revisions of the specified URL, which must be a branch URL of a valid FCM project. If the URL is a sub-directory of a branch, it will use the root of the branch.

If OUTDIR is specified, the output is sent to OUTDIR. Otherwise, the output will be sent to a default location in the current directory ($PWD/fcm-mkpatch-out/). The output directory will contain the patch for each revision as well as a script for importing the patch.

If a revision is specified using the --revision option, it will attempt to create a patch based on the changes at that revision. If a revision is not specified, it will attempt to create a patch based on the changes at the HEAD revision. If a revision range is specified, it will attempt to create a patch for each revision in that range (including the change in the lower range) where changes have taken place in the URL. No output will be written if there is no change in the given revision (range).

The --exclude option can be used to exclude a path in the URL. The specified path must be a relative path of the URL. Glob patterns such as * and ? are acceptable. Changes in an excluded path will not be considered in the patch. A changeset containing changes only in the excluded path will not be considered at all. Multiple paths can be specified by using a colon-separated list of paths, or by specifying this option multiple times.

The --organisation option can be used to specify the name of your organisation. The command will attempt to parse the commit log message for each revision in the patch. It will remove all merge templates, replace Trac links with a modified string, and add information about the original changeset. If you specify the name of your organisation, it will replace Trac links such as "ticket:123" with "$organisation_ticket:123", and report the orginal changeset with a message such as "$organisation_changeset:1000". If the organisation name is not specified then it defaults to "original".

Within the output directory are the "patches" and the log message file for each revision. It also contains a generated script fcm-import-patch for importing the patches. The user of the script can invoke the script with either a URL or a working copy argument, and the script will attempt to import the patches into the given URL or working copy.

It is worth noting that changes in Subversion properties, including changes in executable permissions, are not handled by the import script.

fcm switch

Usage

fcm switch [OPTIONS] URL [PATH]

fcm switch --relocate [OPTIONS] FROM TO [PATH]

Description

fcm switch supports the arguments and alternate names supported by svn switch. If --relocate is specified, it supports all options supported by svn switch. Otherwise, it supports --non-interactive, -r [--revision] and -q [--quiet] only. (Please refer to the Subversion book for details).

If --relocate is specified, FCM will pass the options and arguments directly to the corresponding Subversion command. Otherwise, FCM will ensure that your working copy switches safely through the following actions:

For further details refer to the section Switching your working copy to point to another branch.

fcm trac

Usage

fcm trac [--browser (-b) ARG] [PATH]

Description

fcm trac invokes the web-browser to launch the corresponding URL of the web-based repository browser (currently Trac browser) to view the Subversion repository specified by PATH.

Alternate Names

www

Other Subversion Commands

Other svn commands are supported by fcm without any change in functionality, with the following minor enhancements:

The following is a list of the commands:

Please refer to the Subversion Complete Reference in the Subversion book for details of these commands.