/* -*-Mode: C;-*- * PRCS - The Project Revision Control System * Copyright (C) 1996, 1997 Josh MacDonald * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * This file was automatically generated by Emacs and the source * file /home/jmacd/nfs/projects/prcs1/doc/prcs.texi at Sun May 9 17:41:14 2004: DO NOT EDIT. */ #include "prcs.h" #include "syscmd.h" #include "docs.h" SystemCommand rcs_command(@SYS_RCS_COMMAND_PATH@, "RCS_PATH"); SystemCommand ci_command(@SYS_CI_COMMAND_PATH@, "RCS_PATH"); SystemCommand co_command(@SYS_CO_COMMAND_PATH@, "RCS_PATH"); SystemCommand rlog_command(@SYS_RLOG_COMMAND_PATH@, "RCS_PATH"); SystemCommand tar_command(@SYS_TAR_COMMAND_PATH@, "RCS_PATH"); SystemCommand gdiff3_command(@SYS_GDIFF3_COMMAND_PATH@, "RCS_PATH"); SystemCommand gdiff_command(@SYS_GDIFF_COMMAND_PATH@, "RCS_PATH"); SystemCommand ls_command(@SYS_LS_COMMAND_PATH@, "RCS_PATH"); SystemCommand gzip_command(@SYS_GZIP_COMMAND_PATH@, "RCS_PATH"); const int env_names_count = 10; const EnvName env_names[] = { { "TMPDIR", @DEFAULT_ENV_TMPDIR@ }, { "RCS_PATH", @DEFAULT_ENV_RCS_PATH@ }, { "PRCS_REPOSITORY", @DEFAULT_ENV_PRCS_REPOSITORY@ }, { "PRCS_PLAIN_FORMAT", @DEFAULT_ENV_PRCS_PLAIN_FORMAT@ }, { "PRCS_MERGE_COMMAND", @DEFAULT_ENV_PRCS_MERGE_COMMAND@ }, { "PRCS_LOGQUERY", @DEFAULT_ENV_PRCS_LOGQUERY@ }, { "PRCS_JOB_NUMBER", @DEFAULT_ENV_PRCS_JOB_NUMBER@ }, { "PRCS_DIFF_OPTIONS", @DEFAULT_ENV_PRCS_DIFF_OPTIONS@ }, { "PRCS_DIFF_COMMAND", @DEFAULT_ENV_PRCS_DIFF_COMMAND@ }, { "PRCS_CONFLICT_EDITOR", @DEFAULT_ENV_PRCS_CONFLICT_EDITOR@ } }; const char options_summary[] = " - Option: --all\n" " Used in `prcs execute' to indicate that the specified command is\n" " to be executed just once, with all files as arguments.\n" "\n" " - Option: -d\n" " - Long Form: --delete\n" " Tells PRCS to perform some optional deletion action. Used by\n" " `prcs populate' to indicate that files that are not present in a\n" " working directory are to be removed from the Files list.\n" "\n" " - Standard Option: -f\n" " - Long Form: --force\n" " Force: resolve what would normally be interactive queries in\n" " some fixed way, depending on the subcommand, assuring that PRCS\n" " will never use the standard input.\n" "\n" " - Standard Option: -h\n" " - Standard Option: -H\n" " - Long Form: --help\n" " Prints out help very similar to the contents of this section.\n" "\n" " - Option: -i\n" " - Long Form: --immediate\n" " Causes certain actions to occur immediately during execution of\n" " a command. For `prcs uncompress', causes the files in a project\n" " to be uncompressed on the spot, rather than incrementally as\n" " they are needed.\n" "\n" " - Standard Option: -j number\n" " - Long Form: --jobs=NUMBER\n" " Allows PRCS to spawn up to NUMBER child processes at once.\n" " Almost always, 2 or 3 will result in faster operations and higher\n" " machine load. Experimentation will yield the best results.\n" "\n" " - Option: -k\n" " - Long Form: --keywords\n" " Causes `prcs diff' to compare keywords, instead of stripping them\n" " before comparison.\n" "\n" " - Standard Option: -l\n" " - Long Form: --long-format\n" " - Standard Option: -L\n" " - Long Form: --long-long-format\n" " Various long formats, depending on the subcommand.\n" "\n" " - Option: --match pattern\n" " Used in `prcs execute' to indicate that the names of the files\n" " to be processed, or the options attached to them, must match\n" " PATTERN.\n" "\n" " - Standard Option: -n\n" " - Long Form: --no-action\n" " Indicates that the command is to report what would happen in the\n" " absence of `-n', without changing working files or the\n" " repository.\n" "\n" " - Option: -N\n" " - Long Form: --new\n" " In `prcs diff', produces comparisons against empty (\"new\") files\n" " where a file is missing in one of the versions being compared.\n" " If you intend to use the -N option and later apply the diffs you\n" " should make sure to always use one of the context diff formats.\n" " See the PRCS_DIFF_OPTIONS environment variable *Note Environment\n" " Variables::.\n" "\n" " - Option: --no-keywords\n" " Causes `prcs populate' to add all files with the :no-keywords\n" " attribute.\n" "\n" " - Option: --not pattern\n" " Used in `prcs execute' to indicate that the names of files to be\n" " processed, or the options attached to them, must not match\n" " PATTERN.\n" "\n" " - Option: --pipe\n" " Causes `prcs execute' to supply file data as the standard input.\n" "\n" " - Option: -p\n" " - Long Form: --preserve, -@b{-}preserve-permissions,\n" " -@b{-}permissions\n" " Preserve permissions on files that are checked out, ignoring any\n" " standard protections the user may have set for newly-created\n" " files (as by the file mode creation mask in UNIX).\n" "\n" " - Option: -P\n" " - Long Form: --exclude-project-file\n" " Prevent situations where the project file may be treated as an\n" " ordinary file. For example, this causes `prcs diff' not to\n" " output changes in the project files of each version.\n" "\n" " - Standard Option: --plain-format\n" " Turns off PRCS's default formatting of its output, which is to\n" " break lines at the screen width and surround filenames with\n" " single quotes. Setting the PRCS_PLAIN_FORMAT environment\n" " variable has the same effect (*note Environment Variables::).\n" "\n" " - Option: --pre\n" " Used in `prcs execute' to indicate that directories are to be\n" " listed in pre-order: directory names first, then their\n" " non-directory contents, then subdirectories.\n" "\n" " - Standard Option: -q\n" " - Long Form: --quiet\n" " Suppress normal informational messages.\n" "\n" " - Option: -r version\n" " - Long Form: --revision=VERSION\n" " Identifies a version of a project. The VERSION is a version\n" " specifier. *Note Version Names and Specifiers::. The space\n" " between `-r' and VERSION is optional.\n" "\n" " - Standard Option: -R directory\n" " - Long Form: --repository=DIRECTORY\n" " Use DIRECTORY as the repository, ignoring the value of the\n" " `PRCS_REPOSITORY' environment variable.\n" "\n" " - Standard Option: -s\n" " - Long Form: --skilled-merge\n" " Turn off most of the safety features of `prcs merge', allowing a\n" " skilled user finer control over the process. *Note merge::.\n" "\n" " - Option: --sort=TYPE\n" " Set the type of sorting for the info command to perform on its\n" " output. The two valid values for TYPE are `version' and `date'.\n" " The default is VERSION.\n" "\n" " - Option: -u\n" " - Long Form: --unlink\n" " When PRCS writes a working file or the project file, it\n" " generally does so by replacing any existing file of that name.\n" " With this option, however, if the file to be written is a\n" " symbolic link, that link is removed and a new file is created.\n" " Thus, the file that was originally linked to is unchanged.\n" "\n" " - Standard Option: -v\n" " - Long Form: --version\n" " Prints the version of PRCS and exits.\n" "\n" " - Option: --version-log=NEW VERSION LOG\n" " Causes `prcs checkin' to set the Version-Log on the command line.\n" " You will be prompted if there is an existing New-Version-Log\n" " already. This option overrides the PRCS_LOGQUERY environment\n" " variable.\n" "\n" " - Option: -z\n" " - Long Form: --compress\n" " Indicates that a command should perform (de)compression.\n" ; const char checkout_help_string[] = " - Command: prcs checkout [option ...] [project [file-or-dir ...]]\n" " ADDITIONAL OPTIONS: `-r', `-p', `-u', `-P'\n" "\n" " Create a working copy of a version of the specified files and\n" " directories in PROJECT rooted in the current directory (creating\n" " any subdirectories that don't exist). You may use the option\n" " `-r' to select a version. The default major and minor version\n" " specifiers are both `@'.\n" "\n" " You will be warned when a check-out would change the contents of\n" " an existing working file, and interactively given the choice of\n" " replacing the file with the version being checked out, or\n" " leaving the existing file alone. Existing working files that do\n" " not differ from corresponding project files are not modified\n" " (their changed and modified dates do not change). The `-f'\n" " option will cause checkout to overwrite all files that differ\n" " without asking.\n" "\n" " When PRCS overwrites a working file that is a symbolic link,\n" " then (unless the `:symlink' option is specified for that file),\n" " it will overwrite the file that the link references, without\n" " changing the link itself. With the `-u' option, PRCS will\n" " instead remove the link and create a new file.\n" "\n" " If a working project-version descriptor for PROJECT exists, then\n" " the project-version descriptor is treated as an ordinary file\n" " for purposes of check-out. A check-out with a non-defaulted\n" " FILE-OR-DIR list that does not contain the descriptor therefore\n" " leaves the descriptor unchanged. Further, if the `-P' option is\n" " supplied, the project descriptor will not be created at all.\n" "\n" " Files that are checked out are restored to the protections\n" " recorded for them at check-in time, usually modified (on UNIX\n" " systems) by the user's file mode creation mask (see the UNIX\n" " manual entry for umask(1)). With the `-p' option, this mask is\n" " ignored, and the command restores the files' protections to\n" " exactly their state at check-in.\n" "\n" " Returns a status code of 0 if all goes well, and non-zero if\n" " there are errors.\n" ; const char populate_help_string[] = " - Command: prcs populate [option ...] [project [file-or-dir ...]]\n" " ADDITIONAL OPTIONS: `-d', `-u', `--no-keywords'\n" "\n" " Add each file in the FILE-OR-DIR list to the Files list of the\n" " `.prj' file identified by PROJECT, without modifying the\n" " repository. For each directory in FILE-OR-DIR, recursively adds\n" " all files in that directory structure (or the directory itself,\n" " if it is empty). The FILE-OR-DIR operand list defaults to the\n" " current directory.\n" "\n" " Without the `-d' option, any files already in the Files list\n" " remain there unchanged. With `-d', populate will prompt you\n" " about removing files from the Files list that are listed there\n" " as appearing under one of the directories given in the\n" " FILE-OR-DIR list, but are not found in the working directory.\n" " With `-d' and `-f', it will remove them silently.\n" "\n" " For example, suppose the file `P.prj' lists files `C', `D1/A',\n" " `D1/B', `D2/A', `D2/B'. Suppose a working directory contains\n" " files `A', `D1/B', and `D2/B'. Then the command\n" "\n" " prcs populate -d P\n" "\n" " would remove files `C', `D1/A', and `D2/A' from the Files list\n" " of `P.prj', and add file `A'. For the same initial `P.prj'\n" " file, the command\n" "\n" " prcs populate -d P D1\n" "\n" " would remove `D1/A' from `P.prj', and would add nothing.\n" "\n" " New files are added with null internal file identifiers.\n" " Populate attempts to fill in the `:symlink' and `:directory'\n" " options. It also applies a heuristic test to each file added to\n" " guess whether it is a non-text file; for each file it judges to\n" " be a non-text file, it includes the `:no-keywords' option for\n" " that file (*note Files attribute::).\n" "\n" ; const char depopulate_help_string[] = " - Command: prcs depopulate [option ...] [project [file-or-dir ...]]\n" " ADDITIONAL OPTIONS: `-u'\n" "\n" " Remove each file in the FILE-OR-DIR list from the Files list of\n" " the `.prj' file identified by PROJECT, without modifying the\n" " repository. For each directory in FILE-OR-DIR, recursively\n" " removes all files in that directory structure (or the directory\n" " itself, if it is empty). The FILE-OR-DIR operand list defaults\n" " to the current directory, but since removing all files is\n" " probably not something the user wants to do, it queries first if\n" " no FILE-OR-DIR is supplied.\n" "\n" ; const char checkin_help_string[] = " - Command: prcs checkin [option ...] [project [file-or-dir ...]]\n" " ADDITIONAL OPTIONS: `-r', `-u', `-j', `--version-log'\n" "\n" " Create a new version of the specified project in the repository.\n" " Copy all files listed in the Files attribute of the descriptor\n" " (`PROJECT.prj'), taking those specified in FILE-OR-DIR operands\n" " and the descriptor itself from the working files. Also, modify\n" " the descriptor to reflect the contents of the new version.\n" " *Note Descriptors::.\n" "\n" " If FILE-OR-DIR arguments are provided, they must name files and\n" " directories listed in the Files attribute. Only those working\n" " files are checked in; other files listed in the project\n" " descriptor are carried over from the file versions listed for\n" " them in the Files attribute. It is an error for these other\n" " files to have null internal file identifiers in the `.prj' file.\n" "\n" " A check-in records the access protection on each file (reading\n" " it from the working file). It records symbolic links with the\n" " `:symlink' option and empty directories with a `:directory'\n" " option. You could have, for example, a Files attribute as\n" " follows:\n" "\n" " (Files\n" " (empty () :directory) ; an empty directory\n" " (pointer () :symlink) ; a symbolic link\n" " (realfile () :no-keywords) ; the only real file in the list\n" " )\n" "\n" " PRCS reads the contents of a symbolic link from the link at\n" " check-in time. It is thus wise to use relative pathnames inside\n" " the project. Directories with a `:directory' option need not be\n" " actually empty, but this ensures their creation at checkout. It\n" " is an error to have a `:no-keywords' option in the same file as\n" " a `:symlink', or `:directory' option.\n" "\n" " The new version will have the latest minor version number for the\n" " specified major version. The `-r' option may specify a major\n" " version; any minor version specified is ignored. The `-r' option\n" " defaults to `-r.@', thus taking the major version from the\n" " `.prj' file.\n" "\n" " Let LV denote the last minor version on the branch being checked\n" " into. A checkin is considered \"safe\" if the nearest common\n" " ancestor of LV and the working version is LV (*note\n" " Parent-Version attribute::). This is to insure that the version\n" " being checked in is a descendant of the version at the head of\n" " the branch before checkin. Otherwise, changes at the head of\n" " the branch are clobbered. Unless the `-f' option is present,\n" " PRCS will warn you if a checkin is not safe and allow you to\n" " abort.\n" "\n" " With `-l' present, PRCS will list which files are modified,\n" " inserted, deleted, or renamed, relative to the real working\n" " version prior to checkin. With `-L', PRCS will list all these\n" " changes in addition to listing which files are unmodified.\n" "\n" " Returns a status code of 0 if all goes well, and non-zero if\n" " there are errors.\n" ; const char diff_help_string[] = " - Command: prcs diff [option ...] [project [file-or-dir ...]] [--\n" " [diff-option ...]]\n" " ADDITIONAL OPTIONS: `-r' (once or twice), `-k', `-N', `-P'\n" "\n" " Compare the (partial) contents of two repository versions of a\n" " project or of a repository version and a working version. When\n" " FILE-OR-DIR arguments are present, they restrict comparison to\n" " the specified files or subdirectory trees. The PROJECT argument\n" " may be defaulted if there is a single file with extension `.prj'\n" " in the current working directory, in which case PRCS takes its\n" " name (without `.prj') as the project name.\n" "\n" " The OPTIONs may specify zero, one, or two versions (using `-r'\n" " options). Specifying no `-r' options is equivalent to supplying\n" " the single option `-r.', the version from which the current\n" " working directory was checked out. A `-r' option that specifies\n" " only a major version (leaving off the minor version and its\n" " preceding period) implicitly has a minor version of `@'. When\n" " one version specifier is given, the files in the indicated\n" " version are compared to the working files. The command's output\n" " notes any discrepancies in the contents of identically-named\n" " files, or in files present in one version but not the other. Two\n" " version specifiers cause the same comparison, but between two\n" " checked-in versions of the project.\n" "\n" " Normally, `diff' canonicalizes keyword instances in the files it\n" " compares, removing the keyword values and leaving just the\n" " keyword name. As a result, two different versions of a file\n" " that differ only in their keyword values will compare as equal.\n" " The `-k' option causes `diff' to compare keyword values as well.\n" "\n" " If a file is present only in one of the project versions being\n" " compared, `diff' will normally just announce that such a file\n" " occurs only in one of the versions. With the `-N' option, it\n" " will produce the same output it would if it instead treated the\n" " non-existent version as an empty file. This is useful when\n" " producing patch files that include new files as well as changed\n" " ones. Its effect is essentially the same as that of the same\n" " option in GNU `diff' when it compares directories.\n" "\n" " Files in the two versions being compared are paired by their\n" " names and their internal-file families (see *Note Files\n" " attribute::, for a description of internal-file families). That\n" " is, PRCS will assume that two files in the different versions\n" " correspond if they have the same name or the same internal-file\n" " family. This makes it possible to have conflicts (for example,\n" " when one switches the names of two files in a project\n" " descriptor); in those cases PRCS will ask the user to resolve\n" " the conflict.\n" "\n" " The DIFF-OPTIONS, if provided, are any options acceptable to GNU\n" " `diff'. *Note (diff)Top::. The environment variable\n" " `PRCS_DIFF_OPTIONS', if set, supplies a default set of whitespace\n" " separated DIFF-OPTIONS.\n" "\n" " If the FILE-OR-DIR is defaulted and `-P' is not supplied, or if\n" " FILE-OR-DIR contains the project descriptor, PRCS outputs\n" " differences between project descriptors.\n" "\n" " Returns a status code of 0 if there were no differences, 1 if\n" " there were differences, and 2 if there were problems.\n" ; const char merge_help_string[] = " - Command: prcs merge [option ...] [project [file-or-dir ...]]\n" " ADDITIONAL OPTIONS: `-r', `-u', `-s'\n" "\n" " Find differences between working files and those of the selected\n" " version of PROJECT, and (unless `-n' is specified) try to modify\n" " the working files to reconcile them. The default major and minor\n" " versions are `-r.@'.\n" "\n" " More precisely, the comparison takes place between three\n" " versions of PROJECT: the working version (called PW in what\n" " follows), the \"common version\" (PC) and the \"selected version\"\n" " (PS).\n" "\n" " PW is the working version specified in the checked-out\n" " descriptor and consists of all files listed therein. PS is the\n" " version against which PRCS will reconcile changes, identified by\n" " the (possibly defaulted) `-r' option. A common version is\n" " chosen according to the following algorithm:\n" "\n" " Each version, including the working version, has a list of parent\n" " versions. The parent versions establish an ancestry graph that\n" " is directed and contains no cycles. A version is an ancestor of\n" " another if it can be reached by following zero or more parents\n" " (see *Note Parent-Version attribute:: and *Note Merge-Parents\n" " attribute::). PC is chosen from the set of all versions that\n" " are ancestors of PW and PS. If amongst this intersection, there\n" " exists a unique nearest common ancestor, then it is PC. If there\n" " is no such version, PRCS will complain and ask the user for help.\n" "\n" " Files in the three versions are matched up both by name and by\n" " internal-file family (*note Files attribute::). That is, PRCS\n" " will assume that two files in different versions correspond if\n" " they have the same name or the same internal-file family. This\n" " makes it possible to have conflicts (for example, when one\n" " switches the names of two files in a project descriptor); in\n" " those cases PRCS will ask the user to resolve the conflict.\n" "\n" " A `prcs merge' will report discrepancies and (unless `-n' is\n" " specified) take actions as directed. The possible actions are as\n" " follows.\n" "\n" " `n'\n" " Do nothing.\n" "\n" " `a'\n" " Add the file from PS to PW.\n" "\n" " `r'\n" " Replace the working file with the file from PS.\n" "\n" " `d'\n" " Delete the file from PW.\n" "\n" " `m'\n" " Merge the file from PS with that from PW, inserting markers\n" " into the merged working file to show where the changes in PW\n" " (relative to PC) and those in the version from PS overlap.\n" " If the file from PC is missing, then an empty file is used\n" " for its contents. In general, you will have to edit the\n" " working file to resolve the discrepancies. If the versions\n" " in PS and PW are identical aside from keyword values,\n" " merging has no effect.\n" "\n" " `?'\n" " Print summary of options.\n" "\n" " `h'\n" " Print explanatory help message.\n" "\n" " `v'\n" " View differences between PS, PC, and PW (there is further\n" " prompting for which you want compared).\n" "\n" " The `-f' option causes default actions to each discrepancy (see\n" " below). Otherwise, PRCS will ask the user to specify one of the\n" " possible actions. All of the actions except `n' modify the\n" " descriptor, either to remove the file from the Files list, or to\n" " modify its internal file identifier to the one from PS.\n" "\n" " Like `prcs diff', `prcs merge' canonicalizes files to strip\n" " keyword values before comparing them for discrepancies (*note\n" " diff::). In the descriptions that follow, saying that files are\n" " \"equivalent\" means that they are identical when canonicalized.\n" "\n" " PRCS detects the following discrepancies:\n" "\n" " * Files present in PC and absent in PW. The default action\n" " is `n'. That is, the files are assumed to be obsolete,\n" " regardless of their status in PS.\n" "\n" " * Files present in PC and PW, and absent in PS. The default\n" " action is `d'. That is, the files are assumed to be\n" " obsolete.\n" "\n" " * Files present in PC, PS, and PW, equivalent in PC and PW,\n" " and different in PS. The default action is `r'. That is,\n" " the version in PS is assumed to be most up-to-date.\n" "\n" " * Files present in PC, PS, and PW, and different in all three.\n" " The default action is `m'. There have been independent\n" " changes in both PW and PS.\n" "\n" " * Files absent in PC, and different in PW and PS. The\n" " default action is `m'.\n" "\n" " * Files absent in PC and PW, and present in PS. The default\n" " action is `a'.\n" "\n" " * PRCS takes no action in other cases, and does not prompt\n" " the user.\n" "\n" " When PRCS overwrites a working file that is a symbolic link,\n" " then (unless the `:symlink' option is specified for that file),\n" " it will overwrite the file that the link references, without\n" " changing the link itself. With the `-u' option, PRCS will\n" " instead remove the link and create a new file.\n" "\n" " Whenever PRCS is going to replace a working file as a result of\n" " one of the actions above, it first moves the original file into\n" " the `obsolete' directory and gives it a unique name.\n" "\n" " A partial merge takes place when not all files in the three\n" " versions are considered for merging. This can happen if a merge\n" " is aborted or the FILE-OR-DIR option limits the files under\n" " consideration. When this happens, PRCS records which files have\n" " been merged and their names in the working project's\n" " New-Merge-Parents attribute (*note Merge-Parents attribute::).\n" "\n" " A merge is considered _complete_ when each file in each version\n" " has been considered once. A complete merge may be achieved by\n" " several partial merges. To prevent reconsidering the same file\n" " more then once, PRCS will not consider any set of files\n" " containing a file that was already considered in a previous\n" " merge against the same selected version unless the `-s' option\n" " is specified.\n" "\n" " In general, the `-s' option allows the user to turn off all the\n" " safety features built into `prcs merge'. It will allow a user to\n" " merge files more than once, override the choice of an effective\n" " working version, restart a complete merge, and start a new merge\n" " without completing a previous merge.\n" "\n" " By default, PRCS uses the GNU diff3 command to perform 2- or\n" " 3-way file merges when you choose the `m' action (*note\n" " (diff)top::). It is possible, however, to supply your own merge\n" " command. By setting the `PRCS_MERGE_COMMAND' environment\n" " variable to a program name, PRCS will call the named command\n" " instead of diff3 (*note Environment Variables::).\n" "\n" ; const char rekey_help_string[] = " - Command: prcs rekey [option ...] [project [file-or-dir ...]]\n" " ADDITIONAL OPTIONS: `-u'\n" "\n" " Replace keywords in the selected files, according to the version\n" " named in the project file. Files whose contents would not\n" " change under keyword substitution are not modified. With the\n" " `-n' option, simply reports files that will change as a result\n" " of keyword replacement. *Note Keywords::.\n" "\n" " When PRCS overwrites a working file that is a symbolic link,\n" " then (unless the `:symlink' option is specified for that file),\n" " it will overwrite the file that the link references, without\n" " changing the link itself. With the `-u' option, PRCS will\n" " instead remove the link and create a new file.\n" "\n" " You can use this command to update keywords in working files\n" " after performing a `prcs checkin', which does not modify keyword\n" " values.\n" ; const char info_help_string[] = " - Command: prcs info [option ...] [project [file-or-dir ...]]\n" " ADDITIONAL OPTIONS: `-r', `--sort'\n" "\n" " Print information about versions of the named project. For each\n" " version listed, prints the project name, major and minor version\n" " identifiers, date and time checked in, and the user who checked\n" " in the version. With the `-l' option, also prints out the\n" " version logs and each project description. With `-L', also\n" " prints out the files constituting the version, their attributes,\n" " and their unkeyed MD5 checksum; the FILE-OR-DIR options in this\n" " case restrict the files or directories that are listed.\n" "\n" " The `-r' option is special in this command in that it may contain\n" " any of the shell filename-generation pattern characters defined\n" " for the Bourne shell, `sh': `*', which matches any string of 0\n" " or more characters; `?', which matches any single character;\n" " `[...]', which matches any of the enclosed characters; and\n" " `[!...]', which matches any character except one of the enclosed\n" " characters. These special pattern characters must be escaped to\n" " get them past the shell. The default for both the major and\n" " minor versions is `*'. The `-r' option is still interpreted as\n" " a separate major and minor version; that is, `-rFoo.*' matches\n" " `Foo.1', but not `Foo.Bar.1'.\n" "\n" " The `--sort=TYPE' option sets the type of sorting that the info\n" " command should use. If TYPE is `date', versions are sorted by\n" " individual version date, otherwise the default, `version', is to\n" " sort by major version creation date.\n" ; const char changes_help_string[] = " - Command: prcs changes [option ...] [project [file-or-dir ...]]\n" " ADDITIONAL OPTIONS: `-r' (once or twice), `-l'\n" "\n" " The changes subcommand helps you find what versions modify a\n" " specific file or files. For example, suppose you fixed a bug a\n" " long time ago and now it shows up again in the current version.\n" " You would like to know what project versions modify a certain\n" " file so you can find out who undid your bug-fix and blame them!\n" "\n" " Like `prcs diff', the OPTIONs may specify zero, one, or two\n" " versions (using `-r' options). Specifying no `-r' options is\n" " equivalent to supplying the single option `-r.', the version from\n" " which the current working directory was checked out. A `-r'\n" " option that specifies only a major version (leaving off the\n" " minor version and its preceding period) implicitly has a minor\n" " version of `@'. When one version specifier is given, only that\n" " version is scanned for changes. Two version specifiers cause a\n" " range of versions to be scanned. In the two version case, one\n" " version must be an ancestor of the other, and reversing the\n" " order of the two versions will reverse the order of the output.\n" "\n" " When FILE-OR-DIR arguments are present, they restrict the change\n" " report to the specified files or subdirectory trees. Otherwise\n" " all files are reported.\n" "\n" " For each specified version that modifies a file (in the\n" " reporting set) relative to one of its parent versions, `changes'\n" " prints the project name, major and minor version identifiers,\n" " date and time checked in, and the user who checked in the\n" " version. Then it prints the parent version and a listing of all\n" " the selected files that were modified, including: addition,\n" " deletion, rename, type change, symlink change, or version\n" " change. For regular files, `changes' also prints the number of\n" " lines added and removed by the modification. If a project\n" " version does not modify any of the selected files, nothing is\n" " printed.\n" "\n" " When the `-l' option is present, `changes' also prints the\n" " version-log associated with each version.\n" "\n" ; const char admin_compress_help_string[] = " - Subfunction: compress [project]\n" " Encourages PRCS to save space in storing the data for PROJECT,\n" " even at the expense of slower processing. This command may take\n" " some time to execute. Interrupting it in the middle is safe,\n" " although it may lead to somewhat erratic space-saving behavior.\n" ; const char admin_uncompress_help_string[] = " - Subfunction: uncompress [option] [project]\n" " ADDITIONAL OPTIONS: `-i'\n" "\n" " Encourages PRCS to save time in processing commands against\n" " PROJECT, even at the expense of using more space--perhaps\n" " considerably more. With the `-i' option, PRCS will immediately\n" " expand the entire representation of PROJECT. Without the `-i'\n" " option, PRCS will increase its use of space only as needed. If\n" " disk space should run out, PRCS will leave the repository in a\n" " correct state.\n" ; const char admin_access_help_string[] = " - Subfunction: access [project]\n" " With the optional operand, interactively sets read and write\n" " permissions to all versions of PROJECT, in the repository, and\n" " (on systems that provide it) sets the group to which the files\n" " belong. This command allows the owner of a project in a\n" " repository to restrict the access that others have to its\n" " contents. One can specify that these files may only be read or\n" " may not be accessed at all.\n" "\n" " Without a PROJECT operand, interactively sets read and write\n" " permissions to the repository itself, both for members of the\n" " repository directory's group, and for all other users. One must\n" " have at least read access to the repository to look at or check\n" " out any project (in addition to having appropriate access to the\n" " project itself). You must have write access to the repository to\n" " create new projects in it.\n" ; const char admin_rebuild_help_string[] = " - Subfunction: rebuild [option ...] [project]\n" " Rebuilds internal repository data on PROJECT, possibly removing\n" " file storage for deleted project versions and verifying the\n" " integrity of all project versions. With the `-l' option, reports\n" " deletions. Unless there has been damage to the repository, this\n" " command generally has no visible effect on the notional contents\n" " of the repository.\n" ; const char admin_init_help_string[] = " - Subfunction: init project\n" " Create a new project in the repository containing no (non-empty)\n" " versions. Performing a `prcs checkout' on a non-existent\n" " project creates a blank working project descriptor without\n" " modifying the repository. The first `prcs checkin' for that\n" " project then creates a new entry in the repository. Normally, no\n" " other explicit initialization for the project's entry in the\n" " repository is necessary. However, with this method it is\n" " impossible to perform a `prcs access' before the first check-in,\n" " because there is no record of the new project in the repository.\n" " With `prcs init', you can create a repository entry (containing\n" " no versions) that you can modify with `prcs access'.\n" ; const char admin_pdelete_help_string[] = " - Subfunction: pdelete project\n" " Deletes a repository entry, permanently removing all versions\n" " and data from the repository.\n" "\n" ; const char admin_pinfo_help_string[] = " - Subfunction: pinfo\n" " Lists all projects in the repository.\n" "\n" ; const char admin_prename_help_string[] = " - Subfunction: prename project\n" " Renames a repository entry, similar to renaming during `prcs\n" " unpackage'.\n" "\n" ; const char config_help_string[] = " - Command: prcs config\n" " Print out all compiled-in values and their values, possibly\n" " altered by environment variables or command-line arguments.\n" " Also verifies that the executables named by `$RCS_PATH', or its\n" " compiled-in default, are valid and checks their version numbers\n" " to see that they are not outdated.\n" ; const char package_help_string[] = " - Command: prcs package project packagedfile\n" " ADDITIONAL OPTIONS: `-z'\n" "\n" " Creates a plain file named PACKAGEDFILE, containing all the data\n" " in PROJECT. A value of `-' for PACKAGEDFILE denotes the\n" " standard output. With `-z', the output file is compressed (in\n" " gzip format).\n" ; const char unpackage_help_string[] = " - Command: prcs unpackage packagedfile [project]\n" " Creates PROJECT in the repository to be a copy of the project\n" " from which PACKAGEDFILE was created. The file PACKAGEDFILE must\n" " have been created by `prcs package' (with or without the `-z'\n" " option). If PROJECT is omitted, it defaults to the name of the\n" " project from which PACKAGEDFILE was created. If PROJECT exists\n" " in the repository, the user is prompted to delete the old copy\n" " from the repository. A value of `-' for PACKAGEDFILE denotes\n" " the standard input. With `-n', it merely reports the name of\n" " the project that would be added.\n" "\n" " If PROJECT differs from the original name as stored in\n" " PACKAGEDFILE, the project is renamed. Renaming a project\n" " revises the history of the project; the result is as if the\n" " project had always been named PROJECT, with one exception: When\n" " checked out, project descriptor will have a comment inserted\n" " making note of the original project name.\n" ; const char execute_help_string[] = " - Command: prcs execute [option ...] [project [file-or-dir ...]] [--\n" " command [arg ...]]\n" " ADDITIONAL OPTIONS: `-r', `-P', `--pre', `--all', `--pipe'\n" " `--match PATTERN', `--not PATTERN'\n" "\n" " Execute `COMMAND ARG ...,' suitably modified as described below,\n" " for the name of each file and directory in FILE-OR-DIR in the\n" " specified version, filtered by any `--match' and `--not'\n" " operators as described below. This elaborate command is\n" " intended to facilitate efficient, open-ended extension of the\n" " functions of PRCS. Each directory, whether or not explicitly\n" " named in the project, is included once, either in pre- or\n" " post-order.\n" "\n" " With the `--all' option, COMMAND is executed once. Otherwise,\n" " it is executed once per file name.\n" "\n" " The PATTERN options filter the selected files. To be selected,\n" " the entry in the Files attribute for a given file must satisfy\n" " the `--match' pattern (if any) and not satisfy the `--not'\n" " pattern, if any. Each pattern is a regular expression; an entry\n" " satisfies the pattern if either the name or any of the `:'\n" " options matches the pattern.\n" "\n" " For each execution of COMMAND, PRCS first replaces the following\n" " strings wherever they appear in COMMAND and in each ARG:\n" "\n" " `{}'\n" " Replaced by the name of the file. With the `--all' option,\n" " replaced by the sequence of all selected file names,\n" " separated by \"unquoted blanks\" (that is, blanks that divide\n" " the replacement string into separate arguments).\n" "\n" " `{options}'\n" " Replaced by a string consisting of all colon-options\n" " applicable to the file (*note Files attribute::), separated\n" " by \"quoted blanks\" (that is, blanks that do not divide the\n" " replacement string into separate arguments). If a\n" " directory is not explicitly named in the project file, it\n" " is listed with a `:implicit-directory' option, whether or\n" " not it appears separately in the Files attribute. These\n" " directories appear whether or not the files containing them\n" " were on the command line (otherwise, it would be impossible\n" " to get just the directories). The project file is included\n" " with the `:project-file' attribute. With the `--all'\n" " option, all of these colon-option strings are concatenated\n" " together, with the strings for different files separated by\n" " unquoted blanks.\n" "\n" " `{file}'\n" " The name of a file containing the contents of the\n" " appropriate version of the file. Unless the internal file\n" " identifier is null (which can only happen when there is no\n" " `-r' option, so that the working version is specified),\n" " this is the name of a temporary file containing a\n" " checked-out copy of the appropriate version, which is\n" " deleted after COMMAND completes. With a null internal file\n" " identifier, `{file}' is the same as `{}'. It is the empty\n" " string for a directory or a file carrying the `:symlink'\n" " option. With the `--all' option, all of these file names\n" " are concatenated together, separated by unquoted blanks.\n" "\n" " (In contexts where curly braces are special to your shell, you\n" " will have to escape them.) After these substitutions, PRCS\n" " invokes COMMAND, which must be an executable file. It looks for\n" " COMMAND in the same directories as the shell (using the PATH\n" " environment variable). When `--' and what follows are omitted,\n" " they default to\n" "\n" " -- /bin/echo {}\n" "\n" " which simply echoes the names of all files and directories in the\n" " selected version, one per line.\n" "\n" " One small glitch: `prcs execute' uses the current directory in\n" " effect when it is invoked as the current directory seen by\n" " COMMAND. This is true, even when the PROJECT operand specifies\n" " a subdirectory. For example,\n" "\n" " % cd /usr/users/foo\n" " % prcs execute D/P -- pwd\n" "\n" " will print `/usr/users/foo' once for each file listed in\n" " `/usr/users/foo/D/P.prj', and not `/usr/users/foo/D', as the\n" " general description of the PROJECT operand might otherwise\n" " suggest (*note Specifying Projects::). This allows you to do\n" " something like the following:\n" "\n" " % ln -s . P-1.0\n" " % tar -cvf P-1.0.tar `prcs execute --not :.*directory P-1.0`\n" "\n" " for making tarfiles containing all files in a project in an\n" " appropriately named subdirectory for distribution.\n" "\n" " If the `--pipe' option is present, then the contents of the file\n" " (as would be contained in the file named by `{file}') is\n" " supplied as the standard input. The `--pipe' and `--all'\n" " options are incompatible. Any ARG whose replacement contains\n" " unquoted blanks (introduced by the `--all' option) is divided at\n" " those blanks into separate arguments (even in the case where\n" " substitution results in a null string, that null string will be\n" " broken out as a separate argument). Each of the resulting\n" " arguments, is passed directly to the program specified by\n" " COMMAND as a single string, with no further processing by any\n" " shell.\n" "\n" " With the `--all' option, PRCS will invoke COMMAND only once.\n" " The order of the lists of arguments replacing each pattern in\n" " COMMAND is consistent, so that, for example, the options for the\n" " first file name in the replacement for `{}' is the first string\n" " in the replacement for `{options}'. For example, if a project\n" " contains the files `A', `B/Q', and `B/R', then\n" "\n" " prcs execute --all . -- foo -a{}-b \"{options}\"\n" "\n" " will execute (in effect) the single command\n" "\n" " foo -aA B/Q B/R B-b \"\" \"\" \"\" \":directory\"\n" "\n" " With the `--pre' (for pre-order) option the directory name is\n" " listed first, then the non-directory file names within that\n" " directory, then the subdirectories and their contents.\n" " Otherwise, subdirectories and their contents are listed first,\n" " then the names of its non-directory files, then the name of the\n" " directory itself.\n" "\n" " With `-n', the command prints the commands that will be executed\n" " without actually executing them.\n" ; const char delete_help_string[] = " - Command: prcs delete `-r' version project\n" " Delete the indicated version of PROJECT. It will no longer be\n" " possible to retrieve the given version. Therefore, this is a\n" " command that you should use very sparingly, if at all.\n" "\n" " Deleting a version does not necessarily release the space used\n" " by the files it contains, since these may be mentioned in other\n" " versions. At various times, PRCS will note what space can\n" " actually be released and do so.\n" "\n" " Minor version numbers increase monotonically, regardless of\n" " deletions, and are never re-used.\n" ; const char general_help_string[] = "Possible commands are:\n" " admin Requires subcommand (`prcs admin --help' for help).\n" " checkin Checkin project revision.\n" " checkout Checkout project revision.\n" " config Verify compiled in paths, defaults, and environment\n" " variables.\n" " delete Delete named revision of project.\n" " depopulate Remove named files from project descriptor.\n" " diff Show differences between two revisions.\n" " execute Execute a command for each file in a project.\n" " info Print information about versions of project.\n" " merge Reconcile differences between working files and\n" " another revision.\n" " package Package the project and all its revisions into\n" " packagefile.\n" " populate Add named files to project descriptor.\n" " rekey Set keywords in selected files.\n" " unpackage Unpackage project in packagefile.\n" "Use the --help option with a command for further help.\n" ; const char admin_help_string[] = "Possible subcommands are:\n" " access Set the access permissions on the repository.\n" " compress Instruct PRCS to save disk space for project.\n" " init Create a repository entry.\n" " pdelete Delete a repository entry.\n" " prename Rename a repository entry.\n" " rebuild Instruct PRCS to reconstruct its data files in the\n" " repository. This command is helpful if the repository\n" " has been damaged or PRCS has reported an error due to\n" " and RCS command failure or missing version data.\n" " uncompress Instruct PRCS to save time in processing project(default).\n" "Use the --help option with a command for further help.\n" ;