msghelp.cc #1

  • //
  • guest/
  • perforce_software/
  • p4/
  • 2016-1/
  • msgs/
  • msghelp.cc
  • View
  • Commits
  • Open Download .zip Download (480 KB)
/*
 * Copyright 1995-2010 Perforce Software.  All rights reserved.
 *
 * This file is part of Perforce - the FAST SCM System.
 */

/*
 * msghelp.cc - definitions of errors for help subsystem.
 *
 * Note:
 *
 * Never re-use an error code value,  these may have already been 
 * translated and while deleting the error is OKAY using it for a 
 * different error is not.
 *
 * Its okay to add a message in the middle of the file.
 *
 * When adding a new error make sure its greater than the current high
 * value and update the following number:
 *
 * Current high value for a MsgHelp error code is: 193
 */

# define NEED_SMARTHEAP

# include <stdhdrs.h>
# include <error.h>
# include <errornum.h>
# include "msghelp.h"

ErrorId MsgHelp::NoHelp = { ErrorOf( ES_HELP, 1, E_FAILED, EV_USAGE, 1  ), 
"No help for %command%."   
} ;

ErrorId MsgHelp::HelpPerforce = { ErrorOf( ES_HELP, 11, E_INFO, EV_NONE, 2  ), 
"\n"
"    Perforce -- the Fast Software Configuration Management System.\n"
"\n"
"    p4 is Perforce's client tool for the command line.  Try:\n"
"\n"
"	p4 help simple          list most common commands\n"
"	p4 help commands        list all standard commands\n"
"	p4 help command         help on a specific command\n"
"\n"
"	p4 help administration  help on specialized administration topics\n"
"	p4 help charset         help on character set translation\n"
"	p4 help configurables   list server configuration variables\n"
"	p4 help environment     list environment and registry variables\n"
"	p4 help filetypes       list supported file types\n"
"	p4 help jobview         help on jobview syntax\n"
"	p4 help networkaddress  help on network address syntax\n"
"	p4 help revisions       help on specifying file revisions\n"
"	p4 help streamintro     introduction to streams\n"
"	p4 help usage           generic command line arguments\n"
"	p4 help views           help on view syntax\n"
"	p4 help replication     help on specialized replication topics\n"
"	p4 help dvcs            help on decentralized Perforce configurations\n"
"\n"
"	p4 help legal           legal and license information\n"
"\n"
"    The full user manual is available at http://www.perforce.com/manual.\n"
"\n"
"    Server %release_id%/%patch_id%.\n"
};

ErrorId MsgHelp::HelpUsage = { ErrorOf( ES_HELP, 12, E_INFO, EV_NONE, 0  ), 
"\n"
"    Perforce client usage:\n"
"\n"
"    p4 [options] command [--explain] [arg ...]\n"
"    p4 -V\n"
"\n"
"	Many command flags have both short-form and long-form syntax. Specify\n"
"	the --explain flag to display additional information about the flags\n"
"	accepted by this command. For example, 'p4 sync --explain' to display\n"
"	all the options supported by sync, or 'p4 edit --explain -k' to\n"
"	display information about the -k flag to edit.\n"
"\n"
"	options:\n"
"	    -b batchsize -c client -C charset -d dir -H host\n"
"	    -I -G -L language -p port -P pass -q -r retries -s\n"
"	    -Q charset -u user -x file -z tag\n"
"\n"
"	The -b batchsize specifies a batch size (number of arguments) to\n"
"	use when processing a command from a file '-x' (default 128).\n"
"\n"
"	The -c flag specifies the client name, overriding the value of\n"
"	$P4CLIENT in the environment and the default (the hostname).\n"
"\n"
"	The -C flag specifies the client's character set, overriding the\n"
"	value of $P4CHARSET in the environment.  See 'p4 help charset'\n"
"	for more information.\n"
"\n"
"	The -d flag specifies the current directory, overriding the value of\n"
"	$PWD in the environment and the default (the current directory).\n"
"\n"
"	The -G flag formats all output (and batch input for form commands\n"
"	with -i) as marshalled Python dictionary objects.\n"
"\n"
"	The -H flag specifies the host name, overriding the value of\n"
"	$P4HOST in the environment and the default (the hostname).\n"
"\n"
"	The -I flag specifies that progress indicators, if available,\n"
"	are desired.  Progress indicators are available for the commands:\n"
"	'p4 -I submit', 'p4 -I sync -q', 'p4 -I switch', 'p4 clone',\n"
"	'p4 -I fetch', 'p4 -I push', 'p4 -I zip', and 'p4 -I unzip'.\n"
"	This flag is not compatible with the -s, -e, -G options.\n"
"\n"
"	The -L flag specifies the language for text messages from the\n"
"	server, overriding the value of $P4LANGUAGE in the environment.\n"
"	Setting this option only works if the administrator has loaded\n"
"	support for non-English messages into the server database.\n"
"\n"
"	The -p flag specifies the server's listen address, overriding the\n"
"	value of $P4PORT in the environment and the default (perforce:1666).\n"
"\n"
"	The -P flag specifies the password, overriding the value of\n"
"	$P4PASSWD in the environment.\n"
"\n"
"	The -q flag suppresses all info messages.\n"
"\n"
"	The -Q flag specifies the client's command character set,\n"
"	overriding the value of $P4COMMANDCHARSET in the environment.\n"
"	See 'p4 help charset' for more information.\n"
"\n"
"	The -r flag specifies the number of times a sync command should be\n"
"	retried if the network times out (takes longer than N seconds to\n"
"	respond to a single I/O operation) during sync command execution.\n"
"	For example:\n"
"           p4 -r4 -vnet.maxwait=300 sync //...\n"
"	specifies to retry this 'sync' up to 4 times, should any single\n"
"	network operation take longer than 5 minutes to complete. The -r\n"
"	flag should not be used on a command which reads from stdin.\n"
"\n"
"	The -s flag causes the p4 command line client program to prefix\n"
"	each line of output with a tag (error, warning, info, text, exit)\n"
"	to make it easier to use for scripting.\n"
"\n"
"	The -u flag specifies the user name, overriding the value of\n"
"	$P4USER, $USER, and $USERNAME in the environment.\n"
"\n"
"	The -x flag instructs p4 to read arguments, one per line, from the\n"
"	specified file.  If you specify '-', standard input is read.\n"
"\n"
"	The -V flag displays the version of the p4 client command and exits.\n"
"\n"
"	The -z tag option returns output of reporting commands in the\n"
"	format returned by 'p4 fstat'.\n"
};

ErrorId MsgHelp::HelpSimple = { ErrorOf( ES_HELP, 13, E_INFO, EV_NONE, 0  ), 
"\n"
"    Most common Perforce client commands:\n"
"\n"
"	client     Create or edit a client workspace specification and view\n"
"\n"
"	add        Open files for adding to the depot\n"
"	edit       Open existing files for editing\n"
"	delete     Open existing files for removal from the depot\n"
"	opened     List open files \n"
"\n"
"	update     Update files in the current client workspace \n"
"	resolve    Resolve updates to open workspace files\n"
"\n"
"	submit     Submit open files to the depot\n"
"	revert     Revert open files and restore originals to workspace\n"
};

ErrorId MsgHelp::HelpCommands = { ErrorOf( ES_HELP, 14, E_INFO, EV_NONE, 0  ), 
"\n"
"    Perforce client commands:\n"
"\n"
"	add          Open a new file to add it to the depot\n"
"	aliases      Display the content of the P4ALIASES file\n"
"	annotate     Print file lines along with their revisions\n"
"	attribute    Set per-revision attributes on revisions\n"
"	branch       Create or edit a branch specification\n"
"	branches     Display list of branches\n"
"	change       Create or edit a changelist description\n"
"	changes      Display list of pending and submitted changelists\n"
"	changelist   Create or edit a changelist description\n"
"	changelists  Display list of pending and submitted changelists\n"
"	clean        Delete or refresh local files to match depot state\n"
"	client       Create or edit a client specification and its view\n"
"	clients      Display list of known clients\n"
"	copy         Schedule copy of latest rev from one file to another\n"
"	counter      Display, set, or delete a counter\n"
"	counters     Display list of known counters\n"
"	cstat        Dump change/sync status for current client\n"
"	delete       Open an existing file to delete it from the depot\n"
"	depot        Create or edit a depot specification\n"
"	depots       Display list of depots\n"
"	describe     Display a changelist description\n"
"	diff         Display diff of client file with depot file\n"
"	diff2        Display diff of two depot files\n"
"	dirs         List subdirectories of a given depot directory\n"
"	edit         Open an existing file for edit\n"
"	filelog      List revision history of files\n"
"	files        List files in the depot\n"
"	fix          Mark jobs as being fixed by named changelists\n"
"	fixes        List what changelists fix what job\n"
"	flush        Fake a 'p4 sync' by not moving files\n"
"	fstat        Dump file info\n"
"	grep         Print lines from text files matching a pattern\n"
"	group        Change members of a user group\n"
"	groups       List groups (of users)\n"
"	have         List revisions last synced\n"
"	help         Print the requested help message\n"
"	info         Print out client/server information\n"
"	integrate    Schedule integration from one file to another\n"
"	integrated   Show integrations that have been submitted\n"
"	interchanges Report changes that have not yet been integrated\n"
"	istat        Show integrations needed for a stream\n"
"	job          Create or edit a job (defect) specification\n"
"	jobs         Display list of jobs\n"
"	key          Display, set, or delete a key/value pair\n"
"	keys         Display list of known keys and their values\n"
"	label        Create or edit a label specification and its view\n"
"	labels       Display list of labels\n"
"	labelsync    Synchronize label with the current client contents\n"
"	list         Create an in-memory (label) list of depot files\n"
"	lock         Lock an opened file against changelist submission\n"
"	logger       Report what jobs and changelists have changed\n"
"	login        Login to Perforce by obtaining a session ticket\n"
"	logout       Logout of Perforce by removing or invalidating a ticket\n"
"	merge        Schedule merge (integration) from one file to another\n"
"	move         Moves files from one location to another\n"
"	opened       Display list of files opened for pending changelist\n"
"	passwd       Set the user's password on the server (and Windows client)\n"
"	populate     Populate a branch or stream with files\n"
"	print        Retrieve a depot file to the standard output\n"
"	protect      Modify protections in the server namespace\n"
"	protects     Display protections in place for a given user/path\n"
"	prune        Remove unmodified branched files from a stream\n"
"	rec          Reconcile client to offline workspace changes\n"
"	reconcile    Reconcile client to offline workspace changes\n"
"	rename       Moves files from one location to another\n"
"	reopen       Change the type or changelist number of an opened file\n"
"	resolve      Merge open files with other revisions or files\n"
"	resolved     Show files that have been merged but not submitted\n"
"	revert       Discard changes from an opened file\n"
"	review       List and track changelists (for the review daemon)\n"
"	reviews      Show what users are subscribed to review files\n"
"	set          Set variables in the registry (Windows only)\n"
"	shelve       Store files from a pending changelist into the depot\n"
"	status       Preview reconcile of client to offline workspace changes\n"
"	sizes        Display size information for files in the depot\n"
"	stream       Create or edit a stream specification\n"
"	streams      Display list of streams\n"
"	submit       Submit open files to the depot\n"
"	sync         Synchronize the client with its view of the depot\n"
"	tag          Tag files with a label\n"
"	tickets      Display list of session tickets for this user\n"
"	unlock       Release a locked file but leave it open\n"
"	unshelve     Restore shelved files from a pending changelist\n"
"	update       Update the client with its view of the depot\n"
"	user         Create or edit a user specification\n"
"	users        Display list of known users\n"
"	where        Show how file names map through the client view\n"
"	workspace    Create or edit a client specification and its view\n"
"	workspaces   Display list of known clients\n"
"\n"
"    See 'p4 help administration' for more information about additional\n"
"    commands and issues of interest to those who are administering and\n"
"    operating the server.\n"
"\n"
"    See 'p4 help dvcs' for more information about additional commands and\n"
"    topics of interest to those who use using Perforce with decentralized\n"
"    workflows.\n"
};

ErrorId MsgHelp::HelpUndoc = { ErrorOf( ES_HELP, 15, E_INFO, EV_NONE, 0  ), 
"\n"
"    Unsupported or obsolete Perforce commands and options:\n"
"\n"
"    p4 admin dump\n"
"	Outputs a checkpoint of the server through the client.  Important:\n"
"	read-locks the database during the entire operation!  Normally\n"
"	database locks are not held during network I/O to the client.\n"
"	This command requires 'super' access.\n"
"\n"
"    p4 admin import [-l] [-b batchsz] [-f]\n"
"	Imports a journal of the server through the client.  The journal\n"
"	data is read from the standard input.  When the data has been\n"
"	transfered to the server, it is processed in batches with the\n"
"	batch size of 5000 records or the number specified with the '-b'\n"
"	flag.  Each batch locks only the tables that will change.\n"
"	The -l flag instructs import to write-lock all database tables\n"
"	and processes all data until it comes to the end of the file or\n"
"	encounters an error.  When applying records to the database, it\n"
"	ignores failures to delete records,  unlike 'p4d -jr', which\n"
"	normally terminates if it can't delete a record as indicated by\n"
"	the journal.  Avoid using this command to import large journal\n"
"	files, because the entire file has to fit in memory.\n"
"	The -f flag forces a replica server to run this command.\n"
"	This command requires 'super' access.\n"
"\n"
"    p4 branch -F stream [ -P parent ] -o name\n"
"	The -F flag used with -o will output the full branch spec generated\n"
"	using the named stream view that includes imported paths. The\n"
"	optional -P option allows a user to specify a different parent\n"
"	stream for the branch source.\n"
"\n"
"    p4 client -of\n"
"	An administrator may combine the -o and -f flags in order to display\n"
"	information about the client view havemaps. Havemaps are created when\n"
"	a client view is modified.\n"
"\n"
"    p4 clone -A\n"
"	The -A flag excludes archive content for the new revisions. This flag\n"
"	also prevents the automatic sync normally performed by clone.\n"
"\n"
"    p4 configure show env\n"
"	Displays the command-line flags and environment variables that were\n"
"	in effect when this server was started.\n"
"\n"
"    p4 configure show undoc\n"
"	Displays a list of all the server tunable parameters and their\n"
"	current values. Consult Perforce Technical Support before\n"
"	changing values.\n"
"\n"
"    p4 copy -e\n"
"	Only existing source files are considered for copying to the target.\n"
"	Target files with no corresponding source files are ignored.\n"
"\n"
"    p4 cstat\n"
"	Dump change/sync status for current client.\n"
"	See 'p4 help cstat'.\n"
"\n"
"    p4 dbpack\n"
"	Reorder database index pages.\n"
"	See 'p4 help dbpack'\n"
"\n"
"    p4 diff2 -F stream [-P parent] [[file1] file2]\n"
"	The -F flag causes diff2 to use the full stream branch, including\n"
"	imported paths, to determine the pairs of files to compare. The files\n"
"	are compared against the parent stream. The optional -P flag allows\n"
"	a user to specify a different parent stream to diff against. If file\n"
"	arguments are also present, they can further limit the files and\n"
"	specify the revisions for comparison.\n"
"\n"
"    p4 diff/diff2/describe -dh\n"
"	The -dh compares files on a word-by-word basis (using whitespace\n"
"	as a separator rather than just newline), and marks differences\n"
"	with HTML tags that switch the font to red or blue for words that\n"
"	are only in the first or second file, respectively.\n"
"\n"
"    p4 diff/diff2/describe -dv\n"
"	The -dv compares files on a word-by-word basis (using character\n"
"	classes rather than just newline), and marks differences with\n"
"	HTML tags that switch the font to red or blue for words only\n"
"	in the first or second file, respectively.\n"
"\n"
"    p4 discover\n"
"	This variant of 'p4 info' is used to discover if a server is\n"
"	in unicode mode or not.  It's important to allow this through\n"
"	a broker.\n"
"\n"
"    p4 duplicate\n"
"	Duplicate revisions and their integration history.\n"
"	See 'p4 help duplicate'.\n"
"\n"
"    p4 edit/delete -L [file ...] \n"
"	The -L flag can be used with multiple file arguments in order to\n"
"	process them altogether.  This flag can help performance when dealing\n"
"	with many +l files and issuing the command from an edge server.\n"
"\n"
"    p4 fetch [-p target -A -I -u]\n"
"	The -p flag specifies the address of the target server, overriding\n"
"	the address from the remote spec specified by the -r flag.\n"
"\n"
"	The -I flag excludes integration records for the new revisions.\n"
"\n"
"	The -A flag excludes archive content for the new revisions. This flag\n"
"	also prevents the automatic sync normally performed by fetch.\n"
"\n"
"	The -u flag specifies that conflicting changes should be unsubmitted,\n"
"	not relocated to a tangent. The -u flag requires the -r flag, and\n"
"	also requires that an administrator has set server.allowrewrite=1.\n"
"\n"
"    p4 filelog -1\n"
"	This flag prevents filelog from following any renames resulting from\n"
"	use of the 'p4 move' command. By default, filelog follows moved files.\n"
"\n"
"    p4 fstat [-OcChiz]\n"
"	The -Oc flag outputs the path, revision and type of the server\n"
"	archive file (requires 'admin' privilege). The -OC flag is the same\n"
"	as -Oc, but includes archived revisions. The -Oz flag outputs the\n"
"	path and revision of any lazy copies (requires 'admin' privilege).\n"
"	The -Oh flag outputs the size, digest and any selected attributes of\n"
"	the synced revision rather than the head revision. The -Oi flag\n"
"	outputs extra (debugging) information about the attributes.\n"
"\n"
"    p4 help commandments\n"
"	Values we work by.\n"
"\n"
"    p4 help credits\n"
"	Lists server contributors.\n"
"\n"
"    p4 index\n"
"	Add words to the jobs index.\n"
"	See 'p4 help index'.\n"
"\n"
"    p4 integrate -1 -2 -C changelist# -Rlo -Znnn\n"
"	The flag '-1' can be supplied to the 'p4 integrate' command to\n"
"	force consideration of direct integration history only.  The -C\n"
"	changelist# flag considers only	integration history from changelists\n"
"	at or below the given number, allowing you to ignore credit from\n"
"	subsequent integrations.  The -2 flag uses the old 'second generation'\n"
"	integrate engine (2006.1).  The -Rl flag causes only edited revisions\n"
"	to require integration.  The -Ro flag suppresses the scheduling of\n"
"	non-content resolves.  The -Z flag overrides the dm.integ.tweaks\n"
"	configurable setting.\n"
"\n"
"    p4 integrate -Dst -d -i -I -o -t -v\n"
"	These flags are deprecated but preserved for backward compatibility.\n"
"		-Dt     If the target file has been deleted and the source\n"
"			file has changed, re-branch the source file on top\n"
"			of the target file instead of scheduling a resolve.\n"
"		-Ds     If the source file has been deleted and the target\n"
"			file has changed, delete the target file instead of\n"
"			scheduling a resolve.\n"
"		-d	Synonym for '-Dist'.\n"
"		-i/-I	Use the first revision of the source as the base for\n"
"			baseless merges, rather than an empty file.\n"
"		-o	Synonym for '-Ob'.\n"
"		-t	Force filetype and attributes to be copied from the\n"
"			source file rather than scheduling resolves.\n"
"		-v	Open files virtually when no resolve is scheduled.\n"
"\n"
"    p4 jobspec presets\n"
"	Preset values for job non-optional fields that undergo variable\n"
"	expansion, in addition to the simple $now, $blank, and $user\n"
"	substitution.  The variables supported include: %%old%% (previous\n"
"	contents of field), %%action%% (what caused the update of the form),\n"
"	%%n%% (a newline), %%date%% (date and time), %%day%% (date only),\n"
"	and %%user%%.\n"
"\n"
"    p4 jobspec codes over 10000\n"
"	Jobspec field codes are required to be in the range 100-199 or over\n"
"	10000.\n"
"\n"
"    p4 merge3\n"
"	Three-way file merge.\n"
"	See 'p4 help merge3'.\n"
"\n"
"    p4 obliterate [ -iI ]\n"
"	Tells obliterate to synthesize new integration records to attempt\n"
"	to bridge the gaps left by the obliteration of intermediate branches.\n"
"	If '-i' is used, only the initial branch records are considered; if\n"
"	'-I' is used, all records are considered.  Note that it is possible\n"
"	to end up with more integration records than you started with.\n"
"\n"
"    p4 pull -I\n"
"	The '-I' flag specifies the pull interval in milliseconds.\n"
"\n"
"    p4 push [-p target -I]\n"
"	The -p flag specifies the address of the target server, overriding\n"
"	the address from the remote spec specified by the -r flag.\n"
"\n"
"	The -I flag excludes integration records for the new revisions.\n"
"\n"
"    p4 resolve -dg\n"
"	The'-dg' flag makes the default merge algorithm more guarded about\n"
"	merging adjacent chunks.  When this option is specified, \n"
"	more conflicts are returned,  especially where changes in both \n"
"	'yours' and 'theirs' are identical but then diverge.\n"
"\n"
"    p4 resolve -e\n"
"	Translates all 'ignored' results to 'edit from', leaving the contents\n"
"	unchanged.  The resulting revision is a candidate for integration back\n"
"	to its source, which has the effect of undoing the 'ignored' change.\n"
"\n"
"    p4 retype\n"
"	Change revision or server archive type.\n"
"	See 'p4 help retype'.\n"
"\n"
"    p4 search\n"
"	Search index.\n"
"	See 'p4 help search'.\n"
"\n"
"    p4 snap\n"
"	Snap archive lazy copies.\n"
"	See 'p4 help snap'.\n"
"\n"
"    p4 spec\n"
"	Edit spec definitions.\n"
"	See 'p4 help spec'.\n"
"\n"
"    p4 submit -c <change> --forcenoretransfer\n"
"	This option instructs submit to bypass the client file transfer if\n"
"	the archive is found to be already present on the server. If the\n"
"	archive is found, submit will bypass the client file transfer and\n"
"	commit the archive content even if it differs from the client file\n"
"	content. This option is only allowed if the undocumented tunable\n"
"	value 'submit.forcenoretransfer' is set to 1 or higher. If the\n"
"	tunable is set to 2, 'submit -c N' defaults to --forcenoretransfer.\n"
"	Files submitted without a file transfer are recorded with no digest\n"
"	value; you may set the digest later if desired, for example by\n"
"	running verify or by other means. NOTE: bypassing file transfer\n"
"	is a very advanced feature requiring specific workflows to be\n"
"	used and with specific restrictions to its operation.\n"
"\n"
"    p4 submit -t\n"
"	Tamper-checks branch/sync files and files resolved with 'at' \n"
"	(copy from/lazy-copied files). This check can significantly slow submit.\n"
"	Imported files are never tamper-checked.\n"
"\n"
"    p4 -ztzoffset=N verify\n"
"	Operating a replica in a timezone other than the master's timezone\n"
"	can cause files of type +k which use $Date$ or $DateTime$ keywords\n"
"	to verify as BAD! Specify the master's timezone offset to cause the\n"
"	replica to use that timezone for keyed file verification. This value\n"
"	does not, however, affect the time zone name shown by $DateTimeTZ$.\n"
"\n"
"    Predefined Trigger Actions\n"
"	The predefined trigger actions 'pass' and 'fail' are processed\n"
"	by the server without calling any external scripts. 'pass' will\n"
"	always succeed. 'fail' will always fail and return the expanded\n"
"	argument list as the error message.\n"
"\n"
"    Relative revisions @<, @<=, @>, @>=, @=\n"
"	            and #<, #<=, #>, #>=, #=\n"
"	Anywhere a revision range can be specified, the revisions can be\n"
"	modified with relative operators.  Relative operators on #head\n"
"	(other than = and <=) aren't supported.  A maximum of 4 revision\n"
"	specifications (separated by ,s) are allowed: the implied operator\n"
"	on the first is >=; thereafter <=.  You must quote < and > for the\n"
"	command-line shell.  See 'p4 help revisions' for a description of\n"
"	revision specifications.\n"
"\n"
"    Revision actions #add, #edit, #delete, #branch, #integrate, #import\n"
"	Selects all revisions with the specified action.  Actions are not\n"
"	relative, which means that #action cannot be used in a revision range.\n"
"	For many commands, when multiple revisions of the same\n"
"	file are selected, the highest revision is used.\n"
"\n"
"    FileType modifier +T\n"
"	The +T modifier stores the revisions in the server in a database\n"
"	file called tiny.db, which is useful for lots of very small\n"
"	files.  The types ttext and tbinary are equivalent to text+T and\n"
"	binary+T.  tiny.db is not backed up with a normal checkpoint.\n"
"	Backups are done via 'p4d -xf 857 > tiny.ckp' and restores with\n"
"	'p4d -xf 857 tiny.ckp'\n"
"\n"
"    Versioned character set\n"
"	Set the server.filecharset configurable to 1 in order to version\n"
"	the charset of individual unicode files along with the filetype.\n"
"	With this configurable enabled, each unicode file has a charset\n"
"	associated with it that will be used instead of the local P4CHARSET\n"
"	when reading and writing the file in the client workspace.  This\n"
"	versioned charset is set to the local P4CHARSET on add by default\n"
"	and may be changed explicitly by using the -Q flag on add, edit, and\n"
"	reopen.  The 'p4 reopen -X -Q charset' command will convert the client\n"
"	file's contents into the new charset; otherwise it is assumed that the\n"
"	client file already matches the newly specified charset.  Note that\n"
"	this feature requires client-side support; if not all client\n"
"	applications in use support this feature, confusing behavior may\n"
"	result.\n"
"\n"
"    Jobspec format\n"
"	The 'p4 jobspec' form can have an additional field 'Formats:' to\n"
"	help Perforce visual clients display forms properly.  Each row\n"
"	of the Format field consists of three words: field, order, and format.\n"
"	The order is an integer (starting at 1) indicating the display order\n"
"	(the display order is otherwise undefined). \n"
"	The format is: normal, L, R, or I; for full line, left half, \n"
"	right half, indented.  If a right field follows a left, they\n"
"	are displayed on the same line.\n"
"\n"
"    JobStatus field on 'p4 change', 'p4 submit'\n"
"	'p4 change' and 'p4 submit' forms have a 'JobStatus' field that is not\n"
"	normally displayed.  This field sets the fix status for all jobs,\n"
"	overriding the default (which is 'closed').  A job's fix status can be\n"
"	set using the 'p4 change -s' and 'p4 submit -s' commands.\n"
"\n"
"    p4 -zmaxLockTime=n command\n"
"    p4 -zmaxOpenFiles=n command\n"
"    p4 -zmaxResults=n command\n"
"    p4 -zmaxScanRows=n command\n"
"	Overrides the user's maxLockTime/maxOpenFiles/maxResults/maxScanRows\n"
"	for the command. Note that the server.commandlimits configurable\n"
"	affects the operation of these command-level overrides.\n"
"\n"
"    p4 -e\n"
"	Extended version of the '-s' output that displays more detailed\n"
"	information about each error/info message received, including the\n"
"	formatting strings, unique error codes, and severity values that\n"
"	are available to API users.\n"
"\n"
"    p4 -E P4VAR=value\n"
"	Override the value of an arbitrary environment/config variable,\n"
"	as in a P4CONFIG file.  Multiple instances of this flag can be used.\n"
"	Useful for variables without dedicated override flags (such as P4DIFF).\n"
"\n"
"    p4 -F formatstring\n"
"	Override the formatting string of server messages, allowing output\n"
"	to be customized for easier scripting.  Use the '-e' global option\n"
"	to see examples of built-in message strings and the dictionary of\n"
"	variables associated with each message.  The '-F' option also works\n"
"	with the dictionary provided by tagged (-Ztag) output mode.\n"
"\n"
"    p4 --field Field=replacement_text\n"
"    p4 --field Field+=extra_text\n"
"	Modify the contents of a spec returned by p4 [specname] -o.  The\n"
"	modified spec can be piped directly to another command that expects\n"
"	a formatted spec, e.g. p4 [specname] -i.\n"
"\n"
"    p4 -R\n"
"	Formats all output (and batch input for form commands with -i)\n"
"	as marshalled Ruby hash objects.\n"
"\n"
"    p4 -x cmdfile run\n"
"	Runs the commands listed in cmdfile one after the next, using a\n"
"	single connection to the server.\n"
"\n"
"    p4 unsubmit -c N\n"
"	Unsubmits the specified changelist by changelist number. Each\n"
"	changelist is unsubmitted independently, but if you specify\n"
"	multiple interdependent changelists, you must specify them in\n"
"	descending changelist order.\n"
"\n"
"    p4d -Cn\n"
"	Forces the server to operate in case-sensitive mode (n=0) on Windows\n"
"	or case-insensitive mode (n=1) on Unix.  n=2 is an experimental\n"
"	'hybrid' order that folds case while preserving uniqueness. Changing\n"
"	Attempting to change modes after a database is created produces an\n"
"	error.\n"
"\n"
"    p4d -jds dumpfile\n"
"	Dumps the server metadata to the specified file. Unlike p4d -jd,\n"
"	ignores the table indexes and reads in file system order rather than\n"
"	data order.  This option can be useful for recovery if the btree\n"
"	index structure becomes corrupt.  This recovery procedure is not\n"
"	meant for normal production operation.  Restoring the resulting\n"
"	dump file does not compact the btrees as effectively as restoring\n"
"	from regular checkpoints does, and such restores take longer to\n"
"	complete.\n"
"\n"
"    p4d -n\n"
"       Starts the server in maintenance mode. Maintenance mode does not\n"
"       police the user and file count restrictions listed in the license\n"
"       file. When in maintenance mode a server is only able to perform\n"
"       those commands that do not require a client. In addition, if the\n"
"       server is in maintenance mode and it is a member of a DCS cluster\n"
"       it will not launch a p4zk process.\n"
"\n"
"    p4d -xf bugno\n"
"	Updates the server data to fix problems due to the\n"
"	specified bug number.  Valid values of bugno are as follows:\n"
"\n"
 "		857 -- checkpoint/restore tiny.db\n"
"		925 -- working and locks table out of sync\n"
"		3104 -- early 99.2 resolve bug\n"
"		4164 -- early 2000.1 submit bug\n"
"		12904 -- replace / with _ in client names\n"
"		18362 -- 2005.2 replace 'check' trigger command\n"
"		43361 -- 2012.2 - recreate db.have from db.working\n"
"		71819 -- 2013.2 - clears unneeded/invalid charset data\n"
"		71917 -- 2014.2 - promoted shelved changes on commit server\n"
"\n"
"    p4d -xU upgrade\n"
"	Re-runs the named upgrade step that is normally done automatically by\n"
"	p4d -xu.  To display a list of steps, issue the 'p4d -xU help' command.\n"
"	This option can be used to rebuild certain tables (like db.archmap).\n"
"\n"
"    p4d -xx [-q -o output] [table1 [table2]]\n"
"	Checks consistency between table pairs, producing a file\n"
"	jnl.fix with '@dv@' and '@pv@' records which, when read in with\n"
"	p4d -jr, eliminate any inconsistencies.  If table names are\n"
"	specified, only those tables are checked.  Check the jnl.fix file\n"
"	for accuracy before attempting any updates. Use the -o flag to specify\n"
"	a filename other than jnl.fix. Specify -q to print output messages\n"
"	only if inconsistencies are found.\n"
"\n"
"    p4d -xr\n"
"	Does a low-level verification and repair of database files. \n"
"	Use only as a last resort if checkpoint and journal are not\n"
"	available.\n"
"\n"
"    p4d -xrU\n"
"	Resets the UnlockCount of database files, but makes no other repairs.\n"
"	Use only as a last resort if checkpoint and journal are not\n"
"	available.\n"
"\n"
"    p4d -p <serverlevel> -jd\n"
"	The -p flag directs the server to dump metadata in a form compatible\n"
"	with an older server version.  The earliest version that might work\n"
"	is 2005.1, which is server level 19.\n"
"\n"
"    p4d -m rcsfiles...  \n"
"	Dumps RCS metadata from files to a format suitable for the\n"
"	CVS-to-Perforce conversion script.\n"
"\n"
"    p4d -M readonly [options]\n"
"	The -M readonly option, used only with replica servers, directs\n"
"	the replica server to only accept readonly metadata commands.\n"
"	This overrides the db.replication configurable.\n"
"\n"
"    p4d -D readonly|shared|ondemand|cache|none [options]\n"
"	The -D flag is used only with replica servers to specify the\n"
"	approach for handling depot file content. A replica running\n"
"	with '-D readonly' automatically transfers copies of the target\n"
"	server's files. A replica running with '-D shared' or '-D ondemand'\n"
"	either shares the same physical archives as the target or uses\n"
"	external archive synchronization from the target. A replica running\n"
"	with '-D cache' only requests file transfer as needed by user\n"
"	commands. A replica running with '-D none' rejects any command that\n"
"	requires access to depot files. This overrides the lbr.replication\n"
"	configurable.\n"
"\n"
"    p4p -k ...\n"
"	Start the Perforce Proxy without cache timestamp checking.\n"
"	The Perforce Proxy normally uses a timestamp on cached revisions\n"
"	to check that the right revision is delivered if an obliterate\n"
"	deletes a revision that is subsequently replaced with an identically-\n"
"	numbered revision.  Using this option causes problems if head\n"
"	revisions are obliterated.  However, the proxy cache can be pre-\n"
"	loaded with the server's archive files by specifying this flag\n"
"	when you start the proxy.\n"
"\n"
"    p4p -w ...\n"
"	Start the Perforce Proxy in read-only cache mode.  In this mode\n"
"	the proxy never updates its cache, which is useful if the cache\n"
"	is updated through a WAN NFS or other system-level remote\n"
"	filesystem method.\n"
"\n"
"    P4AUTH=central-server-address\n"
"	P4AUTH functionality is now fully supported for 2010.2, see the\n"
"	System Administration Guide for more details.\n"
"\n"
"    P4CHANGE=central-server-address\n"
"	P4CHANGE functionality is now fully supported for 2010.2, see the\n"
"	System Administration Guide for more details.\n"
"\n"
"    P4LOG=syslog\n"
"	Uses syslog instead of the named error log file for server error\n"
"	logging.  Must be set in server's environment.\n"
"\n"
"    P4DEBUG=server=2\n"
"	Logs server commands to the file configured by P4LOG.  The server=2\n"
"	option logs command completion. Must be set in server's environment.\n"
"	To disable all command logging, set server=0.\n"
"\n"
"    Perforce server configurables (unsupported)\n"
"    P4DEBUG=configurables\n"
"	For information about supported server configuration variables, see\n"
"	'p4 help configurables'.\n"
"\n"
"	The following server parameters can be tuned using 'p4 configure set'\n"
"	or by setting P4DEBUG to a list of variable=value pairs separated by\n"
"	commas. Change these values only as directed by Technical Support.\n"
"\n"
"	Values that are too large or small are silently corrected.\n"
"\n"
"	Name               Default Use\n"
"	----               ------- ---\n"
"	db.isalive             10K Rows scanned before maxLockTime check\n"
"	db.page.migrate		 0 Avoid allocateing pages at end of btree\n"
"	db.reorg.disable	 0 Disable BTree reorganization\n"
"	db.reorg.misorder	80 BTree reorg percent out of order trigger\n"
"	db.reorg.occup		 8 BTree reorg percent of page free remaining\n"
"	db.trylock               3 Attempts to avoid locks that block\n"
"	dbarray.putcheck        4K Every this many rows...\n"
"	dbarray.reserve         4M ...make sure we have this much memory\n"
"	dbjournal.wordsize      4K Journal word processing size\n"
"	dbopen.cache            96 Pages of cache for db.* files\n"
"	dbopen.cache.wide      192 Pages of cache for db.integed\n"
"	dbopen.freepct           0 Free page space on p4d -jr\n"
"	dbopen.pagesize         8K Page size of db.* files\n"
"	diff.binary.rcs          0 Diff binary+D (RCS) files as text\n"
"	diff.slimit1           10M Longest diff snake; smaller is faster\n"
"	diff.slimit2          100M Longest diff snake for smaller files\n"
"	diff.sthresh           50K Use slimit2 if lines to diff < sthresh\n"
"	dm.batch.domains         0 'labels path' scan in label intervals\n"
"	dm.changes.thresh1     50K 'changes -mx path' uses db.revcx if...\n"
"	dm.changes.thresh2     10K ...if < thresh2 of thresh1 db.rev match\n"
"	dm.copy.movewarn         0 verbose 'p4 copy' warnings for moved files\n"
"	dm.flushforce          10K Flushtry can expand until forced\n"
"	dm.flushtry            100 Update buffer for sync, resolve, edit\n"
"	dm.grep.maxlinelength 4096 Maximum line length that can be searched\n"
"	dm.grep.maxcontext      1K Maximum size of context allowed for grep\n"
"	dm.integ.engine          3 'p4 integrate' engine version\n"
"	                           2: 2006.1 integration engine\n"
"	                           3: 2013.2 integration engine\n"
"	dm.integ.maxact       100K Max db.integed edges considered for a file\n"
"	dm.integ.tweaks          0 Modify integrate behavior (engine=3 only):\n"
"	                           1: Treat all 'copy' records as 'merge'\n"
"	                           2: Treat all 'ignore' records as 'edit'\n"
"	                           4: Retain credit for copied-over edits\n"
"	                           8: Force convergent merge of all edits\n"
"	                          16: Legacy (pre-2011.1) resolve behavior\n"
"	dm.isalive             50K Rows scanned before client connection check\n"
"	dm.maxkey               1K Longest identifier (client, label, etc)\n"
"	dm.protects.allow.admin  0 Allow admin to use -agu flags (protects)\n"
"	dm.protects.hide         0 Hide exclusionary protections (protects)\n"
"	dm.quick.clients       10M Release lock if all needed rows buffered\n"
"	dm.quick.domains        1M Release lock if all needed rows buffered\n"
"	dm.quick.have           1M Release lock if all needed rows buffered\n"
"	dm.quick.integ          1M Release lock if all needed rows buffered\n"
"	dm.quick.resolve        1K Release lock if all needed rows buffered\n"
"	dm.quick.rev          100K Release lock if all needed rows buffered\n"
"	dm.quick.working        1K Release lock if all needed rows buffered\n"
"	dm.status.matchlines    80 Min %% matching lines to match moves\n"
"	dm.status.matchsize     10 Max size %% difference to match moves\n"
"	dm.revcx.thresh1        4K Path@change uses db.revcx if thresh2 ...\n"
"	dm.revcx.thresh2        1K ...of thresh1+thresh2 rows match path\n"
"	dm.user.insecurelogin    0 issue login tickets that work on all hosts\n"
"	filesys.cachehint        0 preserve buffer cache for db files (linux)\n"
"	filesys.maketmp         10 Max attempts to find unused temp name\n"
"	filesys.maxmap       1000M Use read rather than mmapping big files\n"
"	filesys.maxsymlink      1K Symlink maximum content length\n"
"	filesys.maxtmp          1M Rollover for creating temp file names\n"
"	map.joinmax1           10K Produce at most map1+map2+joinmax1\n"
"	map.joinmax2            1M Produce at most joinmax2\n"
"	map.maxwild             10 Maximum number of wildcards per line\n"
"	net.bufsize             4K Network I/O buffer size\n"
"	proxy.deliver.fix	 1 Enable fix for proxy hang\n"
"	rcs.maxinsert           1G Max lines in RCS archive file\n"
"	rpc.himark            2000 Max outstanding data between server/client\n"
"	rpc.lowmark            700 Interval for checking outstanding data\n"
"	rpc.ipaddr.mismatch      1 Check for client address mismatch\n"
"	rpl.awaitjnl.count     100 Max count of waits for journal data (-i 0)\n"
"	rpl.awaitjnl.interval   50 Millisecs to wait for journal data (-i 0)\n"
"	rpl.pull.reload      60000 Interval in ms for pull to reload config\n"
"	server.filecharset       0 Enable per-file charset storage\n"
"	serverlog.name.N      none Alias name for this log file\n"
"	serverlog.events.N    none Events that should write to this log\n"
"	spec.custom              0 If > 0 allow modifications to spec forms.\n"
"	submit.forcenoretransfer 0 Allow submit --forcenoretransfer option\n"
"	sys.rename.max          10 Limit for retrying a failed file rename\n"
"	sys.rename.wait       1000 Timeout in ms between file rename attempts\n"
# ifdef HAVE_SMARTHEAP
# ifdef OS_NTX86
"	sys.memory.poolfree     1M Free memory retained per heap, 1K blocks\n"
"	sys.memory.procfree     1M Free memory retained in process, 1K blocks\n"
# else
"	sys.memory.poolfree     4M Free memory retained per heap, 1K blocks\n"
"	sys.memory.procfree  undef Free memory retained in process, 1K blocks\n"
# endif
"	cmd.memory.poolfree      0 Same as sys.memory.poolfree, not persistent\n"
"	cmd.memory.procfree      0 Same as sys.memory.procfree, not persistent\n"
# endif
"\n"
"    Perforce client configuration (unsupported)\n"
"	May be set in P4CONFIG or P4ENVIRO files or via 'p4 set'\n"
"\n"
"	filesys.detectunicode	 1 Set to 0 to prevent unicode file detection\n"
"\n"
"    P4CHARSET\n"
"	Some P4CHARSET values exist which are undoc/unsupported for now\n"
"\n"
"	winoem		Windows Codepage 437 (US Command Window)\n"
};

ErrorId MsgHelp::HelpEnvironment = { ErrorOf( ES_HELP, 16, E_INFO, EV_NONE, 0  ), 
"\n"
"    Environment variables used by Perforce:\n"
"\n"
"    Variable         Defines                         More information\n"
"    --------         -------                         ------------------------\n"
"    P4ALIASES        Name of aliases file            p4 help aliases\n"
"    P4CHARSET        Client's local character set    p4 help charset\n"
"    P4COMMANDCHARSET Client's local character set\n"
"                     (for command line operations)   p4 help charset\n"
"    P4CLIENT         Name of client workspace        p4 help client\n"
"    P4CLIENTPATH     Directories client can access   Perforce Command Reference\n"
"    P4CONFIG         Name of configuration file      Perforce Command Reference\n"
"    P4DIFF           Diff program to use on client   p4 help diff\n"
"    P4DIFFUNICODE    Diff program to use on client   p4 help diff\n"
"    P4EDITOR         Editor invoked by p4 commands   p4 help change, etc\n"
"    P4ENVIRO         Name of environment file        Perforce Command Reference\n"
"    P4HOST           Name of host computer           p4 help usage\n"
"    P4IGNORE         Name of ignore file             Perforce Command Reference\n"
"    P4LANGUAGE       Language for text messages      p4 help usage\n"
"    P4LOGINSSO       Client side credentials script  p4 help triggers\n"
"    P4MERGE          Merge program to use on client  p4 help resolve\n"
"    P4MERGEUNICODE   Merge program to use on client  p4 help resolve\n"
"    P4PAGER          Pager for 'p4 resolve' output   p4 help resolve\n"
"    P4PASSWD         User password passed to server  p4 help passwd\n"
"    P4PORT           Port to which client connects   p4 help info\n"
"    P4SSLDIR         SSL server credential directory Perforce Command Reference\n"
"    P4TICKETS        Location of tickets file        Perforce Command Reference\n"
"    P4TRUST          Location of SSL trust file      Perforce Command Reference\n"
"    P4USER           Perforce user name              p4 help usage\n"
"    PWD              Current working directory       p4 help usage\n"
"    TMP, TEMP        Directory for temporary files   Perforce Command Reference\n"
"\n"
"    For details about configuring Windows settings, issue the 'p4 help set' \n"
"    command.  The syntax for setting an environment variable depends on the\n"
"    OS/shell.  Many shells permit you to set shell variables separately from\n"
"    environment variables, but Perforce cannot access the shell variable,\n"
"    only the environment variable.\n"
"\n"
"    Variables of primary interest to typical users are:\n"
"    $P4CLIENT, $P4PORT and $P4PASSWD.\n"
"\n"
"    Environment variables used by the Perforce server:\n"
"\n"
"    Variable         Defines                         More information\n"
"    --------         -------                         ------------------------\n"
"    P4AUDIT         Name of server audit file        p4d -h\n"
"    P4AUTH          Authentication server address    System Admin Guide\n"
"    P4CHANGE        Global changelist server address System Admin Guide\n"
"    P4DEBUG         Server diagnostic trace flags    Perforce Technical Support\n"
"    P4DESCRIPTION   Text description for server      System Admin Guide\n"
"    P4JOURNAL       Name of server journal file      p4d -h\n"
"    P4LOG           Name of server log file          p4d -h\n"
"    P4NAME          Unique server name               System Admin Guide\n"
"    P4PORT          Port on which server listens     p4d -h\n"
"    P4ROOT          Server root directory            p4d -h\n"
"    P4SSLDIR        Server SSL credentials directory System Admin Guide\n"
"    P4TARGET        Target server for proxy/replica  Perforce Command Reference\n"
"    P4TICKETS       Location of tickets file         Perforce Command Reference\n"
"    P4TRUST         Location of SSL trust file       Perforce Command Reference\n"
"    TMP, TEMP       Directory for temporary files    Perforce Command Reference\n"
"\n"
"    To set server environment variables persistently, use the 'p4 configure' \n"
"    command.  Note that P4ROOT and TMP/TEMP cannot be set using 'p4 configure'.\n"
"    Also note that server environment variables are not searched for in\n"
"    configuration or environment files, i.e. P4CONFIG and P4ENVIRO are ignored.\n"
};

ErrorId MsgHelp::HelpFiletypes = { ErrorOf( ES_HELP, 17, E_INFO, EV_NONE, 0  ), 
"\n"
"    File types supported by Perforce:\n"
"\n"
"	Perforce file type determines how the file is handled on both the\n"
"	client and the server.\n"
"\n"
"	A filetype can be specified as 'type', with modifiers as 'type+mods'\n"
"	or as just the modifiers '+mods'.\n"
"\n"
"	The following are the base Perforce filetypes:\n"
"\n"
"	    Type        Client Use              Server Storage\n"
"	    ----        ----------              --------------\n"
"	    text        newlines translated     deltas in RCS format\n"
"	    binary      raw bytes               compressed binary\n"
"	    symlink     symbolic link           deltas in RCS format\n"
"	    apple       Mac resource + data     compressed AppleSingle\n"
"	    resource    Mac resource fork       compressed binary\n"
"	    unicode     newlines translated     deltas in RCS format\n"
"	                                        stored as UTF-8\n"
"	    utf8	newlines translated     deltas in RCS format\n"
"	                client file UTF-8  	stored as UTF-8\n"
"	    utf16	newlines translated     deltas in RCS format\n"
"	                client file UTF-16      stored as UTF-8\n"
"\n"
"	                Files of type utf16 are stored in the depot in UTF-8.\n"
"	                These files are in utf16 in the client workspace.\n"
"	                The automatic type detection requires a BOM be present\n"
"	                at the start of the file.  Files without a BOM are\n"
"	                assumed to be in client byte order.  When utf16 files\n"
"	                are written to a client, they are written with a BOM\n"
"	                in client byte order.\n"
"\n"
"	The following are the modifiers:\n"
"\n"
"	    Modifier    Meaning\n"
"	    --------    -------\n"
"	    +m		always set modtime on client\n"
"			(overrides client's nomodtime)\n"
"	    +w          always writable on client\n"
"	    +x          exec bit set on client\n"
"\n"
"	    +k		$Keyword$ expansion of Id, Header, Author\n"
"			Date, DateUTC, DateTime, DateTimeUTC, DateTimeTZ\n"
"			Change, File, Revision\n"
"	    +ko         $Keyword$ expansion of ID, Header only\n"
"	    +l		exclusive open: disallow multiple opens\n"
"\n"
"	    +C          server stores compressed file per revision\n"
"	    +D          server stores deltas in RCS format\n"
"	    +F          server stores full file per revision\n"
"	    +S          server stores only single head revision\n"
"	    +S<n>       server stores <n> number of revisions, where <n>\n"
"	                is a number 1-10 or 16,32,64,128,256,512.\n"
"	    +X		server runs archive trigger to access files\n"
"\n"
"	The following aliases for filetypes are supported for backwards\n"
"	compatibility:\n"
"\n"
"	    Type        Is Base Type         Plus Modifiers\n"
"	    --------    ------------         --------------\n"
"	    ctempobj    binary               +Sw\n"
"	    ctext       text                 +C\n"
"	    cxtext      text                 +Cx\n"
"	    ktext       text                 +k\n"
"	    kxtext      text                 +kx\n"
"	    ltext       text                 +F\n"
"	    tempobj     binary               +FSw\n"
"	    ubinary     binary               +F\n"
"	    uresource   resource             +F\n"
"	    uxbinary    binary               +Fx\n"
"	    xbinary     binary               +x\n"
"	    xltext      text                 +Fx\n"
"	    xtempobj    binary               +Swx\n"
"	    xtext       text                 +x\n"
"	    xunicode    unicode              +x\n"
"	    xutf16	utf16                +x\n"
"\n"
"	'p4 add', 'p4 edit', and 'p4 reopen' accept the '-t filetype'\n"
"	flag to specify the filetype.  If you omit the -t flag, 'p4 add'\n"
"	determines filetype using its own logic and the name-to-type\n"
"	mapping table managed by 'p4 typemap', if configured.\n"
"	'p4 edit -t auto' will determine the filetype by the above mentioned\n"
"	logic.\n"
"\n"
"	By default, 'p4 edit' and 'p4 reopen' reuse the current file\n"
"	filetype, and 'p4 add' determines the filetype by examining the\n"
"	file's contents and its execute permission bits.\n"
"\n"
"	If a filetype is specified using only '+mods, then that filetype\n"
"	is combined with the default.  Most modifiers are simply added to\n"
"	the default type, but the +C, +D, and +F storage modifiers replace\n"
"	the storage method.  To remove a previously assigned modifier, the\n"
"	whole filetype must be specified.\n"
};

ErrorId MsgHelp::HelpJobView = { ErrorOf( ES_HELP, 18, E_INFO, EV_NONE, 0  ), 
"\n"
"   Perforce job views:\n"
"\n"
"	A job view is an expression that selects jobs according to word\n"
"	and date matches.  Job views are used by the 'p4 jobs' -e flag\n"
"	to select the jobs to be displayed.  The 'p4 user' form contains\n"
"	a JobView field, which selects the jobs that are added to newly-\n"
"	created changelists.\n"
"\n"
"	'p4 job' indexes all whitespace-separated words and all punctuation-\n"
"	separated words within those words.  So 'sub-par' is entered into\n"
"	the index as 'sub', 'par', and 'sub-par'.  Case is not considered.\n"
"	'p4 job' separately indexes all date fields in a way that enables\n"
"	you to search for a range of dates.\n"
"\n"
"	In its simplest form, a job view is a list of words separated by\n"
"	spaces, used to select jobs. For a match to occur, all the specified\n"
"	words must appear somewhere in the job, except for date fields:\n"
"\n"
"		JobView: GUI redrawing bug\n"
"		p4 jobs -e 'GUI redrawing bug'\n"
"\n"
"	To match the contents of a particular field, use the 'field=word'\n"
"	syntax:\n"
"\n"
"		JobView: GUI redrawing status=open \n"
"\n"
"	Logical operators & (and), | (or), ^ (not), and () (grouping) can\n"
"	also be used. Spaces are treated as a low-precedence 'and' operator:\n"
"\n"
"		JobView: redrawing (type=bug|type=sir) status=open\n"
"\n"
"	The ^ (not) operator can be used only in conjunction with the & (and)\n"
"	or space (and) operators:\n"
"\n"
"		JobView: type=bug & ^status=closed\n"
"\n"
"	The comparative operators >, >=, <, <=, and = succeed if any\n"
"	word in the field matches, so only the = operator\n"
"	is useful for matching fields that contain blocks of text:\n"
"\n"
"		JobView: priority<=b description=gui\n"
"\n"
"	Text searches can use the * wildcard, which matches anything:\n"
"\n"
"		JobView: redraw* type=bug\n"
"\n"
"	To match operator characters, escape them with \\. To match the\n"
"	backslash character, escape it with an additional backslash (\\\\).\n"
"\n"
"	Date fields can be searched using comparative operators.  Specify\n"
"	dates using the format yyyy/mm/dd or yyyy/mm/dd:hh:mm:ss.  If you\n"
"	omit the time, the equality operators (=, <=, >=) match the whole day:\n"
"\n"
"		JobView: reported_date>=1998/01/01 status=closed\n"
"\n"
"	Text field comparisons are done alphabetically. Date field \n"
"	comparisons are done chronologically.\n"
};

ErrorId MsgHelp::HelpRevisions = { ErrorOf( ES_HELP, 19, E_INFO, EV_NONE, 0  ), 
"\n"
"    Specifying file revisions and revision ranges:\n"
"\n"
"	You can limit the effect of some commands to a single file revision\n"
"	or a range of revisions, by appending one of the following revision\n"
"	specifiers to the file specification:\n"
"\n"
"	    #rev - A revision number or one of the following keywords:\n"
"	    #none - A nonexistent revision (also #0).\n"
"	    #head - The current head revision (also @now).\n"
"	    #have - The revision on the current client.\n"
"	    @change - A change number: the revision as of that change.\n"
"	    @client - A client name: the revision on the client.\n"
"	    @label - A label name: the revision in the label.\n"
"	    @date - A date or date/time: the revision as of that time.\n"
"		    Either yyyy/mm/dd or yyyy/mm/dd:hh:mm:ss\n"
"		    Note that yyyy/mm/dd means yyyy/mm/dd:00:00:00.\n"
"		    To include all events on a day, specify the next day.\n"
"\n"
"	Only matching revisions are processed. If you use a label to refer to\n"
"	a file that the label doesn't contain, the file is not processed.\n"
"\n"
"	If you omit the revision specification, the default is usually #head.\n"
"\n"
"	If you specify a revision or range and omit the file specification,\n"
"	the command affects all relevant files. For example, #head refers\n"
"	to the head revision of all files in the depot, and @label refers\n"
"	to the revisions of all files in the specified label.\n"
"\n"
"	Files that have been shelved can be accessed by the 'p4 diff',\n"
"	'p4 diff2', 'p4 files' and 'p4 print' commands using the revision\n"
"	specification '@=change', where 'change' is the pending changelist\n"
"	number.\n"
"\n"
"	Some commands accept a range of revisions, specified as the start\n"
"	and end revisions separated by a comma. If a single revision is\n"
"	specified where a revision range is expected, the revision specifies\n"
"	the end revision, and the start defaults to revision #1.\n"
"\n"
"	'p4 obliterate' is an exception: a single revision means only\n"
"	that revision.\n"
"\n"
"	If you omit the revision specifier, the default is all revisions.\n"
};

ErrorId MsgHelp::HelpViews = { ErrorOf( ES_HELP, 20, E_INFO, EV_NONE, 0  ), 
"\n"
"    Perforce views:\n"
"\n"
"	A Perforce view maps file names from the depot to the client\n"
"	workspace (client view) or to another part of the depot\n"
"	(branch view), or selects a subset of the depot (label view).\n"
"\n"
"	A view is one or more mappings, and each mapping is a pair of file\n"
"	names on a line.  The left side always refers to the depot namespace;\n"
"	the right side refers to the client or depot namespace.  Each name\n"
"	is in Perforce syntax: it begins with //, followed by the client or\n"
"	depot name, then the file name. If the path contains whitespace, it\n"
"	must be double-quoted.  Perforce syntax uses forward slashes (/) as\n"
"	directory separators. Example:  \"//depot/a dir/file.c\"\n"
"\n"
"	Mappings can contain wildcards. Wildcards on the right and left sides\n"
"	of a mapping must match. Valid wildcards are:\n"
"\n"
"		*			Matches any characters except /\n"
"		... 			Matches any characters, including /\n"
"		%%%%1 to %%%%9 		Like *, but used to reorder the path\n"
"\n"
"	If more than one mapping line refers to the same files, the later\n"
"	mapping line overrides the earlier one.\n"
"\n"
"	A mapping line that begins with a + overlays the later mapping on\n"
"	an earlier one: if files match both the earlier and later mappings,\n"
"	then the file matching the later mapping is used. Overlay mappings\n"
"	are supported only for client views, and enable you to map multiple\n"
"	server directories to the same client directory.\n"
"\n"
"	A mapping line that begins with a & does not override earlier mappings\n"
"	for the same depot path, allowing multiple 'ditto' versions of the\n"
"	same depot file to be synced to one workspace.  Ditto mappings are\n"
"	supported only for client views, and files mapped in this way are\n"
"	read-only.\n"
"\n"
"	To exclude matching files, precede the mapping with a minus sign (-).\n"
};

ErrorId MsgHelp::HelpMaxResults = { ErrorOf( ES_HELP, 21, E_INFO, EV_NONE, 0  ), 
"\n"
"    Limiting data access:\n"
"\n"
"	To avoid swamping servers with requests that result in large datasets,\n"
"	the Perforce super-user can limit the amount of data that the server\n"
"	handles for client operations.\n"
"\n"
"	The following limits can be set: MaxResults, MaxScanRows, MaxLockTime\n"
"	and MaxOpenFiles.  If an operation exceeds any of these limits, the\n"
"	whole operation fails.\n"
"\n"
"	MaxResults limits the number of rows of result data buffered and\n"
"	prevents the server from using excessive memory.\n"
"\n"
"	MaxScanRows limits the number of rows of data considered and prevents\n"
"	the server from making large-scale scans.\n"
"\n"
"	MaxLockTime limits the amount of time spent during data scans to\n"
"	prevent the server from locking tables for too long.  MaxLockTime\n"
"	starts counting when the first table is locked, and includes time\n"
"	spent waiting for any subsequent table locks.\n"
"\n"
"	MaxOpenFiles limits the number of files that can be opened by a single\n"
"	operation and prevents users from accidentally opening an excessive\n"
"	portion of the repository.\n"
"\n"
"	To set limits for groups of users, issue the 'p4 group' command.\n"
"\n"
"	You may wish to additionally set server.commandlimits=2 in order to\n"
"	disable overriding these settings on a per-command basis.\n"
"\n"
"	Each group has MaxResults, MaxScanRows, MaxLockTime and MaxOpenFiles\n"
"	fields, which limit the resources committed to operations performed by\n"
"	members of the group.  For these fields, 'unlimited' or 'unset'\n"
"	means no limit for that group.  An individual user's limit is the\n"
"	highest of any group with a limit to which he belongs, unlimited if\n"
"	any of his groups has 'unlimited' for that field, or unlimited\n"
"	if he belongs to no group with a limit.\n"
"\n"
"	For naive users, set MaxResults to a value that is larger than the\n"
"	number of files likely to reside in any of their client workspaces.\n"
"	Set MaxScanRows to MaxResults multiplied by the average number of\n"
"	revisions per file in the repository.  As a rule, neither need to\n"
"	be smaller than 10000 or 50000 (respectively), and values of 50000\n"
"	and 250000 are probably sufficient to prevent accidental misuse\n"
"	without interfering with normal use.  Set MaxLockTime to a value\n"
"	in the 1000-30000 (1-30 second) range.  Set MaxOpenFiles to a value\n"
"	that is smaller than MaxResults, but larger than the number of files\n"
"	likely to exist in a single project.\n"
"\n"
"	The following table lists the commands that are controlled by these\n"
"	limits, the entity that is counted, and tells you how to adjust the\n"
"	operation to run within the limit.\n"
"\n"
"	Command                 Counting        Reduce output with:\n"
"	-------                 --------        -------------------\n"
"	p4 add                  files * **      see (1)\n"
"	p4 annotate             revisions       see (2)\n"
"	p4 changes              changes         -m maxChanges\n"
"	p4 changes files        revisions       see (2)\n"
"	p4 delete               files * **      see (1)\n"
"	p4 describe             files *         see (3)\n"
"	p4 diff                 files *         see (1)\n"
"	p4 diff2                files           see (1)\n"
"	p4 dirs                 files *         see (1)\n"
"	p4 edit                 files * **      see (1)\n"
"	p4 fetch                revisions       see (2)\n"
"	p4 filelog              revisions       see (2)\n"
"	p4 files                files           see (1)\n"
"	p4 fixes                fixes           -j job, -c change\n"
"	p4 fixes files          revisions       see (2)\n"
"	p4 fstat                files           see (1)\n"
"	p4 integrate            files **        see (1)\n"
"	p4 integrated           revisions       see (2)\n"
"	p4 jobs                 jobs            -e query\n"
"	p4 jobs files           revisions       see (2)\n"
"	p4 have                 files *         see (1)\n"
"	p4 labels files         files *         see (1)\n"
"	p4 labelsync            files           see (4)\n"
"	p4 list                 files           see (1)\n"
"	p4 lock                 files *         see (1)\n"
"	p4 obliterate           revisions *     see (2)\n"
"	p4 opened               files *         see (1)\n"
"	p4 print                files           see (1)\n"
"	p4 push                 revisions       see (2)\n"
"	p4 reload               files *         see (5)\n"
"	p4 revert               files *         see (1)\n"
"	p4 reopen               files *         see (1)\n"
"	p4 resolve              files *         see (1)\n"
"	p4 resolved             revisions *     see (2)\n"
"	p4 reviews -c           revisions *     see (2)\n"
"	p4 sizes                files           see (1)\n"
"	p4 sync                 files           see (1)\n"
"	p4 unload               files *         see (5)\n"
"	p4 verify               revisions       -m maxRevs\n"
"	p4 zip                  revisions       see (2)\n"
"\n"
"	*  Subject to MaxScanRows/MaxLockTime but not MaxResults.\n"
"	** Subject to MaxOpenFiles.\n"
"\n"
"	(1) These commands limit files.  Use more restrictive wildcards.\n"
"\n"
"	(2) These commands limit individual revisions of each file,\n"
"	which can significantly exceed the number of actual files.\n"
"	Restrict the operation by using more restrictive wildcards on\n"
"	the command line to exclude more files, or by using a\n"
"	revision range (if permitted).\n"
"\n"
"	(3) If the data required to describe a change exceeds the limit,\n"
"	'describe cannot be run.\n"
"\n"
"	(4) 'labelsync' limits files.  To build up the label in pieces,\n"
"	use restrictive wildcards with 'p4 labelsync -a'.\n"
"\n"
"	(5) To 'unload' a client, you must be able to scan all the files\n"
"	in the client's have list; to 'unload' a label, you must be able\n"
"	to scan all the files listed in the label. If you are trying to\n"
"	unload or reload your own client or label, but are resource limited,\n"
"	you will need to ask an administrator with higher limits to unload\n"
"	or reload the client or label for you.\n"
};

ErrorId MsgHelp::HelpCharset = { ErrorOf( ES_HELP, 23, E_INFO, EV_NONE, 0  ), 
"\n"
"	The Perforce clients and server have an optional mode of operation\n"
"	in which all metadata and some file content are stored in the server\n"
"	in the UTF8 Unicode character set and are translated into another\n"
"	character set on the client.\n"
"\n"
"	The environment variable P4CHARSET specifies the client character\n"
"	set.  Valid settings for P4CHARSET are:\n"
"\n"
"		auto		(Guess a P4CHARSET based on client OS params\n"
"		none		(same as unsetting P4CHARSET)\n"
"		eucjp\n"
"		iso8859-1\n"
"		iso8859-5\n"
"		iso8859-7\n"
"		iso8859-15\n"
"		macosroman\n"
"		shiftjis\n"
"		koi8-r\n"
"		utf8 		(UTF-8)\n"
"		utf8-bom	(UTF-8 with Byte-Order-Mark)\n"
"		utf16		(UTF-16 with client's byte ordering\n"
"					 and Byte-OrderMark)\n"
"		utf16-nobom	(UTF-16 client's byte ordering\n"
"					 without Byte-Order-Mark)\n"
"		utf16le		(UTF-16 with little endian byte ordering)\n"
"		utf16le-bom	(UTF-16 with little endian Byte-Order-Mark)\n"
"		utf16be		(UTF-16 with big endian byte ordering)\n"
"		utf16be-bom	(UTF-16 with big endian Byte-Order-Mark)\n"
"		utf32		(UTF-32 with client's byte ordering\n"
"					 and Byte-OrderMark)\n"
"		utf32-nobom	(UTF-32 client's byte ordering\n"
"					 without Byte-Order-Mark)\n"
"		utf32le		(UTF-32 with little endian byte ordering)\n"
"		utf32le-bom	(UTF-32 with little endian Byte-Order-Mark)\n"
"		utf32be		(UTF-32 with big endian byte ordering)\n"
"		utf32be-bom	(UTF-32 with big endian Byte-Order-Mark)\n"
"		cp850		(Windows code page 850)\n"
"		cp858		(Windows code page 858)\n"
"		cp936		(Windows code page 936 - Simplified Chinese)\n"
"		cp949		(Windows code page 949 - Korean)\n"
"		cp950		(Windows code page 950 - Traditional Chinese)\n"
"		cp1251		(Windows code page 1251 - Cyrillic)\n"
"		winansi		(Windows code page 1252)\n"
"		cp1253		(Windows code page 1253 - Greek)\n"
"\n"
"	If (and only if) P4CHARSET is set for the client, the server\n"
"	must also be operating in Unicode mode.  This mode is switched\n"
"	on (and never off) by invoking 'p4d -xi' on the server.  This\n"
"	operation verifies that all existing metadata is valid UTF8,\n"
"	and then sets the protected counter 'unicode' to indicate that\n"
"	the server now runs in Unicode mode.\n"
"\n"
"	If P4CHARSET is not set explicitly when connecting to a Unicode mode\n"
"	server, a default charset will be chosen based on the client's\n"
"	platform and/or code page.\n"
"\n"
"	In Unicode mode, all non-file data (identifiers, descriptions,\n"
"	etc) and the content of files of type 'unicode' are translated\n"
"	between the character set configured on the client by P4CHARSET\n"
"	and UTF8 in the server.\n"
"\n"
"	P4CHARSET is supported by 2001.2 and later clients.\n"
"\n"
"	When P4CHARSET is set to one of the UTF-16 values, P4COMMANDCHARSET\n"
"	must be set to a non-utf-16 value for the p4 command-line client to\n"
"	operate correctly.  This configuration enables P4CHARSET to control\n"
"	the translation of file revision contents while using a command\n"
"	line system that is not utf-16 based (because most command lines\n"
"	are not utf-16 compatible).  All UTF-16 values honor a file's Byte-\n"
"	Order-Mark when a file is read. When a file is written, the specified\n"
"	UTF-16 format is observed.\n"
};

ErrorId MsgHelp::HelpCommandments = { ErrorOf( ES_HELP, 128, E_INFO, EV_NONE, 0  ), 
"\n"
"	P4 Commandments -- Values we work by\n"
"\n"
"	* We have high standards.\n"
"	* We are straightforward.\n"
"	* We rise to responsibility.\n"
"	* We like work we can be proud of.\n"
"	* We like to hear what we've done.\n"
"	* We value both people skills and job skills.\n"
"	* We treat each other with dignity and respect.\n"
"	* We are one team. We are not in competition with each other.\n"
"	* We talk and listen. We like feedback.\n"
"	* We appreciate creative and practical solutions. There might be\n"
"	  a better way.\n"
"	* We appreciate people for who they are.\n"
"	* Fun is always an option. It is not mandatory.\n"
"	* These are the best years of our lives.\n"
};

ErrorId MsgHelp::HelpCredits = { ErrorOf( ES_HELP, 24, E_INFO, EV_NONE, 0  ), 
"\n"
"	Perforce, The Fast Software Configuration Management System,\n"
"	from the fleet fingers of Christopher Seiwald, with notable\n"
"	contributions from Jeff Anton, Michael Bishop, Brian Campbell,\n"
"	Geri Clucas, Cal Collier, Jason Gibson, Wendy Heffner, Sven Knop,\n"
"	Peter Kreps, Fred Malouf, Mark Mears, Michael Alyn Miller,\n"
"	Bryan Pendleton, Nick Poole, Mike Schonberg, Andy Shebanow,\n"
"	Michael Shields, David Sielaff, Tony Smith, Sam Stafford,\n"
"	James Strickland, Brett Taylor,	Marc Tooley, Alan Teague\n"
"	and Mark Wittenberg.\n"
};

ErrorId MsgHelp::HelpAdd = { ErrorOf( ES_HELP, 25, E_INFO, EV_NONE, 0  ), 
"\n"
"    add -- Open a new file to add it to the depot\n"
"\n"
"    p4 add [-c changelist#] [-d -f -I -n] [-t filetype] file ...\n"
"\n"
"	Open a file for adding to the depot.  If the file exists on the\n"
"	client, it is read to determine if it is text or binary. If it does\n"
"	not exist, it is assumed to be text.  To be added, the file must not\n"
"	already reside in the depot, or it must be deleted at the current\n"
"	head revision.  Files can be deleted and re-added.\n"
"\n"
"	A 2012.1 client will ignore files that were to be added, if they\n"
"	match an exclusion line specified in a P4IGNORE file.\n"
"\n"
"	To associate the open files with a specific pending changelist, use\n"
"	the -c flag; if you omit the -c flag, the open files are associated\n"
"	with the default changelist.  If file is already open, it is moved\n"
"	into the specified pending changelist.  You cannot reopen a file for\n"
"	add unless it is already open for add.\n"
"\n"
"	As a shortcut to reverting and re-adding, you can use the -d\n"
"	flag to reopen currently-open files for add (downgrade) under\n"
"	the following circumstances:\n"
"\n"
"	    A file that is 'opened for edit' and is synced to the head\n"
"	    revision, and the head revision has been deleted (or moved).\n"
"\n"
"	    A file that is 'opened for move/add' can be downgraded to add,\n"
"	    which is useful when the source of the move has been deleted\n"
"	    or moved.  Typically, under these circumstances, your only\n"
"	    alternative is to revert.  In this case, breaking the move\n"
"	    connection enables you to preserve any content changes in the\n"
"	    new file and safely revert the source file (of the move).\n"
"\n"
"	To specify file type, use the -t flag.  By default, 'p4 add'\n"
"	determines file type using the name-to-type mapping table managed\n"
"	by 'p4 typemap' and by examining the file's contents and execute\n"
"	permission bit. If the file type specified by -t or configured in\n"
"	the typemap table is a partial filetype, the resulting modifier is\n"
"	applied to the file type that is determined by 'p4 add'. For more\n"
"	details, see 'p4 help filetypes'.\n"
"\n"
"	To add files with filenames that contain wildcard characters, specify\n"
"	the -f flag. Filenames that contain the special characters '@', '#',\n"
"	'%%' or '*' are reformatted to encode the characters using ASCII\n"
"	hexadecimal representation.  After the files are added, you must\n"
"	refer to them using the reformatted file name, because Perforce\n"
"	does not recognize the local filesystem name.\n"
"\n"
"	The -I flag informs the client that it should not perform any ignore\n"
"	checking configured by P4IGNORE.\n"
"\n"
"	The -n flag displays a preview of the specified add operation without\n"
"	changing any files or metadata.\n"
};

ErrorId MsgHelp::HelpServerid = { ErrorOf( ES_HELP, 139, E_INFO, EV_NONE, 0  ), 
"\n"
"    p4 serverid [serverID]\n"
"\n"
"	'p4 serverid' gets or sets the unique id of the server. Use\n"
"	this command after you have first described the server using the\n"
"	'p4 server' command.\n"
"\n"
"	Unless a P4NAME value has been specified for the server, the server\n"
"	uses the serverid to determine the appropriate configuration settings\n"
"	(see 'p4 help configure').\n"
"\n"
"	The recommended technique for configuring servers in a multi-server\n"
"	installation is to give each server its own serverid, and specify\n"
"	the server configuration for that serverid; specifying a separate\n"
"	P4NAME for the server is generally not necessary.\n"
};

ErrorId MsgHelp::HelpAdmin = { ErrorOf( ES_HELP, 26, E_INFO, EV_NONE, 0  ), 
"\n"
"    admin -- Perform administrative operations on the server\n"
"\n"
"    p4 admin checkpoint [-z | -Z] [prefix]\n"
"    p4 admin journal [-z] [prefix]\n"
"    p4 admin stop\n"
"    p4 admin restart\n"
"    p4 admin updatespecdepot [-a | -s type]\n"
"    p4 admin resetpassword -a | -u user\n"
"    p4 admin setldapusers\n"
"\n"
"	'p4 admin updatespecdepot' and 'p4 admin resetpassword' require\n"
"	'super' access.  The others require that the user be an operator\n"
"	or have 'super' access.\n"
"\n"
"	'p4 admin checkpoint' causes the server to take a checkpoint and\n"
"	to copy the journal to a numbered journal file.  This command is\n"
"	equivalent to 'p4d -jc'.\n"
"\n"
"	'p4 admin journal' causes the server to save the journal to a\n"
"	numbered journal file and then truncate it.  This command is\n"
"	equivalent to 'p4d -jj'.\n"
"\n"
"	The -z flag saves the checkpoint and journal in compressed (gzip)\n"
"	format, with the '.gz' extension added to the file names.\n"
"\n"
"	The -Z flag saves the checkpoint in compressed (gzip) format,\n"
"	with the '.gz' extension added to the file name, but saves\n"
"	the journal as plain text (without an appended '.gz' extension).\n"
"	This allows a replica to update from the uncompressed journal\n"
"	without requiring the replica to stop and restart, while still\n"
"	saving disk space by compressing the presumably large checkpoint.\n"
"\n"
"	If a prefix is specified, the files are named prefix.ckp.n and\n"
"	prefix.jnl.n respectively, where n is a sequence number. Without\n"
"	a prefix, the default filenames are checkpoint.n and journal.n.\n"
"\n"
"	'p4 admin stop' stops the server, terminating any requests currently\n"
"	running.  It locks the database to ensure that no updates are taking\n"
"	place, but otherwise does not wait for users to finish what they are\n"
"	doing. (Windows NT: this command can be used regardless of whether\n"
"	you are running the server as a program or a service.)\n"
"\n"
"	'p4 admin restart' restarts the server, terminating any requests\n"
"	currently running.  It locks the database to ensure that no updates\n"
"	are taking place, but otherwise does not wait for users to finish what\n"
"	they are doing. (Windows NT: this command can be used regardless of\n"
"	whether you are running the server as a program or a service.) The\n"
"	restarted server will pick up the latest configurable settings.\n"
"\n"
"	'p4 admin updatespecdepot' archives forms (client, depot, branch,\n"
"	label, typemap, group, user, job, stream, triggers, protect, server,\n"
"	license, and jobspec forms) into the spec depot.  To archive\n"
"	all types of form specifications specify the -a flag. To archive\n"
"	a single type of spec, specify the '-s' flag. Only forms that have\n"
"	not yet been archived are created.\n"
"\n"
"	'p4 admin resetpassword' forces specified users with existing\n"
"	passwords to change their passwords before they can run another\n"
"	command. To force password reset of all users with passwords, specify\n"
"	the '-a' flag. To force password reset of a single user, specify the\n"
"	'-u' flag.\n"
"\n"
"	'p4 admin setldapusers' bulk updates users' AuthMethod field to 'ldap'.\n"
"	This affects all non-super users of standard type.\n"
"\n"
};

ErrorId MsgHelp::HelpJournaldbchecksums = { ErrorOf( ES_HELP, 135, E_INFO, EV_NONE, 0  ), 
"\n"
"    journaldbchecksums -- write journal notes with table checksums\n"
"\n"
"    p4 journaldbchecksums [-t tableincludelist | -T tableexcludelist] [-l N]\n"
"    p4 journaldbchecksums -u filename -t tablename [-v N] [-z]\n"
"    p4 journaldbchecksums -s -t tablename [ -b blocksize ][-v N] \n"
"    p4 journaldbchecksums -c change\n"
"\n"
"	'p4 journaldbchecksums' provides a set of tools for ensuring data\n"
"	integrity across a multi-server installation.\n"
"\n"
"	This command enables administrators to compare database contents\n"
"	between the master server and its replicas. Important information\n"
"	about the results of the command is logged to structured server logs\n"
"	as events of type 'integrity', so using this command effectively\n"
"	includes defining a log such as 'integrity.csv' to capture these log\n"
"	events and then reviewing the log files regularly.\n"
"\n"
"	Effective replica monitoring must be performed regularly, so when\n"
"	using the 'p4 journaldbchecksums' command, you should ensure\n"
"	that the rpl.checksum.change and rpl.checksum.table configurables\n"
"	have been configured to enable routine integrity verification, and\n"
"	you should ensure that you regularly inspect your integrity logs for\n"
"	indications of problems.\n"
"\n"
"	The rpl.checksum.change configurable can be set to 0,1,2,3; it\n"
"	defaults to 0. The levels operate as follows:\n"
"	    0: don't do any changelist checksumming\n"
"	    1: server writes journal note at end of submit, populate,\n"
"	       push, fetch, and unzip commands\n"
"	    2: replica should verify the changelist summary, and should\n"
"	       write to integrity.csv if the changelist does not match\n"
"	    3: replica should write the results to integrity.csv even\n"
"	       if the changelist checksum does match\n"
"\n"
"	The rpl.checksum.table configurable can be set to 0,1,2; it\n"
"	defaults to 0. The levels operate as follows:\n"
"	    0: table-level checksumming only\n"
"	    1: journal notes for table-unload and table-scan are processed\n"
"	       by the replica, and are logged if the check fails\n"
"	    2: results of journal note processing in the replica are\n"
"	       logged even if the results match.\n"
"\n"
"	The first form of the 'p4 journaldbchecksums' command causes the\n"
"	server to write journal notes containing table checksum information.\n"
"	Replica servers will automatically verify the table checksums when\n"
"	processing these notes.\n"
"\n"
"	The -t and -T flags specify a list of database tables that are,\n"
"	respectively, included or excluded from the set of tables for which\n"
"	journal notes are written.  To specify multiple tables, double-quote\n"
"	the list and separate the table names with spaces. The table names\n"
"	must start with \"db.\". Table names can also be separated by commas.\n"
"\n"
"	When the server rotates its journal as part of the 'admin checkpoint'\n"
"	or 'admin journal' commands, it automatically performs the\n"
"	'journaldbchecksums' command; the set of tables included in the\n"
"	command is controlled by the rpl.checksum.auto configurable. To\n"
"	specify the same set of tables explicitly in the 'journaldbchecksums'\n"
"	command, specify the table set level using the -l flag.\n"
"\n"
"	The table set levels for this release are:\n"
"	    1: the most important system and revision tables. Checksum errors\n"
"	       in these tables should be investigated immediately.\n"
"	    2: all tables that should not vary between unfiltered replicas\n"
"	    3: all tables, including tables which will vary on build-server\n"
"	       and edge-server replicas\n"
"\n"
"	Note that if data filtering is used for a replica, both the table\n"
"	and changelist checksums are affected and can be expected to differ.\n"
"\n"
"	The second form of the 'p4 journaldbchecksums' command causes the\n"
"	server to unload the specified database table to the specified file.\n"
"	The command also writes a journal note describing this action, and\n"
"	replica servers will automatically unload the same table to the same\n"
"	file when processing these notes. This allows you to compare the\n"
"	contents of the table in a time-consistent fashion. This command\n"
"	is recommended only for tables that are small. The -z flag specifies\n"
"	that the file should be compressed.\n"
"\n"
"	The third form of the 'p4 journaldbchecksums' command causes the\n"
"	server to scan the specified database table. The table is scanned\n"
"	in blocks; the number of records in a block is specified by the -b\n"
"	flag, which defaults to 5,000. For each block, the server computes\n"
"	a block checksum and writes it as a journal note. Replica servers\n"
"	will automatically verify these blocks when processing these notes.\n"
"	This command can be used with large tables on a production system\n"
"	as the table is unlocked between each block. Inspecting the results\n"
"	of the block verifications will reveal the location of damage which\n"
"	affects only part of a database table.\n"
"\n"
"	When unloading or scanning a table, the -v flag specifies the server\n"
"	version number to use. If it is not specified, the current server\n"
"	version is used.\n"
"\n"
"	The fourth form of the 'p4 journaldbchecksums' command causes the\n"
"	server to compute a checksum of an individual submitted changelist.\n"
"	This checksum is written as a journal note, and replica servers will\n"
"	automatically verify the checksum of the change when processing\n"
"	these notes.\n"
"\n"
"	'p4 journaldbchecksums' requires that the user be an operator or\n"
"	have 'super' access.\n"
};

ErrorId MsgHelp::HelpJournalcopy = { ErrorOf( ES_HELP, 171, E_INFO, EV_NONE, 0  ), 
"\n"
"    journalcopy -- Copy journal data from master to local filesystem\n"
"\n"
"    p4 journalcopy -i N [-b N] [--durable-only] [--non-acknowledging]\n"
"    p4 journalcopy -l\n"
"\n"
"	'p4 journalcopy' is used with a standby replica that can take\n"
"	over as the master server in the event of a failover.\n"
"\n"
"	Complete configuration of a standby replica involves several steps.\n"
"	Please consult the Perforce documentation set for the full details.\n"
"\n"
"	The -i flag causes the command to automatically repeat its action\n"
"	every N seconds. If -i is not specified, the command runs once,\n"
"	then exits.\n"
"\n"
"	The -b flag specifies a wait time before retrying a journalcopy after\n"
"	a failed journalcopy attempt.  This defaults to 60 seconds.\n"
"\n"
"	The --durable-only flag limits the results to durable journal records.\n"
"\n"
"	The --non-acknowledging flag means that this request does not mark\n"
"	previous journal records as durable.\n"
"\n"
"	The -l flag reports the current standby journal position.\n"
"\n"
"	This command requires 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpBranch = { ErrorOf( ES_HELP, 27, E_INFO, EV_NONE, 0  ), 
"\n"
"    branch -- Create, modify, or delete a branch view specification\n"
"\n"
"    p4 branch [-f] name\n"
"    p4 branch -d [-f] name\n"
"    p4 branch [ -S stream ] [ -P parent ] -o name\n"
"    p4 branch -i [-f]\n"
"\n"
"	A branch specification ('spec') is a named, user-defined mapping of\n"
"	depot files to depot files. It can be used with most of the commands\n"
"	that operate on two sets of files ('copy', 'merge', 'integrate',\n"
"	'diff2', etc.)\n"
"\n"
"	Creating a branch spec does not branch files.  To branch files, use\n"
"	'p4 copy', with or without a branch spec.\n"
"	\n"
"	The 'branch' command puts the branch spec into a temporary file and\n"
"	invokes the editor configured by the environment variable $P4EDITOR.\n"
"	Saving the file creates or modifies the branch spec.\n"
"\n"
"	The branch spec contains the following fields:\n"
"\n"
"	Branch:      The branch spec name (read only).\n"
"\n"
"	Owner:       The user who created this branch spec. Can be changed.\n"
"\n"
"	Update:      The date this branch spec was last modified.\n"
"\n"
"	Access:      The date of the last command used with this spec.\n"
"\n"
"	Description: A description of the branch spec (optional).\n"
"\n"
"	Options:     Flags to change the branch spec behavior. The defaults\n"
"		     are marked with *.\n"
"\n"
"		locked   	Permits only the owner to change the spec.\n"
"		unlocked *	Prevents the branch spec from being deleted.\n"
"\n"
"	View:        Lines mapping of one view of depot files to another.\n"
"		     Both the left and right-hand sides of the mappings refer\n"
"		     to the depot namespace.  See 'p4 help views' for more on\n"
"		     view syntax.\n"
"\n"
"	New branch specs are created with a default view that maps all depot\n"
"	files to themselves.  This view must be changed before the branch\n"
"	spec can be saved.\n"
"\n"
"	The -d flag deletes the named branch spec.\n"
"\n"
"	The -o flag writes the branch spec to standard output. The user's\n"
"	editor is not invoked.\n"
"\n"
"	The -i flag causes a branch spec to be read from the standard input.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -f flag enables a user with 'admin' privilege to delete the spec\n"
"	or set the 'last modified' date.  By default, specs can be deleted\n"
"	only by their owner.\n"
"\n"
"	A branch spec can also be used to expose the internally generated\n"
"	mapping of a stream to its parent. (See 'p4 help stream' and 'p4\n"
"	help streamintro'.)\n"
"\n"
"	The -S stream flag will expose the internally generated mapping.\n"
"	The -P flag may be used with -S to treat the stream as if it were a\n"
"	child of a different parent. The -o flag is required with -S.\n"
};

ErrorId MsgHelp::HelpAnnotate = { ErrorOf( ES_HELP, 87, E_INFO, EV_NONE, 0  ), 
"\n"
"    annotate -- Print file lines and their revisions\n"
"\n"
"    p4 annotate [-aciIqtTu -d<flags>] file[revRange] ...\n"
"\n"
"	Prints all lines of the specified files, indicating the revision that\n"
"	introduced each line into the file.\n"
"\n"
"	If the file argument includes a revision, then only revisions up to\n"
"	the specified revision are displayed.  If the file argument has a\n"
"	revision range, only revisions within that range are displayed. For\n"
"	details about specifying revisions, see 'p4 help revisions'.\n"
"\n"
"	The -a flag includes both deleted files and lines no longer present\n"
"	at the head revision. In the latter case, both the starting and ending\n"
"	revision for each line is displayed.\n"
"\n"
"	The -c flag directs the annotate command to output changelist numbers\n"
"	rather than revision numbers for each line.\n"
"\n"
"	The -d<flags> change the way whitespace and/or line endings are\n"
"	treated: -db (ignore whitespace changes), -dw (ignore whitespace),\n"
"	-dl (ignore line endings).\n"
"\n"
"	The -i flag follows branches.  If a file was created by branching,\n"
"	'p4 annotate' includes the revisions of the source file up to the\n"
"	branch point, just as 'p4 filelog -i' does.  If a file has history\n"
"	prior to being created by branching (such as a file that was branched\n"
"	on top of a deleted file), -i ignores those prior revisions and\n"
"	follows the source.  -i implies -c.\n"
"\n"
"	The -I flag follows all integrations into the file.  If a line was\n"
"	introduced into the file by a merge, the source of the merge is\n"
"	displayed as the changelist that introduced the line. If the source\n"
"	itself was the result of an integration, that source is used instead,\n"
"	and so on.  -I implies -c and may not be combined with -i.\n"
"\n"
"	The -q flag suppresses the one-line header that is displayed by\n"
"	default for each file.\n"
"\n"
"	The -t flag forces 'p4 annotate' to display binary files.\n"
"\n"
"	The -T flag aligns output to a tab stop of 8.  A different tab stop\n"
"	may be specified via '--tab=N'.\n"
"\n"
"	The -u flag directs the annotate command to output the user who\n"
"	modified the line in the file and the date it was modified.\n"
};

ErrorId MsgHelp::HelpArchive = { ErrorOf( ES_HELP, 125, E_INFO, EV_NONE, 0  ),
"\n"
"    archive -- Archive obsolete revisions to an archive depot.\n"
"\n"
"    p4 archive [-n -h -p -q -t] -D <depot> file[revRange] ...\n"
"\n"
"	Moves the archives for the specified revisions into the specified\n"
"	depot, which must be an archive depot. The revision's action is\n"
"	changed to 'archive' so that all commands that access revision\n"
"	content will skip the revision. Only revisions that meet the\n"
"	following criteria are archived:\n"
"\n"
"	- stored in full (+F) or compressed (+C) format\n"
"	- not copied or branched from another revision\n"
"	- not copied or branched to another revision\n"
"	- located in a local depot\n"
"\n"
"	The storage for the archive depot must be mounted before running\n"
"	this command (unless you are previewing results using the -n flag).\n"
"\n"
"	The -h flag prevents the head revision of files from being archived.\n"
"\n"
"	The -n flag displays a preview of the results of the archive\n"
"	operation.\n"
"\n"
"	The -p flag purges any archives of the specified files in the\n"
"	specified archive depot. On completion, the action for affected\n"
"	revisions is set to 'purge'.\n"
"\n"
"	The -q flag suppresses messages about skipped revisions.\n"
"\n"
"	The -t flag instructs 'p4 archive' to archive revisions stored\n"
"	in delta format (binary+D or text revisions). By default, these\n"
"	revisions are excluded due to the high cost of manipulating\n"
"	their storage.\n"
"\n"
"	'p4 archive' requires Perforce 'admin' access.\n"
"\n"
"	To restore archived revisions, use 'p4 restore'; for details, see\n"
"	'p4 help restore'.\n"
};

ErrorId MsgHelp::HelpAttribute = { ErrorOf( ES_HELP, 95, E_INFO, EV_NONE, 0 ),
"\n"
"    attribute -- Set per-revision attributes on revisions\n"
"\n"
"    p4 attribute [-e -f -p] -n name [-v value] files...\n"
"    p4 attribute [-e -f -p] -i -n name file\n"
"\n"
"	Sets a user-managed attribute 'name' to 'value' on opened files.\n"
"	If -v is omitted, the attribute is cleared (if set).\n"
"\n"
"	To display attributes use 'p4 fstat -Oa'.\n"
"\n"
"	The -e flag indicates that the 'value' is specified in hex.\n"
"\n"
"	The -f flag sets the attribute on submitted files.  If a propagating\n"
"	trait is set on a submitted file, a revision specification may not\n"
"	be used, and the file must not be currently open on any client.\n"
"	The -f flag requires 'admin' access granted by 'p4 protect'.\n"
"\n"
"	The -p flag creates an attribute with a value that is propagated\n"
"	when the file is opened with 'p4 add', 'p4 edit', or 'p4 delete'.\n"
"\n"
"	The -i flag causes the attribute value to be read from the standard\n"
"	input. Only one file argument is allowed when using this option.\n"
"\n"
"	Multiple attributes can be set or cleared by specifying multiple\n"
"	'-n name' flags and an equal number of corresponding '-v value'\n"
"	flags (to set) or no '-v' flags (to clear).\n"
"\n"
"	'p4 attribute -p' is not supported for files in a pending change\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpBackup = { ErrorOf( ES_HELP, 190, E_INFO, EV_NONE, 0  ),
"\n"
"    backup -- cause a workspace-server to automatically backup its workspaces\n"
"\n"
"    p4 backup"
"\n"
"	'p4 backup' instructs this workspace server to launch a process to\n"
"	periodically backup all workspaces on the server. This command is\n"
"	valid only when used on p4d servers functioning as cluster\n"
"	workspace-servers. The behavior of the backup process is managed\n"
"	via two configurables: the client.backup.interval and the\n"
"	idle.unload.interval.\n"
"\n"
"	The configurable client.backup.interval causes the command to\n"
"	automatically repeat its action every N seconds. If the \n"
"	client.backup.interval is not set or set to 0 then\n"
"	the command runs once, then exits.\n"
"\n"
"	When set, the idle.unload.interval configurable causes the command\n"
"	to police the last used time all workspaces participating in backup*.\n"
"	Each of the workspaces that have a last used time that exceeds the\n"
"	specified N number of seconds will be automatically unloaded. If this\n"
"	configurable is not set, or set to 0, the auto-unload feature is\n"
"	turned off.\n"
"\n"
"	*A user can opt out of having one or more of their workspaces backed\n"
"	up by setting the Backup field to 'disable' in that workspace's \n"
"	client spec. By default all non-readonly workspaces have backup\n"
"	enabled unless this option is set. Setting this option to \n"
"	'disable' is recommended for build farm workspaces.\n"
"\n"
};

ErrorId MsgHelp::HelpBranches = { ErrorOf( ES_HELP, 28, E_INFO, EV_NONE, 0  ), 
"\n"
"    branches -- Display list of branch specifications\n"
"\n"
"    p4 branches [-t] [-u user] [[-e|-E] nameFilter -m max]\n"
"\n"
"	Lists branch specifications. (See 'p4 help branch'.) \n"
"\n"
"	The -t flag displays the time as well as the date.\n"
"\n"
"	The -u user flag lists branch specs owned by the specified user.\n"
"\n"
"	The -e nameFilter flag lists branch specs with a name that matches\n"
"	the nameFilter pattern, for example: -e 'svr-dev-rel*'. The -e flag\n"
"	uses the server's normal case-sensitivity rules. The -E flag makes\n"
"	the matching case-insensitive, even on a case-sensitive server.\n"
"\n"
"	The -m max flag limits output to the specified number of branch specs.\n"
};

ErrorId MsgHelp::HelpBroker = { ErrorOf( ES_HELP, 149, E_INFO, EV_NONE, 0  ), 
"\n"
"    broker -- Display Broker connection information\n"
"\n"
"    p4 broker\n"
"\n"
"	'p4 broker' is only understood by the Perforce Broker.\n"
"\n"
"	'p4 broker' lists information about the broker which the client is\n"
"	connected to.  Items displayed include the client's network address,\n"
"	the broker's network address, and the broker's version information.\n"
};

ErrorId MsgHelp::HelpChange = { ErrorOf( ES_HELP, 29, E_INFO, EV_NONE, 0  ), 
"\n"
"    change -- Create or edit a changelist description\n"
"    changelist -- synonym for 'change'\n"
"\n"
"    p4 change [-s] [-f | -u] [[-O|-I] changelist#]\n"
"    p4 change -d [-f -s -O] changelist#\n"
"    p4 change -o [-s] [-f] [[-O|-I] changelist#]\n"
"    p4 change -i [-s] [-f | -u] \n"
"    p4 change -t restricted | public [-U user] [-f|-u|-O|-I] changelist#\n"
"    p4 change -U user [-t restricted | public] [-f] changelist#\n"
"    p4 change -d -f --serverid=X changelist#\n"
"\n"
"	'p4 change' creates and edits changelists and their descriptions.\n"
"	With no argument, 'p4 change' creates a new changelist.  If a\n"
"	changelist number is specified, 'p4 change' edits an existing\n"
"	pending changelist.  In both cases, the changelist specification\n"
"	is placed into a form and the user's editor is invoked.\n"
"\n"
"	The -d flag deletes a pending changelist, if it has no opened files\n"
"	and no pending fixes associated with it.  Use 'p4 opened -a' to\n"
"	report on opened files and 'p4 reopen' to move them to another\n"
"	changelist.  Use 'p4 fixes -c changelist#' to report on pending\n"
"	fixes and 'p4 fix -d -c changelist# jobs...' to delete pending\n"
"	fixes. The changelist can be deleted only by the user and client\n"
"	who created it, or by a user with 'admin' privilege using the -f\n"
"	flag.\n"
"\n"
"	The -o flag writes the changelist specification to the standard\n"
"	output.  The user's editor is not invoked.\n"
"\n"
"	The -i flag reads a changelist specification from the standard\n"
"	input.  The user's editor is not invoked.\n"
"\n"
"	The -f flag forces the update or deletion of other users' pending\n"
"	changelists.  -f can also force the deletion of submitted changelists\n"
"	after they have been emptied of files using 'p4 obliterate'.  By\n"
"	default, submitted changelists cannot be changed.  The -f flag can\n"
"	also force display of the 'Description' field in a restricted\n"
"	changelist. Finally the -f flag can force changing the 'User' of\n"
"	an empty pending change via -U. The -f flag requires 'admin'\n"
"	access granted by 'p4 protect'.  The -f and -u flags are mutually\n"
"	exclusive.\n"
"\n"
"	The -u flag can force the update of a submitted change by the owner\n"
"	of the change. Only the Jobs, Type, and Description fields can be\n"
"	changed	using the -u flag. The -f and -u flags cannot be used in\n"
"	the same change command.\n"
"\n"
"	The -s flag extends the list of jobs to include the fix status\n"
"	for each job.  On new changelists, the fix status begins as the\n"
"	special status 'ignore', which, if left unchanged simply excludes\n"
"	the job from those being fixed.  Otherwise, the fix status, like\n"
"	that applied with 'p4 fix -s', becomes the job's status when\n"
"	the changelist is committed.  Note that this option exists\n"
"	to support integration with external defect trackers.\n"
"\n"
"	The -O flag specifies that the changelist number is the original\n"
"	number of a changelist which was renamed on submit.\n"
"\n"
"	The -I flag specifies that the changelist number is the Identity\n"
"	field of a changelist.\n"
"\n"
"	The -U flag changes the 'User' of an empty pending change to the\n"
"	specified user. The user field can only be changed using this flag\n"
"	by the user who created the change, or by a user with 'admin'\n"
"	privilege using the -f flag. This option is useful for running\n"
"	in a trigger or script.\n"
"\n"
"	The -t flag changes the 'Type' of the change to 'restricted'\n"
"	or 'public' without displaying the change form. This option is\n"
"	useful for running in a trigger or script.\n"
"\n"
"	The 'Type' field can be used to hide the change or its description\n"
"	from users. Valid values for this field are 'public' (default), and\n"
"	'restricted'. A shelved or committed change that is 'restricted' is\n"
"	accessible only to users who own the change or have 'list' permission\n"
"	to at least one file in the change.  A pending (not shelved)\n"
"	restricted change is only accessible to its owner.  Public changes\n"
"	are accessible to all users. This setting affects the output of the\n"
"	'p4 change', 'p4 changes', and 'p4 describe' commands. Note that\n"
"	the '-S' flag is required with 'p4 describe' for the command to\n"
"	enforce shelved	rather than pending restricted changelist rules.\n"
"\n"
"	If a user is not permitted to have access to a restricted change,\n"
"	The 'Description' text is replaced with a 'no permission' message\n"
"	(see 'Type' field). Users with admin permission can override the\n"
"	restriction using the -f flag.\n"
"\n"
"	In order to delete a pending changelist which is owned by a client\n"
"	on a different server, specify 'change -d -f --serverid=X', providing\n"
"	the serverid of the owning server. This variant of the change command\n"
"	must be issued directly to the Commit Server.\n"
};

ErrorId MsgHelp::HelpChanges = { ErrorOf( ES_HELP, 30, E_INFO, EV_NONE, 0  ), 
"\n"
"    changes -- Display list of pending and submitted changelists\n"
"    changelists -- synonym for 'changes'\n"
"\n"
"    p4 changes [-i -t -l -L -f] [-c client] [ -e changelist# ]\n"
"	    [-m max] [-s status] [-u user] [file[revRange] ...]\n"
"\n"
"	Returns a list of all pending and submitted changelists currently\n"
"	stored in the server.\n"
"\n"
"	If files are specified, 'p4 changes' lists only changelists that\n"
"	affect those files.  If the file specification includes a revision\n"
"	range, 'p4 changes' lists only submitted changelists that affect\n"
"	the specified revisions.  See 'p4 help revisions' for details.\n"
"\n"
"	If files are not specified, 'p4 changes' limits its report\n"
"	according to each change's type ('public' or 'restricted').\n"
"	If a submitted or shelved change is restricted, the change is\n"
"	not reported unless the user owns the change or has list\n"
"	permission for at least one file in the change. Only the owner\n"
"	of a restricted and pending (not shelved) change is permitted\n"
"	to see it.\n"
"\n"
"	The -i flag also includes any changelists integrated into the\n"
"	specified files.\n"
"\n"
"	The -t flag displays the time as well as the date.\n"
"\n"	
"	The -l flag displays the full text of the changelist\n"
"	descriptions.\n"
"\n"
"	The -L flag displays the changelist descriptions, truncated to 250\n"
"	characters if longer.\n"
"\n"
"	The -f flag enables admin users to view restricted changes.\n"
"\n"
"	The -c client flag displays only submitted by the specified client.\n"
"\n"
"	The -e changelist# flag displays only changes that are above and\n"
"	including the specified changelist number.\n"
"\n"
"	The -m max flag limits changes to the 'max' most recent.\n"
"\n"
"	The -s status flag limits the output to changelists with the specified\n"
"	status. Specify '-s pending', '-s shelved', or '-s submitted'.\n"
"\n"
"	The -u user flag displays only changes owned by the specified user.\n"
};

ErrorId MsgHelp::HelpClient = { ErrorOf( ES_HELP, 31, E_INFO, EV_NONE, 0  ), 
"\n"
"    client -- Create or edit a client workspace specification and its view\n"
"    workspace -- Synonym for 'client'\n"
"\n"
"    p4 client [-f] [-t template] [name]\n"
"    p4 client -d [-f [-Fs]] name\n"
"    p4 client -o [-t template] [name]\n"
"    p4 client -S stream [[-c change] -o] [name]\n"
"    p4 client -s [-f] -S stream [name]\n"
"    p4 client -s [-f] -t template [name]\n"
"    p4 client -i [-f]\n"
"    p4 client -d -f --serverid=X [-Fs] name\n"
"\n"
"	Creates a new client specification ('spec') or edits an existing\n"
"	spec.  A client spec is a named mapping of depot files to workspace\n"
"	files.\n"
"\n"
"	The 'p4 client' command puts the client spec into a temporary file\n"
"	and invokes the editor configured by the environment variable\n"
"	$P4EDITOR.  For new workspaces, the client name defaults to the\n"
"	$P4CLIENT environment variable, if set, or to the current host name.\n"
"	Saving the file creates or modifies the client spec.\n"
"\n"
"	The client spec contains the following fields:\n"
"\n"
"	Client:      The client name.\n"
"\n"
"	Host:        If set, restricts access to the named host.\n"
"		     If unset, access is allowed from any host.\n"
"\n"
"	Owner:       The user who created this client.\n"
"\n"
"	Update:      The date that this spec was last modified.\n"
"\n"
"	Access:      The date that this client was last used in any way.\n"
"\n"
"	Description: A short description of the workspace.\n"
"\n"
"	Root:        The root directory of the workspace (specified in local\n"
"		     file system syntax), under which all versioned files\n"
"		     will be placed. If you change this setting, you must\n"
"		     physically relocate any files that currently reside\n"
"		     there.  On Windows client machines, you can specify the\n"
"		     root as \"null\" to enable you to map files to multiple\n"
"		     drives.\n"
"\n"
"	AltRoots:    Up to two optional alternate client workspace roots.\n"
"		     The first of the main and alternate roots to match the\n"
"		     client program's current working directory is used. If\n"
"		     none match, the main root is used. 'p4 info' displays\n"
"		     the root that is being used.\n"
"\n"
"	Options:     Flags to configure the client behavior. Defaults\n"
"		     are marked with *.\n"
"\n"
"		allwrite	Leaves all files writable on the client;\n"
"		noallwrite *	by default, only files opened by 'p4 edit'\n"
"				are writable. If set, files might be clobbered\n"
"				as a result of ignoring the clobber option\n"
"				(see below).\n"
"\n"
"		clobber		Permits 'p4 sync' to overwrite writable\n"
"		noclobber *	files on the client.  noclobber is ignored if\n"
"				allwrite is set.\n"
"\n"
"		compress 	Compresses data sent between the client\n"
"		nocompress *	and server to speed up slow connections.\n"
"\n"
"		locked   	Allows only the client owner to use or change\n"
"		unlocked *	the client spec.  Prevents the client spec from\n"
"				being deleted or unloaded.\n"
"\n"
"		modtime  	Causes 'p4 sync' and 'p4 submit' to preserve\n"
"		nomodtime *	file modification time, as with files with the\n"
"				+m type modifier. (See 'p4 help filetypes'.)\n"
"				With nomodtime, file timestamps are updated by\n"
"				sync and submit operations.\n"
"\n"
"		rmdir		Makes 'p4 sync' attempt to delete a workspace\n"
"		normdir *	directory when all files in it are removed.\n"
"\n"
"	SubmitOptions:  Flags to change submit behavior.\n"
"\n"
"		submitunchanged     All open files are submitted (default).\n"
"\n"
"		revertunchanged     Files that have content, type, or resolved\n"
"		                    changes are submitted. Unchanged files are\n"
"		                    reverted.\n"
"\n"
"		leaveunchanged      Files that have content, type, or resolved\n"
"		                    changes are submitted. Unchanged files are\n"
"		                    moved to the default changelist.\n"
"\n"
"		        +reopen     Can be appended to the submit option flag\n"
"		                    to cause submitted files to be reopened in\n"
"		                    the default changelist.\n"
"		                    Example: submitunchanged+reopen\n"
"\n"
"	LineEnd:    Set line-ending character(s) for client text files.\n"
"\n"
"		local		mode that is native to the client (default).\n"
"		unix		linefeed: UNIX style.\n"
"		mac		carriage return: Macintosh style.\n"
"		win		carriage return-linefeed: Windows style.\n"
"		share		hybrid: writes UNIX style but reads UNIX,\n"
"				Mac or Windows style.\n"
"\n"
"	View:        Maps files in the depot to files in your client\n"
"		     workspace.  Defines the files that you want in your\n"
"		     client workspace and specifies where you want them\n"
"		     to reside.  The default view maps all depot files\n"
"		     onto the client.  See 'p4 help views' for view syntax.\n"
"		     A new view takes effect on the next 'p4 sync'.\n"
"\n"
"	ChangeView:  Restricts depot paths to a particular point in time.\n"
"	             Example: //depot/path/...@1000\n"
"	             Revisions submitted to the path after the specified\n"
"	             changelist will not be visible.  Files matching a\n"
"	             ChangeView path may not be submitted.\n"
"\n"
"	             Automatic labels may also used to specify a particular\n"
"	             point in time: the label's 'Revision' field must be set\n"
"	             to a changelist number or a date.  If the label has a\n"
"	             view, only files that match the intersection of the\n"
"	             ChangeViewpath and the label's view will be restricted to\n"
"	             the point in time specified by the 'Revision' field; any\n"
"	             other files matching the ChangeView path may sync to\n"
"	             #head, but cannot be submitted.\n"
"\n"
"	Stream:      The stream to which this client's view will be dedicated.\n"
"		     (Files in stream paths can be submitted only by dedicated\n"
"		     stream clients.) When this optional field is set, the\n"
"		     View field will be automatically replaced by a stream\n"
"		     view as the client spec is saved.\n"
"\n"
"	StreamAtChange:\n"
"		     Stream meta-data (for view creation) is versioned.\n"
"		     When StreamAtChange is set, the stream hierarchy is\n"
"		     constructed back-in-time to reproduce the view that was\n"
"		     available to clients in the past. With this field set\n"
"		     changes cannot be be submitted from the client.\n"
"		     StreamAtChange is optional; Stream must be set as well.\n"
"\n"
"	ServerID:    If set, restricts usage to the named server.\n"
"		     If unset, usage is allowed on the master server and on\n"
"		     any replicas of the master other than Edge Servers.\n"
"\n"
"	Type:        By default all clients are 'writeable', certain clients\n"
"		     are short lived and perform long sync and build cycles.\n"
"		     Over time these build clients can fragment the 'db.have'\n"
"		     table which is used to track what files a client has\n"
"	             synced.  Setting a type of 'readonly' gives the client\n"
"		     its own personal 'db.have' database table. A 'readonly'\n"
"		     client cannot 'edit' or 'submit' files, however for build\n"
"		     automation this is not usually a requirement and the\n"
"		     performance tradeoff is worth considering if your build\n"
"		     automation is causing issues with the 'db.have' table.\n"
"		     This option requires that an administrator has first\n"
"		     configured the 'client.readonly.dir' setting.\n"
"\n"
"	Note: changing the client root does not actually move the client\n"
"	files; you must relocate them manually.  Similarly, changing\n"
"	the 'LineEnd' option does not actually update the client files;\n"
"	you can refresh them with 'p4 sync -f'.\n"
"\n"
"	The -d flag deletes the specified spec, as long as the client\n"
"	workspace has no opened files or pending changes.  (See 'p4 help\n"
"	opened'.) The -f flag forces the delete. The -Fs option used with -f\n"
"	forces client deletion even when the user has shelved changes. In\n"
"	this case, the shelved changes are left intact.\n"
"\n"
"	The -o flag writes the named client spec to the standard output.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -i flag reads a client spec from the standard input.  The\n"
"	user's editor is not invoked.\n"
"\n"
"	The -t template flag, where 'template' is the name of another client\n"
"	spec, causes the View and Options fields to be replaced by those of\n"
"	the template.\n"
"\n"
"	The -f flag can force the updating of locked clients; normally\n"
"	locked clients can only be modified by their owner.  -f also allows\n"
"	the last modified date to be set.  The -f flag requires 'admin'\n"
"	access granted by 'p4 protect'.\n"
"\n"
"	The -s flag is used to switch an existing client spec's view without\n"
"	invoking the editor.  It can be used with -S to switch to a stream\n"
"	view, or with -t to switch to a view defined in another client spec.\n"
"	Switching views is not allowed in a client that has opened files.\n"
"	The -f flag can be used with -s to force switching with opened files.\n"
"	View switching has no effect on files in a client workspace until\n"
"	'p4 sync' is run.\n"
"\n"
"	Without -s, the '-S stream' flag can be used to create a new client\n"
"	spec dedicated to a stream. If the client spec already exists, and\n"
"	-S is used without -s, an error occurs when the client is bound to\n"
"	a different, or no stream.  Using -S sets the new client's\n"
"	Stream field.  The special syntax '-S //a/stream@changelist' can\n"
"	be used to set both Stream and StreamAtChange at the same time.\n"
"\n"
"	The '-S stream' flag can be used with '-o -c change' to inspect an\n"
"	old stream client view. It yields the client spec that would have\n"
"	been created for the stream at the moment the change was recorded.\n"
"\n"
"	A server of type 'build-server' (see 'p4 help server') is a replica\n"
"	which supports build farm integration, and the 'p4 client' command\n"
"	may be used to create or edit client workspaces on a build-server.\n"
"	Such workspaces may issue the 'p4 sync' command, in addition to any\n"
"	read-only command supported by the replica. For more information, run\n"
"	'p4 help buildserver'.\n"
"\n"
"	When creating or editing a client workspace for a build-server,\n"
"	the client specified by the optional 'name' argument, as well as the\n"
"	client specified by the $P4CLIENT environment variable or via the\n"
"	global '-c client' argument must not exist, or must be restricted\n"
"	to this server; this command may not be used to create or edit a\n"
"	workspace that is not restricted to this build-server.\n"
"\n"
"	In order to delete a workspace which is bound to a different server,\n"
"	specify 'client -d -f --serverid=X', providing the serverid of the\n"
"	owning server. This variant of the client command must be issued\n"
"	directly to the Commit Server.\n"
"\n"
};

ErrorId MsgHelp::HelpClients = { ErrorOf( ES_HELP, 32, E_INFO, EV_NONE, 0  ), 
"\n"
"    clients -- Display list of clients\n"
"    workspaces -- synonym for 'clients'\n"
"\n"
"    p4 clients [-t] [-u user] [[-e|-E] nameFilter -m max] [-S stream]\n"
"               [-a | -s serverID]\n"
"    p4 clients -U\n"
"\n"
"	Lists all client workspaces currently defined in the server.\n"
"\n"
"	The -t flag displays the time as well as the date.\n"
"\n"
"	The -u user flag lists client workspaces that are owned by the\n"
"	specified user.\n"
"\n"
"	The -e nameFilter flag lists workspaces with a name that matches\n"
"	the nameFilter pattern, for example: -e 'svr-dev-rel*'. The -e flag\n"
"	uses the server's normal case-sensitivity rules. The -E flag makes\n"
"	the matching case-insensitive, even on a case-sensitive server.\n"
"\n"
"	The -m max flag limits output to the specified number of workspaces.\n"
"\n"
"	The -S stream flag limits output to the client workspaces dedicated \n"
"	to the stream.\n"
"\n"
"	The -U flag lists unloaded clients (see 'p4 help unload').\n"
"\n"
"	The -a flag specifies that all clients should be displayed, not just\n"
"	those that are bound to this server.\n"
"\n"
"	The -s serverID flag specifies that only those clients bound to the\n"
"	specified serverID should be displayed. On an Edge Server, the -s\n"
"	flag defaults to the Edge Server's serverID.\n"
"\n"
};

ErrorId MsgHelp::HelpCluster = { ErrorOf( ES_HELP, 164, E_INFO, EV_NONE, 0  ),
"\n"
"    cluster -- Administer a server with failover (Perforce Cluster servers\n"
"               only)\n"
"\n"
"    p4 cluster new-master previous-master-server-id\n"
"    p4 cluster master-changed new-master-address\n"
"    p4 cluster members-set server-type list-of-cluster-members\n"
"    p4 cluster end-journal\n"
"\n"
"	The preceding 'p4 cluster' commands are issued automatically by the \n"
"	Perforce cluster management infrastructure when a cluster server fails.\n"
"\n"
"\n"
"	The following 'p4 cluster' commands are invoked by the cluster manager\n"
"	during the implementation of its command to replace a workspace server.\n"
"\n"
"    p4 cluster to-workspace\n"
"    p4 cluster restore-clients old-server-id\n"
"\n"
"	The following 'p4 cluster' command can be issued to reset the cluster\n"
"	master generation number stored in Zookeeper.\n"
"\n"
"    p4 cluster set-gen-number new-master-gen-number\n"
"\n"
"	All 'p4 cluster' commands require that the user be an operator\n"
"	or have 'super' access.\n"
"\n"
};

ErrorId MsgHelp::HelpStream = { ErrorOf( ES_HELP, 110, E_INFO, EV_NONE, 0 ),
"\n"
"    stream -- Create, delete, or modify a stream specification\n"
"\n"
"    p4 stream [-f] [-d] [-P parent] [-t type] [name]\n"
"    p4 stream [-o [-v]] [-P parent] [-t type] [name[@change]]\n"
"    p4 stream [-f] [-d] name\n"
"    p4 stream -i [-f] \n"
"    p4 stream edit\n"
"    p4 stream resolve [-a<flag>] [-n] [-o]\n"
"    p4 stream revert\n"
"\n"
"	A stream specification ('spec') names a path in a stream depot to be\n"
"	treated as a stream.  (See 'p4 help streamintro'.)  The spec also\n"
"	defines the stream's lineage, its view, and its expected flow of\n"
"	change.\n"
"\n"
"	The 'p4 stream' command puts the stream spec into a temporary file and\n"
"	invokes the editor configured by the environment variable $P4EDITOR.\n"
"	When creating a stream, the type of the stream must be specified with\n"
"	the '-t' flag.  Saving the file creates or modifies the stream spec.\n"
"\n"
"	By default updates to the stream spec are automatically visible to\n"
"	all clients; see 'p4 help streamcmds' for information on 'opening' a\n"
"	stream spec to stage updates on one client before submitting them.\n"
"\n"
"	Creating a stream spec does not branch a new stream.  To branch a\n"
"	stream, use 'p4 copy -r -S stream', where 'stream' is the name of a\n"
"	stream spec.\n"
"\n"
"	The stream spec contains the following fields:\n"
"\n"
"	Stream:   The stream's path in a stream depot, of the form\n"
"	          //depotname/streamname. This is both the name of the stream\n"
"	          spec and the permanent, unique identifier of the stream.\n"
"	          This stream path may extend beyond the traditional form by\n"
"	          updating the 'StreamDepth' field in the stream depot when\n"
"	          creating a new stream depot.  Here, depth relates to the\n"
"	          number of single slashes in stream names following the\n"
"	          depot name (so traditional form above reflects StreamDepth\n"
"	          of 1.  All streams within a stream depot must adhere to\n"
"	          this same format.\n"
"\n"
"	Update:   The date this stream spec was last changed.\n"
"\n"
"	Access:   The date of the last command used with this spec.\n"
"\n"
"	Owner:    The stream's owner. A stream can be owned by a user, or\n"
"	          owned by a group. Can be changed.\n"
"\n"
"	Name:     An alternate name of the stream, for use in display outputs.\n"
"	          Defaults to the final path in the 'streamname' portion in\n"
"	          the stream. Can be changed.\n"
"\n"
"	Parent:   The parent of this stream. Can be 'none' if the stream type\n"
"	          is 'mainline',  otherwise must be set to an existing stream\n"
"	          identifier, of the form //depotname/streamname.\n"
"	          Can be changed.\n"
"\n"
"	Type:     'mainline', 'virtual', 'development', 'release' or 'task'.\n"
"	          Defines the role of a stream: A 'mainline' may not have a\n"
"	          parent. A 'virtual' stream is not a stream but an alternate\n"
"	          view of its parent stream.  The 'development' and 'release'\n"
"	          streams have controlled flow. Can be changed.  A 'task'\n"
"	          stream is a lightweight short-lived stream that only\n"
"	          promotes edited files to the repository; branched and\n"
"	          integrated files are stored in shadow tables that are\n"
"	          removed when the task stream is deleted or unloaded.\n"
"\n"
"	          Flow control is provided by 'p4 copy -S' and 'p4 merge -S'.\n"
"	          These commands restrict the flow of change as follows:\n"
"\n"
"	          Stream Type   Direction of flow     Allowed with\n"
"	          -----------   -----------------     ------------\n"
"	          development   to parent stream      'p4 copy'\n"
"	          task          to parent stream      'p4 copy'\n"
"	          release       to parent stream      'p4 merge'\n"
"	          development   from parent stream    'p4 merge'\n"
"	          release       from parent stream    'p4 copy'\n"
"\n"
"	Description: An optional description of the stream.\n"
"\n"
"	Options:  Flags to configure stream behavior. Defaults are marked *:\n"
"\n"
"	          unlocked *      Indicates whether the stream spec is locked\n"
"	          locked          against modifications. If locked, the spec\n"
"	                          may not be deleted, and only its owner or\n"
"	                          group users can modify it.\n"
"\n"
"	          allsubmit *     Indicates whether all users or only the\n"
"	          ownersubmit     owner (or group users) of the stream may\n"
"	                          submit changes to the stream path.\n"
"\n"
"	          toparent *      Indicates if controlled flow from the\n"
"	          notoparent      stream to its parent is expected to occur.\n"
"\n"
"	          fromparent *    Indicates if controlled flow to the stream\n"
"	          nofromparent    from its parent is expected to occur.\n"
"\n"
"	          mergedown *     Indicates if merge flow is restricted or\n"
"	          mergeany        merge is permitted from any other stream.\n"
"\n"
"	          The [no]fromparent and [no]toparent options determine if \n"
"	          'p4 copy -S' and 'p4 merge -S' allow change to flow between\n"
"	          a stream and its parent. A 'virtual' stream must have its\n"
"	          flow options set as 'notoparent' and 'nofromparent'. Flow\n"
"	          options are ignored for 'mainline' streams.\n"
"\n"
"	Paths:    One or more lines that define file paths in the stream view.\n"
"	          Each line is of the form:\n"
"\n"
"	              <path_type> <view_path> [<depot_path>]\n"
"\n"
"	          where <path_type> is a single keyword, <view_path> is a file\n"
"	          path with no leading slashes, and the optional <depot_path>\n"
"	          is a file path beginning with '//'.  Both <view_path> and\n"
"	          <depot_path> may contain trailing wildcards, but no leading\n"
"	          or embedded wildcards.  Lines in the Paths field may appear\n"
"	          in any order.  A duplicated <view_path> overrides its\n"
"	          preceding entry.\n"
"\n"
"	          For example:\n"
"\n"
"	              share   src/...\n"
"	              import  lib/abc/...  //over/there/abc/...\n"
"	              isolate bin/*\n"
"\n"
"	          Default is:\n"
"\n"
"	              share   ...\n"
"\n"
"	          The <path_type> keyword must be one of:\n"
"\n"
"	          share:  <view_path> will be included in client views and\n"
"	                  in branch views. Files in this path are accessible\n"
"	                  to workspaces, can be submitted to the stream, and\n"
"	                  can be integrated with the parent stream.\n"
"\n"
"	          isolate: <view_path> will be included in client views but\n"
"	                   not in branch views. Files in this path are\n"
"	                   accessible to workspaces, can be submitted to the\n"
"	                   stream, but are not integratable with the parent\n"
"	                   stream. \n"
"\n"
"	          import: <view_path> will be included in client views but\n"
"	                  not in branch views. Files in this path are mapped\n"
"	                  as in the parent stream's view (the default) or to\n"
"	                  <depot_path> (optional); they are accessible to\n"
"	                  workspaces, but can not be submitted or integrated\n"
"	                  to the stream.  If <depot_path> is used it may\n"
"	                  include a changelist or automatic label specifier;\n"
"	                  clients of that stream will be limited to seeing\n"
"	                  revisions at that point in time or lower within that\n"
"	                  depot path (See the explanation of 'ChangeView' in\n"
"	                  'p4 help client' for more details)\n"
"\n"
"	          import+: <view_path> same as 'import' except that files can\n"
"	                   be submitted to the import path.\n"
"\n"
"	          exclude: <view_path> will be excluded from client views\n"
"	                   and branch views. Files in this path are not\n"
"	                   accessible to workspaces, and can't be submitted\n"
"	                   or integrated to the stream.\n"
"\n"
"	          Paths are inherited by child stream views. A child stream's\n"
"	          paths can downgrade the inherited view, but not upgrade it.\n"
"	          (For instance, a child stream can downgrade a shared path to\n"
"	          an isolated path, but it can't upgrade an isolated path to a\n"
"	          shared path.) Note that <depot_path> is relevant only when\n"
"	          <path_type> is 'import'.\n"
"\n"
"	Remapped: Optional; one or more lines that define how stream view paths\n"
"	          are to be remapped in client views.  Each line is of the\n"
"\n	          form:"
"\n"
"	              <view_path_1> <view_path_2>\n"
"\n"
"	          where <view_path_1> and <view_path_2> are Perforce view paths\n"
"	          with no leading slashes and no leading or embedded wildcards.\n"
"	          For example:\n"
"\n"
"	              ...    x/...\n"
"	              y/*    y/z/*\n"
"\n"
"	          Line ordering in the Remapped field is significant; if more\n"
"	          than one line remaps the same files, the later line has\n"
"	          precedence.  Remapping is inherited by child stream client\n"
"	          views.\n"
"\n"
"	Ignored: Optional; a list of file or directory names to be ignored in\n"
"	         client views. For example:\n"
"\n"
"	             /tmp      # ignores files named 'tmp'\n"
"	             /tmp/...  # ignores dirs named 'tmp'\n"
"	             .tmp      # ignores file names ending in '.tmp'\n"
"\n"
"	         Lines in the Ignored field may appear in any order.  Ignored\n"
"	         names are inherited by child stream client views.\n"
"\n"
"	The -d flag causes the stream spec to be deleted.  A stream spec may\n"
"	not be deleted if it is referenced by child streams or stream clients.\n"
"	Deleting a stream spec does not remove stream files, but it does mean\n"
"	changes can no longer be submitted to the stream's path.\n"
"\n"
"	The -o flag causes the stream spec to be written to the standard\n"
"	output. The user's editor is not invoked. -v may be used with -o to\n"
"	expose the automatically generated client view for this stream.\n"
"	('p4 help branch' describes how to expose the branch view.)\n"
"	If an @changelist specifier is included with the stream name, the\n"
"	(submitted) stream as of that change is displayed rather than the\n"
"	latest (or open) version.\n"
"\n"
"	The -P flag can be used to insert a value into the Parent field of a\n"
"	new stream spec. It has no effect on an existing spec.\n"
"\n"
"	The -t flag is used to insert a value into the type field of a\n"
"	new stream spec and to adjust the default fromparent option\n"
"	for a new 'release' -type stream. The flag has no effect on an\n"
"	existing spec.\n"
"\n"
"	The -i flag causes a stream spec to be read from the standard input.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -f flag allows a user other than the owner to modify or delete a\n"
"	locked stream. It requires 'admin' access granted by 'p4 protect'.\n"
"\n"
"	See 'p4 help streamcmds' for information on the 'p4 stream edit',\n"
"	'p4 stream resolve', and 'p4 stream revert' commands.\n"
};

ErrorId MsgHelp::HelpStreamCmds = { ErrorOf( ES_HELP, 191, E_INFO, EV_NONE, 0 ),
"\n"
"    Operating on opened stream specs\n"
"\n"
"	Stream specifications may be modified directly via the 'p4 stream',\n"
"	command, automatically and immediately updating all client views\n"
"	derived from that stream.  Alternatively, edits to the stream spec\n"
"	may be isolated to the editing client prior to being made available\n"
"	to other clients as part of an atomic changelist submission, in the\n"
"	same way that edits to files are made locally on a single client and\n"
"	then submitted to make them available to other clients.\n"
"\n"
"    p4 stream edit\n"
"    p4 stream resolve [-a<flag>] [-n] [-o]\n"
"    p4 stream revert\n"
"\n"
"	'p4 stream edit' puts the client's current stream spec into the\n"
"	'opened' state, isolating any edits made to fields that affect\n"
"	view generation.  While the spec is open, those fields are marked\n"
"	with the comment '#open' to indicate that they are open and isolated\n"
"	to your client.  Changes made to these fields will affect your client\n"
"	view normally, but other clients are not affected.\n"
"\n"
"	'p4 stream resolve' resolves changes that have been submitted to the\n"
"	stream spec since you opened it.  You may not submit changes to the\n"
"	stream spec until newer changes have been resolved.\n"
"		-as	'Safe' resolve; skip fields that need merging.\n"
"		-am	Resolve by merging; skip fields with conflicts.\n"
"		-af	Force combination of text fields with conflicts.\n"
"		-at	Force acceptance of theirs; overwrites yours.\n"
"		-ay	Force acceptance of yours; ignores theirs.\n"
"		-n	Preview which fields require resolve.\n"
"		-o	Output the base used for the merge.\n"
"\n"
"	'p4 stream revert' reverts any pending changes made to the open spec,\n"
"	returning your client to the latest submitted version of the stream.\n"
"\n"
"	The open stream spec is included by default with any files that\n"
"	are shelved, unshelved, or submitted.  Unlike files, the stream spec\n"
"	is not bound to a particular pending changelist.  The stream may be\n"
"	omitted from any of these operations by using the '-Af' flag to\n"
"	specify that only files should be acted upon.\n"
};

ErrorId MsgHelp::HelpStreamintro = { ErrorOf( ES_HELP, 132, E_INFO, EV_NONE, 0 ),
"\n"
"    Introduction to streams\n"
"\n"
"	A Perforce 'stream' is (generally) a branch of files.  Each stream\n"
"	has a parent stream and any number of child streams.  The backbone\n"
"	of a stream system is the mainline, a stream with no parent.\n"
"\n"
"	A stream typically contains files that are branched from its parent\n"
"	stream. Work on files occurs in the context of a stream. As files are\n"
"	modified, changes can be integrated (i.e., merged or copied) between\n"
"	the stream and its parent.\n"
"\n"
"	A child stream is either a 'development', 'release', 'task' or a\n"
"	'virtual' stream.  On a scale of stability, a development stream\n"
"	is considered lower than its parent, while a release stream is\n" 
"	considered higher than its parent.  Change is expected to flow down\n"
"	by merging, and up by copying.  This \"merge down, copy up\" practice\n"
"	assures that merging is done only when necessary, and always in the\n"
"	more forgiving of the two streams involved.\n"
"\n"
"	A stream is identified by its unique depot location.  A 'spec' defines\n"
"	the stream's location, its type, its parent stream, the files in its\n"
"	view, and other configurable behaviors.  A stream can be reparented\n"
"	by changing its spec.\n"
"\n"
"	A stream's 'view' refers to both the client view and the branch view\n"
"	that are generated from the spec.  Generated client views are inserted\n"
"	automatically when a user creates a stream client.  Generated branch\n"
"	views are used automatically by commands that compare or integrate \n"
"	files.\n"
"	\n"
"	The stream view enables you to specify which files can be submitted\n"
"	to the stream and merged or copied from its parent stream.  A parent\n"
"	stream controls the scope of a child stream's view.  The stream view\n"
"	is inherited from the parent stream (except for mainline streams,\n"
"	which have no parent).  You can refine the view of a child stream to\n"
"	make it more restrictive than its parent, but you cannot change the\n"
"	view to make it less restrictive than the view of the parent.\n"
"	Virtual streams can be used to create alternative views of real\n"
"	streams.\n"
"\n"
"	Virtual streams differ from other stream types in that a virtual\n"
"	stream is not a branch of files, but instead a filtered view of \n"
"	its parent stream. A virtual stream can have child streams, and its\n"
"	child streams inherit its views.\n"
"\n"
"	Task streams are lightweight short-lived branches that are great for\n"
"	bug fixing or new features that only modify a small subset of the\n"
"	branch data. Since branched (copied) files are tracked in a set of\n"
"	shadow tables which are later removed, repository metadata is kept\n"
"	to a minimum when using this type of stream.  Note: only a client\n"
"	of the task stream will see the branched data, only modified data\n"
"	that is promoted becomes visible to users with access to the stream\n"
"	namespace.\n"
"\n"
"	Streams are rooted in stream depots. A mainline and all of the streams\n"
"	related to it are rooted in the same stream depot. A Perforce Server\n"
"	can host multiple stream depots. Although a stream depot can have \n"
"	multiple mainlines, one mainline per stream depot is recommended.\n"
"\n"
"	Files can be submitted to streams only by stream clients. Each stream\n"
"	client is dedicated to a single stream.  A user may have several \n"
"	stream clients.  Stream clients can be switched from one stream to \n"
"	another. A client of a virtual stream is no different than a client\n"
"	of its underlying, real stream, except that it has a modified view\n"
"	of the underlying stream.\n"
"\n"
"	To create a new mainline, first create a stream depot with 'p4 depot'.\n"
"	Then use 'p4 stream' to create a mainline stream rooted in that depot.\n"
"	To populate a new mainline, use 'p4 client' to create a client\n"
"	workspace for it. Then, in the client workspace, use 'p4 add' and 'p4\n"
"	submit' to upload files into the stream.\n"
"\n"
"	To branch a stream into another, first use 'p4 stream' to create the\n"
"	new stream spec. Then use 'p4 copy' and 'p4 submit' to branch files\n"
"	into the new stream.  To merge files from one stream into another, use\n"
"	'p4 merge', 'p4 resolve', and 'p4 submit'. To promote files from one \n"
"	stream into another, use 'p4 copy' and 'p4 submit'.\n"
"\n"
"	Several existing commands have been enhanced, and some new commands\n"
"	have been added, in support of streams:\n"
"\n"
"	    branch       - Can expose a stream's branch view \n"
"	    client       - Can create or switch a stream client \n"
"	    clients      - Can list clients dedicated to a stream \n"
"	    copy         - Can use a stream view and enforce stream flow\n"
"	    depot        - Can create a stream depot \n"
"	    diff2        - Can use a stream view\n"
"	    dirs         - Can list dirs in a stream view\n"
"	    integrate    - Can use a stream view\n"
"	    interchanges - Can use a stream view\n"
"	    istat        - Checks/caches a stream's pending integration state\n"
"	    merge        - Can use a stream view and enforce stream flow\n"
"	    stream       - Creates/edits a stream spec, can expose client view\n"
"	    streams      - Lists stream specs\n"
"\n"
"	See 'p4 help <command>' for additional help for these commands.\n"
"\n"
};

ErrorId MsgHelp::HelpStreams = { ErrorOf( ES_HELP, 111, E_INFO, EV_NONE, 0 ),
"\n"
"    streams -- Display list of streams\n"
"\n"
"    p4 streams [-U -F filter -T fields -m max] [streamPath ...]\n"
"\n"
"	Reports the list of all streams currently known to the system.  If\n"
"	a 'streamPath' argument is specified, the list of streams is limited\n"
"	to those matching the supplied path. Unloaded task streams are not\n"
"	listed by default.\n"
"\n"
"	For each stream, a single line of output lists the stream depot path,\n"
"	the type, the parent stream depot path, and the stream name.\n"
"\n"
"	The -F filter flag limits the output to files satisfying the expression\n"
"	given as 'filter'.  This filter expression is similar to the one used\n"
"	by 'jobs -e jobview',  except that fields must match those above and\n"
"	are case sensitive.\n"
"\n"
"	        e.g. -F \"Parent=//Ace/MAIN & Type=development\"\n"
"\n"
"	Note: the filtering takes place post-compute phase; there are no\n"
"	indexes to optimize performance.\n"
"\n"
"	The -T fields flag (used with tagged output) limits the fields output\n"
"	to those specified by a list given as 'fields'.  These field names can\n"
"	be separated by a space or a comma.\n"
"\n"
"	        e.g. -T \"Stream, Owner\"\n"
"\n"
"	The -m max flag limits output to the first 'max' number of streams.\n"
"\n"
"	The -U flag lists unloaded task streams (see 'p4 help unload').\n"
}; 

ErrorId MsgHelp::HelpCopy = { ErrorOf( ES_HELP, 127, E_INFO, EV_NONE, 0 ),
"\n"
"    copy -- Copy one set of files to another\n"
"\n"
"    p4 copy [options] fromFile[rev] toFile\n"
"    p4 copy [options] -b branch [-r] [toFile[rev] ...]\n"
"    p4 copy [options] -b branch -s fromFile[rev] [toFile ...]\n"
"    p4 copy [options] -S stream [-P parent] [-F] [-r] [toFile[rev] ...]\n"
"\n"
"	options: -c changelist# -f -n -v -m max -q\n"
"\n"
"	'p4 copy' copies one set of files (the 'source') into another (the\n"
"	'target').\n"
"\n"
"	Using the client workspace as a staging area, 'p4 copy' makes the\n"
"	target identical to the source by branching, replacing, or deleting\n"
"	files.  'p4 submit' submits copied files to the depot. 'p4 revert'\n"
"	can be used to revert copied files instead of submitting them.  The\n"
"	history of copied files can be shown with 'p4 filelog' or 'p4\n"
"	integrated'.\n"
"\n"
"	Target files that are already identical to the source, or that are\n"
"	outside of the client view, are not affected by 'p4 copy'. Opened,\n"
"	non-identical target files cause 'p4 copy' to exit with a warning. \n"
"	When 'p4 copy' creates or modifies files in the workspace, it leaves\n"
"	them read-only; 'p4 edit' can make them writable.  Files opened by\n"
"	'p4 copy' do not need to be resolved.\n"
"\n"
"	Source and target files (fromFile and toFile) can be specified on\n"
"	the 'p4 copy' command line or through a branch view. On the command\n"
"	line, fromFile is the source file set and toFile is the target file\n"
"	set.  With a branch view, one or more toFile arguments can be given\n"
"	to limit the scope of the target file set.\n"
"\n"
"	A revision specifier can be used to select the revision to copy; by\n"
"	default, the head revision is copied. The revision specifier can be\n"
"	used on fromFile, or on toFile, but not on both.  When used on toFile,\n"
"	it refers to source revisions, not to target revisions.  A range may\n"
"	not be used as a revision specifier.  For revision syntax, see 'p4\n"
"	help revisions'.\n"
"\n"
"	The -S flag makes 'p4 copy' copy from a stream to its parent.\n"
"	Use -r with -S to reverse the copy direction.  Note that to submit\n"
"	copied stream files, the current client must be switched to the\n"
"	target stream, or to a virtual child stream of the target stream.\n"
"	The -S flag causes 'p4 copy' to use a generated branch view that\n"
"	maps the stream to its parent.  -P can be used to generate the\n"
"	branch view using a parent stream other than the stream's actual\n"
"	parent.  The -S flag also makes 'p4 copy' respect a stream's flow.\n"
"\n"
"	The -F flag can be used with -S to force copying against a stream's\n"
"	expected flow. It can also force -S to generate a branch view based\n"
"	on a virtual stream; the mapping itself refers to the underlying\n"
"	real stream.\n"
"\n"
"	The -b flag makes 'p4 copy' use a user-defined branch view.  (See\n"
"	'p4 help branch'.) The source is the left side of the branch view\n"
"	and the target is the right side. With -r, the direction is reversed.\n"
"\n"
"	The -s flag can be used with -b to cause fromFile to be treated as\n"
"	the source, and both sides of the user-defined branch view to be\n"
"	treated as the target, per the branch view mapping.  Optional toFile\n"
"	arguments may be given to further restrict the scope of the target\n"
"	file set. -r is ignored when -s is used.\n"
"\n"
"	The -c changelist# flag opens files in the designated (numbered)\n"
"	pending changelist instead of the default changelist.\n"
"\n"
"	The -f flag forces the creation of extra revisions in order to\n"
"	explicitly record that files have been copied.  Deleted source files\n"
"	will be copied if they do not exist in the target, and files that are\n"
"	already identical will be copied if they are not connected by existing\n"
"	integration records.\n"
"\n"
"	The -n flag displays a preview of the copy, without actually doing\n"
"	anything.\n"
"\n"
"	The -m flag limits the actions to the first 'max' number of files.\n"
"\n"
"	The -q flag suppresses normal output messages. Messages regarding\n"
"	errors or exceptional conditions are displayed.\n"
"\n"
"	The -v flag causes a 'virtual' copy that does not modify client\n"
"	workspace files.  After submitting a virtual integration, 'p4 sync'\n"
"	can be used to update the workspace.\n"
"\n"
"	'p4 copy' is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpCounter = { ErrorOf( ES_HELP, 33, E_INFO, EV_NONE, 0  ), 
"\n"
"     counter -- Display, set, or delete a counter\n"
"\n"
"     p4 counter name\n"
"     p4 counter [-f -v] name value\n"
"     p4 counter [-f] -d name\n"
"     p4 counter [-f -v] -i name\n"
"     p4 counter [-f] -m [ pair list ]\n"
"     p4 counter --from=oldValue --to=newValue name\n"
"\n"
"	The first form displays the value of the specified counter.\n"
"\n"
"	The second form sets the counter to the specified value.\n"
"\n"
"	The third form deletes the counter.  This option usually has the\n"
"	same effect as setting the counter to 0.\n"
"\n"
"	The -f flag sets or deletes counters used by Perforce,  which are\n"
"	listed by 'p4 help counters'. Important: Never set the 'change'\n"
"	counter to a value that is lower than its current value.\n"
"\n"
"	The -i flag increments a counter by 1 and returns the new value.\n"
"	This option is used instead of a value argument and can only be\n"
"	used with numeric counters.\n"
"\n"
"	The -v flag displays the previous value of the specified counter\n"
"	after the counter has been set or incremented.\n"
"\n"
"	The fifth form allows multiple operations in one command.\n"
"	With this, the list is pairs of arguments.  Each pair is either\n"
"	counter value or '-' counter.  To set a counter use a name and value.\n"
"	To delete a counter use a '-' followed by the name.\n"
"\n"
"	The sixth form sets a counter to the newValue only if the current\n"
"	value of the counter is oldValue. Note that a counter that has never\n"
"	been set (or has been deleted) cannot be set using this form.\n"
"\n"
"	Counters can be assigned textual values as well as numeric ones, \n"
"	despite the name 'counter'.\n"
"\n"
"	'p4 counter' requires 'review' access granted by 'p4 protect'.\n"
"	The -f flag requires that the user be an operator or have 'super'\n"
"	access.\n"
};

ErrorId MsgHelp::HelpCounters = { ErrorOf( ES_HELP, 34, E_INFO, EV_NONE, 0  ), 
"\n"
"    counters -- Display list of known counters\n"
"\n"
"    p4 counters [-e nameFilter -m max]\n"
"\n"
"	Lists the counters in use by the server.  The server\n"
"	uses the following counters directly:\n"
"\n"
"	    change           Current change number\n"
"	    job              Current job number\n"
"	    journal          Current journal number\n"
"	    lastCheckpointAction Data about the last complete checkpoint\n"
"	    logger           Event log index used by 'p4 logger'\n"
"	    traits           Internal trait lot number used by 'p4 attribute'\n"
"	    upgrade          Server database upgrade level\n"
"\n"
"	The -e nameFilter flag lists counters with a name that matches\n"
"	the nameFilter pattern, for example: -e 'mycounter-*'.\n"
"\n"
"	The -m max flag limits the output to the first 'max' counters.\n"
"\n"
"	The names 'minClient', 'minClientMessage', 'monitor',\n"
"	'security', 'masterGenNumber', and 'unicode' are\n"
"	reserved names: do not use them as ordinary counters.\n"
"\n"
"	For general-purpose server configuration, see 'p4 help configure'.\n"
};

ErrorId MsgHelp::HelpCstat = { ErrorOf( ES_HELP, 123, E_INFO, EV_NONE, 0  ), 
"\n"
"    cstat -- Dump change/sync status for current client\n"
"\n"
"    p4 cstat [files...]\n"
"\n"
"	Lists changes that are needed, had or partially synced in the current\n"
"	client. The output is returned in tagged format, similar to the fstat\n"
"	command.\n"
"\n"
"	The fields that cstat displays are:\n"
"\n"
"		change   changelist number\n"
"		status   'have', 'need' or 'partial'\n"
"\n"
};

ErrorId MsgHelp::HelpDepot = { ErrorOf( ES_HELP, 35, E_INFO, EV_NONE, 0  ), 
"\n"
"    depot -- Create or edit a depot specification\n"
"\n"
"    p4 depot [-t type] name\n"
"    p4 depot -d [-f] name\n"
"    p4 depot -o name\n"
"    p4 depot -i\n"
"\n"
"	Create a new depot specification or edit an existing depot\n"
"	specification. The specification form is put into a temporary file\n"
"	and the editor (configured by the environment variable $P4EDITOR)\n"
"	is invoked.\n"
"\n"
"	The depot specification contains the following fields:\n"
"\n"
"	Depot:       The name of the depot.  This name cannot be the same as\n"
"		     any branch, client, or label name.\n"
"\n"
"	Owner:       The user who created this depot.\n"
"\n"
"	Date:        The date that this specification was last modified.\n"
"\n"
"	Description: A short description of the depot (optional).\n"
"\n"
"	Type:        One of the types: 'local', 'stream', 'remote', 'spec',\n"
"		     'archive', 'unload', or 'tangent'.\n"
"\n"
"		     A 'local' depot (the default) is managed directly by\n"
"		     the server and its files reside in the server's root\n"
"		     directory.\n"
"\n"
"		     A 'stream' depot is a local depot dedicated to the\n"
"		     storage of files in a stream.\n"
"\n"
"		     A 'remote' depot refers to files in another Perforce\n"
"		     server.\n"
"\n"
"		     A 'spec' depot automatically archives all edited forms\n"
"		     (branch, change, client, depot, group, job, jobspec,\n"
"		     protect, triggers, typemap, and user) in special,\n"
"		     read-only files.  The files are named:\n"
"		     //depotname/formtype/name[suffix].  Updates to jobs made\n"
"		     by the 'p4 change', 'p4 fix', and 'p4 submit' commands\n"
"		     are also saved, but other automatic updates such as\n"
"		     as access times or opened files (for changes) are not.\n"
"		     A server can contain only one 'spec' depot.\n"
"\n"
"		     A 'archive' depot defines a storage location to which\n"
"		     obsolete revisions may be relocated.\n"
"\n"
"		     An 'unload' depot defines a storage location to which\n"
"		     database records may be unloaded and from which they\n"
"		     may be reloaded.\n"
"\n"
"		     A 'tangent' depot defines a read-only location which\n"
"		     holds tangents created by the 'fetch -t' command. The\n"
"		     tangent depot named 'tangent' is automatically created\n"
"		     by 'fetch -t' if one does not already exist.\n"
"\n"
"	Address:     For remote depots, the $P4PORT (connection address)\n"
"		     of the remote server.\n"
"\n"
"	Suffix:      For spec depots, the optional suffix to be used\n"
"		     for generated paths. The default is '.p4s'.\n"
"\n"
"	StreamDepth: For stream depots, the optional depth to be used\n"
"		     for stream paths in the depot, where depth equates\n"
"	             to the number of slashes following the depot name of a\n"
"	             stream.  This field is referenced when streams are\n"
"	             being created. The default is '1', matching the\n"
"	             traditional stream name.  This value may not be updated\n"
"	             once streams or archive data exist within the depot.\n"
"\n"
"	Map:         Path translation information, in the form of a file\n"
"		     pattern with a single ... in it.  For local depots,\n"
"		     this path is relative to the server's root directory\n"
"		     or to server.depot.root if it has been configured\n"
"		     (Example: depot/...).  For remote depots, this path\n"
"		     refers to the remote server's namespace\n"
"		     (Example: //depot/...).\n"
"\n"
"	SpecMap:     For spec depots, the optional description of which\n"
"	             specs should be saved, as one or more patterns.\n"
"\n"
"	The -d flag deletes the specified depot.  If any files reside in the\n"
"	depot, they must be removed with 'p4 obliterate' before deleting the\n"
"	depot. If any archive files remain in the depot directory, they may\n"
"	be referenced by lazy copies in other depots; use 'p4 snap' to break\n"
"	those linkages. Snap lazy copies prior to obliterating the old depot\n"
"	files to allow the obliterate command to remove any unreferenced\n"
"	archives from the depot directory. If the depot directory is not\n"
"	empty, you must specify the -f flag to delete the depot.\n"
"\n"
"	The -t flag is used to insert a value into the type field of a new\n"
"	depot spec.  This flag is ignored when used with existing depots.\n"
"\n"
"	The -o flag writes the depot specification to standard output. The\n"
"	user's editor is not invoked.\n"
"\n"
"	The -i flag reads a depot specification from standard input. The\n"
"	user's editor is not invoked.\n"
};

ErrorId MsgHelp::HelpDepots = { ErrorOf( ES_HELP, 36, E_INFO, EV_NONE, 0  ), 
"\n"
"    depots -- Lists defined depots\n"
"\n"
"    p4 depots\n"
"\n"
"	Lists all depots defined in the server.\n"
"	Depots takes no arguments.\n"
};

ErrorId MsgHelp::HelpDiskspace = { ErrorOf( ES_HELP, 133, E_INFO, EV_NONE, 0  ), 
"\n"
"    diskspace -- Display disk space information on the server.\n"
"\n"
"    p4 diskspace [ P4ROOT | P4JOURNAL | P4LOG | TEMP | journalPrefix | depot ]\n"
"\n"
"	Shows summary information about the current availability of disk\n"
"	space on the server.\n"
"\n"
"	If no arguments are specified, disk space information for all\n"
"	relevant file systems is displayed; otherwise the output is\n"
"	restricted to the named filesystem(s).\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpSizes = { ErrorOf( ES_HELP, 94,  E_INFO, EV_NONE, 0  ), 
"\n"
"    sizes -- Display information about the size of the files in the depot\n"
"\n"
"    p4 sizes [-a -S] [-s | -z] [-b size] [-h|-H] [-m max] file[revRange] ...\n"
"    p4 sizes -A [-a] [-s] [-b size] [-h|-H] [-m max] archivefile...\n"
"    p4 sizes -U unloadfile ...\n"
"\n"
"	For specified file specification, displays depot file name, revision,\n"
"	file count and file size.  If you use client syntax for the file\n"
"	specification,the view mapping is used to list the corresponding\n"
"	depot files.\n"
"\n"
"	The -a flag lists all revisions within the specific range, rather\n"
"	than just the highest revision in the range.\n"
"\n"
"	The -b option specifies the blocksize in bytes.  When this option\n"
"	is specified, each accumulated filesize is rounded up to the nearest\n"
"	blocksize.\n"
"\n"
"	The -h or -H flag prints the sizes in human-readable form, using a\n"
"	scaling factor of 1024 for -h or 1000 for -H.\n"
"\n"
"	The -m flag limits sizes to the first 'max' number of files.\n"
"\n"
"	The -s option calculates the sum of the file sizes for the specified\n"
"	files.\n"
"\n"
"	The -S option displays size information for shelved files only. With\n"
"	this option, revision specifications are not permitted.\n"
"\n"
"	The -z option omits lazy copies when calculating the file sizes for\n"
"	the specified files.\n"
"\n"
"	If there is no file size information for a file revision in the depot\n"
"	metadata, the sizes command returns a size of \"<n/a>\".\n"
"\n"
"	'p4 verify -u' updates the metadata for all revisions that require it.\n"
"\n"
"	The -A flag displays files in archive depots (see 'p4 help archive').\n"
"\n"
"	The -U option displays size information for unload files in the\n"
"	unload depot (see 'p4 help unload').\n"
};

ErrorId MsgHelp::HelpDelete = { ErrorOf( ES_HELP, 37, E_INFO, EV_NONE, 0  ), 
"\n"
"    delete -- Open an existing file for deletion from the depot\n"
"\n"
"    p4 delete [-c changelist#] [-n -v -k] [--remote=rmt] file ...\n"
"\n"
"	Opens a depot file for deletion.\n"
"	If the file is synced in the client workspace, it is removed.  If a\n"
"	pending changelist number is specified using with the -c flag, the\n"
"	file is opened for delete in that changelist. Otherwise, it is opened\n"
"	in the default pending changelist.\n"
"\n"
"	Files that are deleted generally do not appear on the have list.\n"
"\n"
"	The -n flag displays a preview of the operation without changing any\n"
"	files or metadata.\n"
"\n"
"	The -k flag performs the delete on the server without modifying\n"
"	client files.  Use with caution, as an incorrect delete can cause\n"
"	discrepancies between the state of the client and the corresponding\n"
"	server metadata.\n"
"\n"
"	The -v flag enables you to delete files that are not synced to the\n"
"	client workspace. The files should be specified using depot syntax;\n"
"	since the files are not synced, client syntax or local syntax are\n"
"	inappropriate and could introduce ambiguities in the file list.\n"
"	Note, though, that if the files ARE synced, 'delete -v' will remove\n"
"	the files from the client in addition to opening them for delete.\n"
"	The preferred way to delete a set of files without transferring\n"
"	them to your machine is: 'sync -k file...', then 'delete -k file...'\n"
"\n"
"	The --remote flag is useful for DVCS configurations in which files\n"
"	of type +l are in use. 'p4 delete --remote=origin filename' opens the\n"
"	named file for deletion in your DVCS server, and additionally, if the\n"
"	file is of type +l, takes a global exclusive lock on the origin\n"
"	server. That global exclusive lock will be retained until you push\n"
"	the deleted file to the origin server, or until you use the\n"
"	'p4 revert --remote=origin filename' command to revert the file.\n"
"\n"
"	'p4 delete' is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpDescribe = { ErrorOf( ES_HELP, 38, E_INFO, EV_NONE, 0  ), 
"\n"
"    describe -- Display a changelist description\n"
"\n"
"    p4 describe [-d<flags> -m -s -S -f -O -I] changelist# ...\n"
"\n"
"	Display a changelist description, including the changelist number,\n"
"	user, client, date of submission, textual description, list of\n"
"	affected files and diffs of files updated.  Pending changelists\n"
"	are indicated as 'pending' and file diffs are not displayed.\n"
"\n"
"	For restricted changelists, 'no permission' is displayed if the user\n"
"	is not permitted to view the change (see 'p4 help change'). If a\n"
"	submitted change is restricted, the description is hidden unless\n"
"	the user is the owner of the change or has list permission for\n"
"	at least one file in the change. If a shelved change is restricted,\n"
"	the description is hidden unless the user is the owner of the change,\n"
"	or has list permission to at least one file in the change and has\n"
"	used the -S flag to request the shelved change. To view restricted\n"
"	pending (not shelved) changes, the user must be the owner of the\n"
"	change.\n"
"\n"
"	The -d<flags> passes one or more flags to the built-in diff routine\n"
"	to modify the output: -dn (RCS), -dc[n] (context), -ds (summary),\n"
"	-du[n] (unified), -db (ignore whitespace changes), -dw (ignore\n"
"	whitespace), -dl (ignore line endings). The optional argument to\n"
"	to -dc/-du specifies number of context lines.\n"
"\n"
"	The -s flag omits the diffs of files that were updated.\n"
"\n"
"	The -S flag lists files that are shelved for the specified changelist\n"
"	and displays diffs of the files against their previous revision.\n"
"	If the change is restricted, the description is displayed according\n"
"	to the rules for shelved restricted changes described above.\n"
"\n"
"	The -f flag forces display of the descriptions in a restricted\n"
"	change.  The -f flag requires 'admin' access, which is granted\n"
"	using 'p4 protect'.\n"
"\n"
"	The -O flag specifies that the changelist number is the original\n"
"	number of a changelist which was renamed on submit.\n"
"\n"
"	The -I flag specifies that the changelist number is the Identity\n"
"	field of a changelist.\n"
"\n"
"	The -m flag limits files to the first 'max' number of files.\n"
};

ErrorId MsgHelp::HelpDiff = { ErrorOf( ES_HELP, 39, E_INFO, EV_NONE, 0  ), 
"\n"
"    diff -- Display diff of client file with depot file\n"
"\n"
"    p4 diff [-d<flags> -f -m max -Od -s<flag> -t] [file[rev] ...]\n"
"\n"
"	On the client machine, diff a client file against the corresponding\n"
"	revision in the depot. The file is compared only if the file is\n"
"	opened for edit or a revision is provided. See 'p4 help revisions'\n"
"	for details about specifying revisions.\n"
"\n"
"	If the file specification is omitted, all open files are diffed.\n"
"	This option can be used to view pending changelists.\n"
"\n"
"	The -d<flags> modify the output as follows:\n"
"	    -dn (RCS),\n"
"	    -dc[n] (context),\n"
"	    -ds (summary),\n"
"	    -du[n] (unified),\n"
"	    -db (ignore whitespace changes),\n"
"	    -dw (ignore whitespace),\n"
"	    -dl (ignore line endings).\n"
"	The optional argument to -dc/-du specifies number of context lines.\n"
"\n"
"	The -f flag diffs every file, regardless of whether they are opened\n"
"	or the client has synced the specified revision.  This option can be\n"
"	used to verify the contents of the client workspace.\n"
"\n"
"	The -m max flag limits output to the first 'max' number of files,\n"
"	unless the -s flag is used, in which case it is ignored.\n"
"\n"
"	The -Od flag limits output to files that differ.\n"
"\n"
"	The -s options lists the files that satisfy the following criteria:\n"
"\n"
"		-sa     Opened files that differ from the revision\n"
"			in the depot or are missing.\n"
"\n"
"		-sb     Files that have been opened for integrate, resolved,\n"
"			and subsequently modified.\n"
"\n"
"		-sd     Unopened files that are missing on the client.\n"
"\n"
"		-se     Unopened files that differ from the revision\n"
"			in the depot.\n"
"\n"
"		-sl	Every unopened file, along with the status of\n"
"			'same, 'diff', or 'missing' as compared to the\n"
"			corresponding revision in the depot.\n"
"\n"
"		-sr     Opened files that do not differ from the revision in\n"
"			the depot.\n"
"\n"
"	Note that if a revision is provided in the file specification, the -s\n"
"	options compare the file(s) regardless of whether they are opened\n"
"	or the client has synced the specified revision.\n"
"\n"
"	The -t flag forces 'p4 diff' to diff binary files.\n"
"\n"
"	If the environment variable $P4DIFF is set,  the specified diff\n"
"	program is launched in place of the default Perforce client diff.\n"
"	The -d<flags> option can be used to pass arguments to the diff\n"
"	program.  Because the -s flag is only implemented internally, any\n"
"	-d<flags> option used with the -s<flag> is ignored. To configure a\n"
"	diff program for Unicode files, set the environment variable\n"
"	$P4DIFFUNICODE. Specify the file's character set as the first\n"
"	argument to the program.\n"
};

ErrorId MsgHelp::HelpDiff2 = { ErrorOf( ES_HELP, 40, E_INFO, EV_NONE, 0  ), 
"\n"
"    diff2 -- Compare one set of depot files to another\n"
"\n"
"    p4 diff2 [options] fromFile[rev] toFile[rev]\n"
"    p4 diff2 [options] -b branch [[fromFile[rev]] toFile[rev]]\n"
"    p4 diff2 [options] [-S stream] [-P parent] [[fromFile[rev]] toFile[rev]]\n"
"\n"
"    	options: -d<flags> -Od -q -t -u\n"
"\n"
"	'p4 diff2' runs on the server to compare one set of depot files (the\n"
"	'source') to another (the 'target').  Source and target file sets\n"
"	can be specified on the 'p4 diff2' command line or through a branch\n"
"	view.\n"
"\n"
"	With a branch view, fromFile and toFile are optional; fromFile limits\n"
"	the scope of the source file set, and toFile limits the scope of the\n"
"	target. If only one file argument is given, it is assumed to be\n"
"	toFile.\n"
"\n"
"	fromFile and toFile can include revision specifiers; by default, the\n"
"	head revisions are diffed.  See 'p4 help revisions' for details\n"
"	about specifying file revisions.\n"
"\n"
"	'p4 diff2' precedes each diffed file pair with a header line of the\n"
"	following form:\n"
"\n"
"	    ==== source#rev (type) - target#rev (type) ==== summary\n"
"\n"
"	A source or target file shown as '<none>' means there is no file\n"
"	at the specified name or revision to pair with its counterpart.\n"
"	The summary status is one of the following: 'identical' means file\n"
"	contents and types are identical, 'types' means file contents are\n"
"	identical but the types are different, and 'content' means file\n"
"	contents are different.\n"
"\n"
"	The -b flag makes 'p4 diff2' use a user-defined branch view.  (See\n"
"	'p4 help branch'.) The left side of the branch view is the source\n"
"	and the right side is the target.\n"
"\n"
"	The -S flag makes 'p4 diff2' use a generated branch view that maps\n"
"	a stream (or its underlying real stream) to its parent.  This defaults\n"
"	to the current client's stream, if applicable.  -P can be used to\n"
"	generate the branch view using a parent stream other than the stream's\n"
"	actual parent.\n"
"\n"
"	The -d<flags> modify the output of diffs as follows:\n"
"\n"
"		-dn (RCS)\n"
"		-dc[n] (context)\n"
"		-ds (summary)\n"
"		-du[n] (unified)\n"
"		-db (ignore whitespace changes)\n"
"		-dw (ignore whitespace)\n"
"		-dl (ignore line endings).\n"
"\n"
"	The optional argument to -dc/-du specifies number of context lines.\n"
"\n"
"	The -Od flag limits output to files that differ.\n"
"\n"
"	The -q omits files that have identical content and types and\n"
"	suppresses the actual diff for all files.\n"
"\n"
"	The -t flag forces 'p4 diff2' to diff binary files.\n"
"\n"
"	The -u flag uses the GNU diff -u format and displays only files\n"
"	that differ. The file names and dates are in Perforce syntax, but\n"
"	the output can be used by the patch program.\n"
};

ErrorId MsgHelp::HelpDirs = { ErrorOf( ES_HELP, 41, E_INFO, EV_NONE, 0  ), 
"\n"
"    dirs -- List depot subdirectories\n"
"\n"
"    p4 dirs [-C -D -H] [-S stream] [-i] dir[revRange] ...\n"
"\n"
"	List directories that match the specified file pattern (dir).\n"
"	This command does not support the recursive wildcard (...).\n"
"	Use the * wildcard instead.\n"
"\n"
"	Perforce does not track directories individually. A path is treated\n"
"	as a directory if there are any undeleted files with that path as a\n"
"	prefix.\n"
"\n"
"	By default, all directories containing files are listed. If the dir\n"
"	argument includes a revision range, only directories containing files\n"
"	in the range are listed. For details about specifying file revisions,\n"
"	see 'p4 help revisions'.\n"
"\n"
"	The -i flag is used to ignore the case of the file pattern when\n"
"	listing directories in a case sensitive server. This flag is not\n"
"	compatible with the -C option.\n"
"\n"
"	The -C flag lists only directories that fall within the current\n"
"	client view.\n"
"\n"
"	The -D flag includes directories containing only deleted files.\n"
"\n"
"	The -H flag lists directories containing files synced to the current\n"
"	client workspace.\n"
"\n"
"	The -S flag limits output to depot directories mapped in a stream's\n"
"	client view.\n"
};

ErrorId MsgHelp::HelpDuplicate = { ErrorOf( ES_HELP, 104, E_INFO, EV_NONE, 0  ), 
"\n"
"    duplicate -- duplicate revisions with integration history (unsupported)\n"
"\n"
"    p4 duplicate [-n -q] from[revRange] to\n"
"\n"
"	Duplicate revisions as if they always existed.  All aspects of the\n"
"	source revisions are mirrored to the target revisions, including\n"
"	changelist number, date, attributes, and contents.  The target\n"
"	revision must not already exist and the target file must not be\n"
"	opened (for any operation) on any client.\n"
"\n"
"	Integration records are duplicated as well.\n"
"\n"
"	'p4 duplicate' followed by a 'p4 obliterate' (of the source\n"
"	revisions) is in effect a deep rename operation, with any source\n"
"	revision in client workspace or labels forgotten.\n"
"\n"
"	The -n flag displays what would be duplicated without actually\n"
"	copying anything.\n"
"\n"
"	The -q flag suppresses the warning about target revisions already\n"
"	existing.\n"
"\n"
"	'p4 duplicate' requires 'admin' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpEdit = { ErrorOf( ES_HELP, 42, E_INFO, EV_NONE, 0  ), 
"\n"
"    edit -- Open an existing file for edit\n"
"\n"
"    p4 edit [-c changelist#] [-k -n] [-t filetype] [--remote=rmt] file ...\n"
"\n"
"	Open an existing file for edit.  The server records the fact that\n"
"	the current user has opened the file in the current workspace, and\n"
"	changes the file permission from read-only to read/write.\n"
"\n"
"	If -c changelist# is included, the file opened in the specified\n"
"	pending changelist.  If changelist number is omitted, the file is\n"
"	opened in the 'default' changelist.\n"
"\n"
"	If -t filetype is specified, the file is assigned that Perforce\n"
"	filetype. Otherwise, the filetype of the previous revision is reused.\n"
"	If a partial filetype is specified, it is combined with the current\n"
"	filetype.For details, see 'p4 help filetypes'.\n"
"	Using a filetype of 'auto' will cause the filetype to be chosen\n"
"	as if the file were being added, that is the typemap will be\n"
"	considered and the file contents may be examined.\n"
"\n"
"	The -n flag previews the operation without changing any files or\n"
"	metadata.\n"
"\n"
"	The -k flag updates metadata without transferring files to the\n"
"	workspace. This option can be used to tell the server that files in\n"
"	a client workspace are already editable, even if they are not in the\n"
"	client view. Typically this flag is used to correct the Perforce\n"
"	server when it is wrong about the state of files in the client\n"
"	workspace, but incorrect use of this option can result in inaccurate\n"
"	file status information.\n"
"\n"
"	The --remote flag is useful for DVCS configurations in which files\n"
"	of type +l are in use. 'p4 edit --remote=origin filename' opens the\n"
"	named file for edit in your DVCS server, and additionally, if the\n"
"	file is of type +l, takes a global exclusive lock on the origin\n"
"	server. That global exclusive lock will be retained until you push\n"
"	the updated file to the origin server, or until you use the\n"
"	'p4 revert --remote=origin filename' command to revert the file.\n"
"\n"
"	'p4 edit' is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpFiles = { ErrorOf( ES_HELP, 43, E_INFO, EV_NONE, 0  ), 
"\n"
"    files -- List files in the depot\n"
"\n"
"    p4 files [ -a ] [ -A ] [ -e ] [-i] [ -m max ] file[revRange] ...\n"
"    p4 files -U unloadfile ...\n"
"\n"
"	List details about specified files: depot file name, revision,\n"
"	file, type, change action and changelist number of the current\n"
"	head revision. If client syntax is used to specify the file\n"
"	argument, the client view mapping is used to determine the\n"
"	corresponding depot files.\n"
"\n"
"	By default, the head revision is listed.  If the file argument\n"
"	specifies a revision, then all files at that revision are listed.\n"
"	If the file argument specifies a revision range, the highest revision\n"
"	in the range is used for each file. For details about specifying\n"
"	revisions, see 'p4 help revisions'.\n"
"\n"
"	The -a flag displays all revisions within the specific range, rather\n"
"	than just the highest revision in the range.\n"
"\n"
"	The -A flag displays files in archive depots.\n"
"\n"
"	The -e flag displays files with an action of anything other than\n"
"	deleted, purged or archived.  Typically this revision is always\n"
"	available to sync or integrate from.\n"
"\n"
"	The -i flag is used to ignore the case of the file argument when\n"
"	listing files in a case sensitive server.\n"
"\n"
"	The -m flag limits files to the first 'max' number of files.\n"
"\n"
"	The -U option displays files in the unload depot (see 'p4 help unload'\n"
"	for more information about the unload depot).\n"
};

ErrorId MsgHelp::HelpFilelog = { ErrorOf( ES_HELP, 44, E_INFO, EV_NONE, 0  ), 
"\n"
"    filelog -- List revision history of files\n"
"\n"
"    p4 filelog [-c changelist# -h -i -l -L -t -m max -p -s] file[revRange] ...\n"
"\n"
"	List the revision history of the specified files, from the most\n"
"	recent revision to the first.  If the file specification includes\n"
"	a revision, the command lists revisions at or prior to the specified\n"
"	revision.  If the file specification includes a revision range,\n"
"	the command lists only the specified revisions.\n"
"	See 'p4 help revisions' for details.\n"
"\n"
"	The -c changelist# flag displays files submitted at the specified\n"
"	changelist number.\n"
"\n"
"	The -i flag includes inherited file history. If a file was created by\n"
"	branching (using 'p4 integrate'), filelog lists the revisions of the\n"
"	file's ancestors up to the branch points that led to the specified\n"
"	revision.  File history inherited by renaming (using 'p4 move') is\n"
"	always displayed regardless of whether -i is specified.\n"
"\n"
"	The -h flag displays file content history instead of file name\n"
"	history.  The list includes revisions of other files that were\n"
"	branched or copied (using 'p4 integrate' and 'p4 resolve -at') to\n"
"	the specified revision.  Revisions that were replaced by copying\n"
"	or branching are omitted, even if they are part of the history of\n"
"	the specified revision.\n"
"\n"
"	The -t flag displays the time as well as the date.\n"
"\n"	
"	The -l flag lists the full text of the changelist descriptions.\n"
"\n"
"	The -L flag lists the full text of the changelist descriptions,\n"
"	truncated to 250 characters if longer.\n"
"\n"
"	The -m max displays at most 'max' revisions per file of the file[rev]\n"
"	argument specified.\n"
"\n"
"	The -p flag is used in conjunction with the '-h' flag to prevent\n"
"	filelog from following content of promoted task streams. This flag\n"
"	is useful when there are many child task streams branched from the\n"
"	file argument supplied.\n"
"\n"
"	The -s flag displays a shortened form of filelog that omits\n"
"	non-contributory integrations.\n"
};

ErrorId MsgHelp::HelpFix = { ErrorOf( ES_HELP, 45, E_INFO, EV_NONE, 0  ), 
"\n"
"    fix -- Mark jobs as being fixed by the specified changelist\n"
"\n"
"    p4 fix [-d] [-s status] -c changelist# jobName ...\n"
"\n"
"	'p4 fix' marks each named job as being fixed by the changelist\n"
"	number specified with -c.  The changelist can be pending or\n"
"	submitted and the jobs can be open or closed (fixed by another\n"
"	changelist).\n"
"\n"
"	If the changelist has already been submitted and the job is still\n"
"	open, then 'p4 fix' marks the job closed.  If the changelist has not\n"
"	been submitted and the job is still open, the job is closed when the\n"
"	changelist is submitted.  If the job is already closed, it remains\n"
"	closed.\n"
"\n"
"	The -d flag deletes the specified fixes.  This operation does not\n"
"	otherwise affect the specified changelist or jobs.\n"
"\n"
"	The -s flag uses the specified status instead of the default defined\n"
"	in the job specification.\n"
"\n"
"	The fix's status is reported by 'p4 fixes', and is related to the\n"
"	job's status. Certain commands set the job's status to the fix's\n"
"	status for each job associated with the change. When a job is fixed\n"
"	by a submitted change, the job's status is set to match the fix\n"
"	status.  When a job is fixed by a pending change, the job's status\n"
"	is set to match the fix status when the change is submitted. If the\n"
"	fix's status is 'same', the job's status is left unchanged.\n"
};

ErrorId MsgHelp::HelpFixes = { ErrorOf( ES_HELP, 46, E_INFO, EV_NONE, 0  ), 
"\n"
"    fixes -- List jobs with fixes and the changelists that fix them\n"
"\n"
"    p4 fixes [-i -m max -c changelist# -j jobName] [file[revRange] ...]\n"
"\n"
"	'p4 fixes' list fixed jobs and the number of the changelist that\n"
"	 contains the fix. Fixes are associated with changelists using the\n"
"	'p4 fix' command or by editing and submitting changelists.\n"
"\n"
"	The 'p4 fixes' command lists both submitted and pending changelists.\n"
"\n"
"	By default, 'p4 fixes' lists all fixes.  This list can be limited\n"
"	as follows: to list fixes for a specified job, use the -j jobName\n"
"	flag.  To list fixes for a specified changelist, use -c changelist#.\n"
"	To list fixes that affect specified files, include the file argument.\n"
"	The file pattern can include wildcards and revision specifiers. For\n"
"	details about revision specifiers, see 'p4 help revisions'\n"
"\n"
"	The -i flag also includes any fixes made by changelists integrated\n"
"	into the specified files.\n"
"\n"
"	The -m max flag limits output to the specified number of job\n"
"	fixes.\n"
};

ErrorId MsgHelp::HelpFstat = { ErrorOf( ES_HELP, 48, E_INFO, EV_NONE, 0  ), 
"\n"
"    fstat -- Dump file info\n"
"\n"
"    p4 fstat [-F filter -L -T fields -m max -r] [-c | -e changelist#]\n"
"	[-Ox -Rx -Sx] [-A pattern] [-U] file[rev] ...\n"
"\n"
"	Fstat lists information about files, one line per field.  Fstat is\n"
"	intended for use in Perforce API applications, where the output can\n"
"	be accessed as variables, but its output is also suitable for parsing\n"
"	from the client command output in scripts.\n"
"\n"
"	The fields that fstat displays are:\n"
"\n"
"		attr-<name>          -- attribute value for <name>\n"
"		attrProp-<name>      -- set if attribute <name> is propagating\n"
"		clientFile           -- local path (host or Perforce syntax)\n"
"		depotFile            -- name in depot\n"
"		movedFile            -- name in depot of moved to/from file\n"
"		path                 -- local path (host syntax)\n"
"		isMapped             -- set if file is mapped in the client\n"
"		shelved              -- set if file is shelved\n"
"		headAction           -- action at head rev, if in depot\n"
"		headChange           -- head rev changelist#, if in depot\n"
"		headRev              -- head rev #, if in depot\n"
"		headType             -- head rev type, if in depot\n"
"		headCharset          -- head charset, for unicode type\n"
"		headTime             -- head rev changelist time, if in depot\n"
"		headModTime	     -- head rev mod time, if in depot\n"
"		movedRev             -- head rev # of moved file\n"
"		haveRev              -- rev had on client, if on client\n"
"		desc                 -- change description (if -e specified)\n"
"		digest               -- MD5 digest (fingerprint)\n"
"		fileSize             -- file size\n"
"		action               -- open action, if opened\n"
"		type                 -- open type, if opened\n"
"		charset              -- open charset, for unicode type\n"
"		actionOwner          -- user who opened file, if opened\n"
"		workRev              -- open revision, if opened\n"
"		change               -- open changelist#, if opened\n"
"		resolved             -- resolved integration records\n"
"		unresolved           -- unresolved integration records\n"
"		reresolvable         -- reresolvable integration records\n"
"		otherOpen            -- set if someone else has it open\n"
"		otherOpen#           -- list of user@client with file opened\n"
"		otherLock            -- set if someone else has it locked\n"
"		otherLock#           -- user@client with file locked\n"
"		otherAction#         -- open action, if opened by someone else\n"
"		otherChange#         -- changelist, if opened by someone else\n"
"		openattr-<name>      -- attribute value for <name>\n"
"		openattrProp-<name>  -- set if attribute <name> is propagating\n"
"		ourLock              -- set if this user/client has it locked\n"
"		resolveAction#       -- pending integration record action\n"
"		resolveBaseFile#     -- pending integration base file\n"
"		resolveBaseRev#      -- pending integration base rev\n"
"		resolveFromFile#     -- pending integration from file\n"
"		resolveStartFromRev# -- pending integration from start rev\n"
"		resolveEndFromRev#   -- pending integration from end rev\n"
"		totalFileCount       -- total no. of files, if sorted\n"
"\n"
"	The -A <pattern> flag restricts displayed attributes to those that\n"
"	match 'pattern'.\n"
"\n"
"	The -F flag lists only files satisfying the filter expression. This\n"
"	filter syntax is similar to the one used for 'jobs -e jobview' and is\n"
"	used to evaluate the contents of the fields in the preceding list.\n"
"	Filtering is case-sensitive.\n"
"\n"
"	        Example: -Ol -F \"fileSize > 1000000 & headType=text\"\n"
"\n"
"	Note: filtering is not optimized with indexes for performance.\n"
"\n"
"	The -L flag can be used with multiple file arguments that are in\n"
"	full depot syntax and include a valid revision number. When this\n"
"	flag is used the arguments are processed together by building an\n"
"	internal table similar to a label. This file list processing is\n"
"	significantly faster than having to call the internal query engine\n"
"	for each individual file argument. However, the file argument syntax\n"
"	is strict and the command will not run if an error is encountered.\n"
"\n"
"	The -T fields flag returns only the specified fields. The field names\n"
"	can be specified using a comma- or space-delimited list.\n"
"\n"
"	        Example: -Ol -T \"depotFile, fileSize\"\n"
"\n"
"	The -m max flag limits output to the specified number of files.\n"
"\n"
"	The -r flag sorts the output in reverse order.\n"
"\n"
"	The -c changelist# flag displays files modified by the specified\n"
"	changelist or after that changelist was submitted.  This operation is\n"
"	much faster than using a revision range on the affected files.\n"
"\n"
"	The -e changelist# flag lists files modified by the specified\n"
"	changelist. When used with the -Ro flag, only pending changes are\n"
"	considered, to ensure that files opened for add are included. This\n"
"	option also displays the change description.\n"
"\n"
"	The -O options modify the output as follows:\n"
"\n"
"	        -Oa     output attributes set by 'p4 attribute'.\n"
"\n"
"	        -Od     output the digest of the attribute.\n"
"\n"
"	        -Oe     output attribute values encoded as hex\n"
"\n"
"	        -Of     output all revisions for the given files (this\n"
"	                option suppresses other* and resolve* fields)\n"
"\n"
"	        -Ol     output a fileSize and digest field for each revision\n"
"	                (this may be expensive to compute)\n"
"\n"
"	        -Op     output the local file path in both Perforce syntax\n"
"	                (//client/) as 'clientFile' and host form as 'path'\n"
"\n"
"	        -Or     output pending integration record information for\n"
"	                files opened on the current client, or if used with\n"
"	                '-e <change> -Rs', on the shelved change\n"
"\n"
"	        -Os     exclude client-related data from output\n"
"\n"
"	The -R option limits output to specific files:\n"
"\n"
"	        -Rc     files mapped in the client view\n"
"	        -Rh     files synced to the client workspace\n"
"	        -Rn     files opened not at the head revision\n"
"	        -Ro     files opened\n"
"	        -Rr     files opened that have been resolved\n"
"	        -Rs     files shelved (requires -e)\n"
"	        -Ru     files opened that need resolving\n"
"\n"
"	The -S option changes the order of output:\n"
"\n"
"	        -St     sort by filetype\n"
"	        -Sd     sort by date\n"
"	        -Sr     sort by head revision\n"
"	        -Sh     sort by have revision\n"
"	        -Ss     sort by filesize\n"
"\n"
"	The -U flag displays information about unload files in the unload\n"
"	depot (see 'p4 help unload').\n"
"\n"
"	For compatibility, the following flags are also supported:\n"
"	-C (-Rc) -H (-Rh) -W (-Ro) -P (-Op) -l (-Ol) -s (-Os).\n"
};

ErrorId MsgHelp::HelpGrep = { ErrorOf( ES_HELP, 122, E_INFO, EV_NONE, 0 ),
"\n"
"    grep -- Print lines matching a pattern\n"
"\n"
"    p4 grep [options] -e pattern file[revRange]...\n"
"\n"
"	options: -a -i -n -A <num> -B <num> -C <num> -t -s (-v|-l|-L) (-F|-G)\n"
"\n"
"	Searches files for lines that match the specified regular expression,\n"
"	which can contain wildcards.  The parser used by the Perforce server\n"
"	is based on V8 regexp and might not be compatible with later parsers,\n"
"	but the majority of functionality is available.\n"
"\n"
"	By default the head revision is searched.  If the file argument\n"
"	includes a revision specification, all corresponding revisions are\n"
"	searched.  If the file argument includes a revision range, only files\n"
"	in that range are listed, and the highest revision in the range is\n"
"	searched.  For details about revision specifiers, see \n"
"	'p4 help revisions'.\n"
"\n"
"	The -a flag searches all revisions within the specified range. By\n"
"	default only the highest revision in the range is searched.\n"
"\n"
"	The -i flag causes the pattern matching to be case-insensitive. By\n"
"	default, matching is case-sensitive.\n"
"\n"
"	The -n flag displays the matching line number after the file revision\n"
"	number. By default, matches are displayed as revision#: <text>.\n"
"\n"
"	The -v flag displays files with non-matching lines.\n"
"\n"
"	The -F flag is used to interpret the pattern as a fixed string.\n"
"\n"
"	The -G flag is used to interpret the pattern as a regular expression,\n"
"	which is the default behavior.\n"
"\n"
"	The -L flag displays the name of each selected file from which no\n"
"	output would normally have been displayed. Scanning stops on the\n"
"	first match.\n"
"\n"
"	The -l flag displays the name of each selected file containing\n"
"	matching text. Scanning stops on the first match.\n"
"\n"
"	The -s flag suppresses error messages that result from abandoning\n"
"	files that have a maximum number of characters in a single line that\n"
"	are greater than 4096.  By default, an error is reported when grep\n"
"	abandons such files.\n"
"\n"
"	The -t flag searches binary files.  By default, only text files are\n"
"	searched.\n"
"\n"
"	The -A <num> flag displays the specified number of lines of trailing\n"
"	context after matching lines.\n"
"\n"
"	The -B <num> flag displays the specified number of lines of leading\n"
"	context before matching lines.\n"
"\n"
"	The -C <num> flag displays the specified number of lines of output\n"
"	context.\n"
"\n"
"	Regular expressions:\n"
"\n"
"	A regular expression is zero or more branches, separated by `|'. It\n"
"	matches anything that matches one of the branches.\n"
"\n"
"	A branch is zero or more pieces, concatenated.  It matches a match\n"
"	for the first, followed by a match for the second, etc.\n"
"\n"
"	A piece is an atom possibly followed by `*', `+', or `?'.  An atom\n"
"	followed by `*' matches a sequence of 0 or more matches of the atom.\n"
"	An atom followed by `+' matches a sequence of 1 or more matches of\n"
"	the atom.  An atom followed by `?' matches a match of the atom, or\n"
"	the null string.\n"
"\n"
"	An atom is a regular expression in parentheses (matching a match for\n"
"	the regular expression),  a range (see below),  `.'  (matching any\n"
"	single character),  `^' (matching the null string at the beginning\n"
"	of the input string),  `$' (matching the null string at the end of\n"
"	the input string),  a `\\' followed by a single character (matching\n"
"	that character),  or a single character with no other significance\n"
"	(matching that character).\n"
"\n"
"	A range is a sequence of characters enclosed in `[]'.  It normally\n"
"	matches any single character from the sequence.  If the sequence\n"
"	begins with `^',  it matches any single character not from the rest\n"
"	of the sequence.  If two characters in the sequence are separated by\n"
"	`-', this is shorthand for the full list of ASCII characters between\n"
"	them (e.g. `[0-9]' matches any decimal digit).  To include a literal\n"
"	`]' in the sequence, make it the first character (following a possible\n"
"	`^').  To include a literal `-', make it the first or last character.\n"
"\n"
"	The symbols '\\<' and '\\>' respectively match the empty string at\n"
"	the beginning and end of a word.\n"
};

ErrorId MsgHelp::HelpGroup = { ErrorOf( ES_HELP, 49, E_INFO, EV_NONE, 0  ), 
"\n"
"    group -- Change members of user group\n"
"\n"
"    p4 group [-a|-A] name\n"
"    p4 group -d [-a | -F] name\n"
"    p4 group -o name\n"
"    p4 group -i [-a|-A]\n"
"\n"
"	Create a group or modify the membership of an existing group.\n"
"	A group can contain users and other groups. The group specification\n"
"	is put into a temporary file and the editor (configured by the\n"
"	environment variable $P4EDITOR) is invoked.\n"
"\n"
"	A group exists when it has any users or other groups in it, and\n"
"	ceases to exist if all users and groups in it are removed.\n"
"\n"
"	Each group has MaxResults, MaxScanRows, MaxLockTime and MaxOpenFiles\n"
"	fields, which limit the resources committed to operations performed by\n"
"	members of the group.  For these fields, 'unlimited' or 'unset'\n"
"	means no limit for that	group.  An individual user's limit is the\n"
"	highest of any group with a limit to which he belongs, unlimited if\n"
"	any of his groups has 'unlimited' for that field, or unlimited\n"
"	if he belongs to no group with a limit.  See 'p4 help maxresults'\n"
"	for more information on MaxResults, MaxScanRows, MaxLockTime and\n"
"	MaxOpenFiles.\n"
"\n"
"	Each group also has a Timeout field, which specifies how long (in\n"
"	seconds) a 'p4 login' ticket remains valid.  A value of 'unset' or\n"
"	'unlimited' is equivalent to no timeout. An individual's timeout is\n"
"	the highest of any group with a limit to which he belongs, unlimited\n"
"	if any of his groups has 'unlimited' for the timeout value, or\n"
"	unlimited if he belongs to no group with a limit. See 'p4 help login'\n"
"	for more information.\n"
"\n"
"	Each group has a PasswordTimeout field, which determines how long a\n"
"	password remains valid for members of the group.\n"
"\n"
"	A group may be synchronized with an LDAP group by setting the three\n"
"	fields: LdapConfig, LdapSearchQuery and LdapUserAttribute. This takes\n"
"	the LDAP configuration (see 'p4 ldap') specified by LdapConfig and uses\n"
"	it to execute the query stored by LdapSearchQuery. The LDAP attribute\n"
"	specified by LdapUserAttribute is taken to be user's username and is\n"
"	added to the group's user list.  At least one group owner must be set\n"
"	if these LDAP fields are used.  If the LDAP server requires login for\n"
"	read-only queries, then the LDAP configuration must contain valid bind\n"
"	credentials in the LDAP spec's SearchBindDN and SearchPasswd fields\n"
"\n"
"	The -d flag deletes a group.\n"
"\n"
"	The -o flag writes the group specification to standard output. The\n"
"	user's editor is not invoked.\n"
"\n"
"	The -i flag reads a group specification from standard input. The\n"
"	user's editor is not invoked.  The new group specification replaces\n"
"	the previous one.\n"
"\n"
"	The -a flag enables a user without 'super' access to modify the group\n"
"	if that user is an 'owner' of that group. Group owners	are specified\n"
"	in the 'Owners' field of the group spec.\n"
"\n"
"	The -A flag enables a user with 'admin' access to add a new group.\n"
"	Existing groups may not be modified when this flag is used.\n"
"\n"
"	The -F flag, used only with -d, forces the deletion of the\n"
"	specified group, and also removes the group from the protections\n"
"	table and from all groups.\n"
"\n"
"	All commands that require access granted by 'p4 protect' consider a\n"
"	user's groups when calculating access levels.\n"
"\n"
"	'p4 group' requires 'super' access granted by 'p4 protect' unless\n"
"	invoked with the '-a' or '-A' flag by a qualified user.\n"
};

ErrorId MsgHelp::HelpGroups = { ErrorOf( ES_HELP, 50, E_INFO, EV_NONE, 0  ), 
"\n"
"    groups -- List groups (of users)\n"
"\n"
"    p4 groups [-m max] [-v] [group]\n"
"    p4 groups [-m max] [-i [-v]] user | group\n"
"    p4 groups [-m max] [-g | -u | -o] name\n"
"\n"
"	The first form lists all user groups defined in the server, or just\n"
"	the specified group.\n"
"\n"
"	The second form displays subgroup relationships. If a user argument is\n"
"	specified, only groups containing that user are displayed. If a group\n"
"	argument is specified, only groups containing the group are displayed.\n"
"\n"
"	The third form is useful when there are groups and users with the\n"
"	same name, or when requesting all groups owned by a certain user.\n"
"\n"
"	The -i flag also displays groups that the user or group belongs to\n"
"	indirectly by means of membership in subgroups.\n"
"\n"
"	The -m max flag limits output to the specified number of groups.\n"
"\n"
"	The -v flag displays the MaxResults, MaxScanRows, MaxLockTime, and\n"
"	Timeout values for each group that is displayed.\n"
"\n"
"	The -g flag indicates that the 'name' argument is a group.\n"
"\n"
"	The -u flag indicates that the 'name' argument is a user.\n"
"\n"
"	The -o flag indicates that the 'name' argument is an owner.\n"
};

ErrorId MsgHelp::HelpHave = { ErrorOf( ES_HELP, 51, E_INFO, EV_NONE, 0  ), 
"\n"
"    have -- List the revisions most recently synced to the current workspace\n"
"\n"
"    p4 have [file ...]\n"
"\n"
"	List revision numbers of the currently-synced files. If file name is\n"
"	omitted, list all files synced to this client workspace.\n"
"\n"
"	The format is:  depot-file#revision - client-file\n"
};

ErrorId MsgHelp::HelpHelp = { ErrorOf( ES_HELP, 52, E_INFO, EV_NONE, 0  ), 
"\n"
"    help -- Print help message\n"
"\n"
"    p4 help [command ...]\n"
"\n"
"	Print usage details about the specified command.  If the command\n"
"	name is omitted, print a general help message about Perforce and\n"
"	list the available client commands.\n"
};

ErrorId MsgHelp::HelpIgnores = { ErrorOf( ES_HELP, 189, E_INFO, EV_NONE, 0 ),
"\n"
"    ignores -- List P4IGNORE mappings\n"
"\n"
"    p4 ignores [-v] [path ...]\n"
"    p4 ignores [-v] -i path ...\n"
"\n"
"	List the computed mappings from the rules found in P4IGNORE files\n"
"	at the specified path. The path(s) must be in local syntax. If no\n"
"	paths are specified, P4IGNORE rules from the current directory are\n"
"	reported.\n"
"\n"
"	The -v flag displays additional information about the origin of the\n"
"	mapping. This includes the original rule, which file that was loaded\n"
"	from and the line number in that file.\n"
"\n"
"	The -i flag allows you to test whether the path specified would be\n"
"	ignored by the rules in the P4IGNORE files. The target is listed if\n"
"	path matches one of the mappings. If the -v flag is also provided,\n"
"	the target will be reported with a message explaining if it will be\n"
"	ignored and if it matched a mapping, which P4IGNORE rule affected it.\n"
};

ErrorId MsgHelp::HelpIndex = { ErrorOf( ES_HELP, 96, E_INFO, EV_NONE, 0  ), 
"\n"
"    index -- Add words to the jobs index (unsupported)\n"
"\n"
"    p4 index [-a attrib] [-d] name\n"
"\n"
"	Index is an interface to the search engine used to search jobs.\n"
"	It reads its standard input for text, breaks the text into words,\n"
"	and adds those words to the search engine's index with the\n"
"	key 'name' and the optional attribute 'attrib'.  (Job fields\n"
"	are entered with the name of the job as the name and the field\n"
"	name as the attribute.)\n"
"\n"
"	If -a attrib is specified, that attribute number is used instead of 0.\n"
"\n"
"	The -d option deletes entries from the index.\n"
"\n"
"	See also 'p4 help search'.\n"
};

ErrorId MsgHelp::HelpInfo = { ErrorOf( ES_HELP, 53, E_INFO, EV_NONE, 0  ), 
"\n"
"    info -- Display client/server information\n"
"\n"
"    p4 info [-s]\n"
"\n"
"	Info lists information about the current client (user name,\n"
"	client name, applicable client root, client current directory,\n"
"	and the client IP address) and some server information (server\n"
"	IP address, server root, date, uptime, version and license data).\n"
"\n"
"	The -s option produces 'short' output that omits any information\n"
"	that requires a database lookup such as the client root).\n"
};

ErrorId MsgHelp::HelpInteg = { ErrorOf( ES_HELP, 54, E_INFO, EV_NONE, 0  ), 
"\n"
"    integrate -- Integrate one set of files into another\n"
"\n"
"    p4 integrate [options] fromFile[revRange] toFile\n"
"    p4 integrate [options] -b branch [-r] [toFile[revRange] ...]\n"
"    p4 integrate [options] -b branch -s fromFile[revRange] [toFile ...]\n"
"    p4 integrate [options] -S stream [-r] [-P parent] [file[revRange] ...]\n"
"\n"
"	options: -c changelist# -Di -f -h -O<flags> -n -m max -R<flags> -q\n"
"\n"
"	'p4 integrate' integrates one set of files (the 'source') into\n"
"	another (the 'target').\n"
"\n"
"	(See also 'p4 merge' and 'p4 copy', variants of 'p4 integrate' that\n"
"	may be easier and more effective for the task at hand.) \n"
"\n"
"	Using the client workspace as a staging area, 'p4 integrate' adds and\n"
"	deletes target files per changes in the source, and schedules all\n"
"	other affected target files to be resolved.  Target files outside of\n"
"	the current client view are not affected. Source files need not be\n"
"	within the client view.\n"
"\n"
"	'p4 resolve' must be used to merge file content, and to resolve\n"
"	filename and filetype changes. 'p4 submit' commits integrated files\n"
"	to the depot.  Unresolved files may not be submitted.  Integrations\n"
"	can be shelved with 'p4 shelve' and abandoned with 'p4 revert'.  The\n"
"	commands 'p4 integrated' and 'p4 filelog' display integration history.\n"
"\n"
"	When 'p4 integrate' schedules a workspace file to be resolved, it\n"
"	leaves it read-only. 'p4 resolve' can operate on a read-only file.\n"
"	For other pre-submit changes, 'p4 edit' must be used to make the\n"
"	file writable.\n"
"\n"
"	Source and target files can be specified either on the 'p4 integrate'\n"
"	command line or through a branch view. On the command line, fromFile\n"
"	is the source file set and toFile is the target file set.  With a\n"
"	branch view, one or more toFile arguments can be given to limit the\n"
"	scope of the target file set.\n"
"\n"
"	revRange is a revision or a revision range that limits the span of\n"
"	source history to be probed for unintegrated revisions.  revRange\n"
"	can be used on fromFile, or on toFile, but not on both.  When used on\n"
"	toFile, it refers to source revisions, not to target revisions.  For\n"
"	details about revision specifiers, see 'p4 help revisions'.\n"
"\n"
"	The -S flag makes 'p4 integrate' use a generated branch view that maps\n"
"	a stream (or its underlying real stream) to its parent.  With -r, the\n"
"	direction of the mapping is reversed.  -P can be used to generate the\n" 
"	branch view using a parent stream other than the stream's actual\n"
"	parent.  Note that to submit integrated stream files, the current\n"
"	client must be switched to the target stream, or to a virtual child\n"
"	stream of the target stream.\n"
"\n"
"	The -b flag makes 'p4 integrate' use a user-defined branch view.\n"
"	(See 'p4 help branch'.) The source is the left side of the branch view\n"
"	and the target is the right side. With -r, the direction is reversed.\n"
"\n"
"	The -s flag can be used with -b to cause fromFile to be treated as\n"
"	the source, and both sides of the branch view to be treated as the\n"
"	target, per the branch view mapping.  Optional toFile arguments may\n"
"	be given to further restrict the scope of the target file set.  The\n"
"	-r flag is ignored when -s is used.\n"
"\n"
"	Note that 'p4 integrate' automatically adusts source-to-target\n"
"	mappings for moved and renamed files.  (Adjustment occurs only if\n"
"	the 'p4 move' command was used to move/rename files.) The scope of\n"
"	source and target file sets must include both the old-named and the\n"
"	new-named files for mappings to be adjusted.  A filename resolve is\n"
"	scheduled for each remapped file to allow the target to be moved to\n"
"	match the source.\n"
"\n"
"	The -f flag forces integrate to ignore integration history and treat\n"
"	all source revisions as unintegrated. It is meant to be used with\n"
"	revRange to force reintegration of specific, previously integrated\n"
"	revisions. \n"
"\n"
"	The -O flags cause more information to be output for each file opened:\n"
"\n"
"		-Ob	Show the base revision for the merge (if any).\n"
"		-Or	Show the resolve(s) that are being scheduled.\n"
"\n"
"	The -R flags modify the way resolves are scheduled:\n"
"\n"
"		-Rb	Schedules 'branch resolves' instead of branching new\n"
"			target files automatically.\n"
"\n"
"		-Rd	Schedules 'delete resolves' instead of deleting\n"
"			target files automatically.\n"
"\n"
"		-Rs	Skips cherry-picked revisions already integrated.\n"
"			This can improve merge results, but can also cause\n"
"			multiple resolves per file to be scheduled.\n"
"\n"
"	The -Di flag modifies the way deleted revisions are treated.  If the\n"
"	source file has been deleted and re-added, revisions that precede\n"
"	the deletion will be considered to be part of the same source file.\n"
"	By default, re-added files are considered to be unrelated to the\n"
"	files of the same name that preceded them.\n"
"\n"
"	The -h flag leaves the target files at the revision currently synced\n"
"	to the client (the '#have' revision). By default, target files are\n"
"	automatically synced to the head revision by 'p4 integrate'.\n"
"\n"
"	The -m flag limits integration to the first 'max' number of files.\n"
"\n"
"	The -n flag displays a preview of integration, without actually\n"
"	doing anything.\n"
"\n"
"	The -q flag suppresses normal output messages. Messages regarding\n"
"	errors or exceptional conditions are displayed.\n"
"\n"
"	If -c changelist# is specified, the files are opened in the\n"
"	designated numbered pending changelist instead of the 'default'\n"
"	changelist.\n"
"\n"
"	Integration is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment. Depending on the\n"
"	integration action, target, and source, either the integration or\n"
"	resolve command will fail.\n"
};

ErrorId MsgHelp::HelpInteg3 = { ErrorOf( ES_HELP, 160, E_INFO, EV_NONE, 0  ),
"\n"
"	See 'p4 help integrate'.\n"
"\n"
};


ErrorId MsgHelp::HelpInteged = { ErrorOf( ES_HELP, 55, E_INFO, EV_NONE, 0  ), 
"\n"
"    integrated -- List integrations that have been submitted\n"
"\n"
"    p4 integrated [-r] [-b branch] [file ...]\n"
"\n"
"	The p4 integrated command lists integrations that have been submitted.\n"
"	To list unresolved integrations, use 'p4 resolve -n'.  To list\n"
"	resolved but unsubmitted integrations, use 'p4 resolved'.\n"
"\n"
"	If the -b branch flag is specified, only files integrated from the\n"
"	source to target files in the branch view are listed.  Qualified\n"
"	files are listed, even if they were integrated without using the\n"
"	branch view.\n"
"\n"
"	The -r flag reverses the mappings in the branch view, swapping the\n"
"	target files and source files.  The -b branch flag is required.\n"
};

ErrorId MsgHelp::HelpIstat = { ErrorOf( ES_HELP, 131, E_INFO, EV_NONE, 0  ), 
"\n"
"    istat -- Show/cache a stream's integration status\n"
"\n"
"    p4 istat [ -a -c -r -s ] stream\n"
"\n"
"	'p4 istat' shows a stream's cached integration status with respect\n"
"	to its parent. If the cache is stale, either because newer changes\n"
"	have been submitted or the stream's branch view has changed, 'p4 \n"
"	istat' checks for pending integrations and updates the cache before\n"
"	showing status. \n"
"\n"
"	Pending integrations are shown only if they are expected by the\n"
"	stream; that is, only if they are warranted by the stream's type\n"
"	and its fromParent/toParent flow options. (See 'p4 help stream'.)\n"
"\n"
"	The -r flag shows the status of integration to the stream from its\n"
"	parent. By default, status of integration in the other direction is\n"
"	shown, from the stream to its parent.\n"
"\n"
"	The -a flag shows status of integration in both directions.\n"
"\n"
"	The -c flag forces 'p4 istat' to assume the cache is stale; it\n"
"	causes a search for pending integrations.  Use of this flag can\n"
"	impact server performance.\n"
"\n"
"	The -s flag shows cached state without refreshing stale data.\n"
};

ErrorId MsgHelp::HelpJob = { ErrorOf( ES_HELP, 56, E_INFO, EV_NONE, 0  ), 
"\n"
"    job -- Create or edit a job (defect) specification\n"
"\n"
"    p4 job [-f] [jobName]\n"
"    p4 job -d jobName\n"
"    p4 job -o [jobName]\n"
"    p4 job -i [-f]\n"
"\n"
"	The 'p4 job' command creates and edits job specifications using an\n"
"	ASCII form. A job is a defect, enhancement, or other unit of\n"
"	intended work.The 'p4 fix' command associates changelists with jobs.\n"
"\n"
"	With no arguments, 'p4 job' creates an empty job specification\n"
"	and invokes the user's editor.  When the specification is saved,\n"
"	a job name of the form jobNNNNNN is assigned.  If the jobName\n"
"	parameter is specified on the command line, the job is created or\n"
"	opened for editing.\n"
"\n"
"	As jobs are entered or updated, all fields are indexed for searching\n"
"	Text fields are broken into individual alphanumeric words (punctuation\n"
"	and whitespace are ignored) and each word is case-folded and entered\n"
"	into the word index.  Date fields are converted to an internal\n"
"	representation (seconds since 1970/01/01 00:00:00) and entered\n"
"	into the date index.\n"
"\n"
"	The fields that compose a job are defined by the 'p4 jobspec' command.\n"
"	Perforce provides a default job specification that you can edit.\n"
"\n"
"	The -d flag deletes the specified job. You cannot delete a job if\n"
"	it has pending or submitted fixes associated with it.\n"
"\n"
"	The -o flag writes the job specification to the standard output.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -i flag reads a job specification from the standard input. The\n"
"	user's editor is not invoked.\n"
"\n"
"	The -f flag enables you set fields that are read-only by default.\n"
"	The -f flag requires 'admin' access, which is granted using the\n"
"	'p4 protect' command.\n"
};

ErrorId MsgHelp::HelpKey = { ErrorOf( ES_HELP, 157, E_INFO, EV_NONE, 0  ), 
"\n"
"     key -- Display, set, or delete a key/value pair\n"
"\n"
"     p4 key name\n"
"     p4 key [-v] name value\n"
"     p4 key [-d] name\n"
"     p4 key [-i -v] name\n"
"     p4 key [-m] [ pair list ]\n"
"     p4 key --from=oldValue --to=newValue name\n"
"\n"
"	The first form displays the value of the specified key.\n"
"\n"
"	The second form sets the key to the specified value.\n"
"\n"
"	The third form deletes the key.\n"
"\n"
"	The -i flag increments a keys value by 1 and returns the new value.\n"
"	This option is used instead of a value argument and can only be\n"
"	used with numeric key values.\n"
"\n"
"	The -v flag displays the previous value of the specified key\n"
"	after the key has been set or incremented.\n"
"\n"
"	The fifth form allows multiple operations in one command.\n"
"	With this, the list is pairs of arguments.  Each pair is either\n"
"	key value or '-' key.  To set a key use a key and value.\n"
"	To delete a key use a '-' followed by the key.\n"
"\n"
"	The sixth form sets a key to the newValue only if the current\n"
"	value of the key is oldValue. Note that a key that has never\n"
"	been set (or has been deleted) cannot be set using this form.\n"
"\n"
"	'p4 key' requires 'review' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpKeys = { ErrorOf( ES_HELP, 158, E_INFO, EV_NONE, 0  ), 
"\n"
"    keys -- Display list of known key/values\n"
"\n"
"    p4 keys [-e nameFilter -m max]\n"
"\n"
"	The -e nameFilter flag lists keys with a name that matches\n"
"	the nameFilter pattern, for example: -e 'mykey-*'.\n"
"\n"
"	The -m max flag limits the output to the first 'max' keys.\n"
};

ErrorId MsgHelp::HelpInterchanges = { ErrorOf( ES_HELP, 97, E_INFO, EV_NONE, 0  ), 
"\n"
"    interchanges -- Report changes not yet integrated\n"
"\n"
"    p4 interchanges [options] fromFile[revRange] toFile\n"
"    p4 interchanges [options] -b branch [toFile[revRange] ...]\n"
"    p4 interchanges [options] -b branch -s fromFile[revRange] [toFile ...]\n"
"    p4 interchanges [options] -S stream [-P parent] [file[revRange] ...]\n"
"\n"
"	options: -f -l -r -t -u -F\n"
"\n"
"	'p4 interchanges' lists changes that have not been integrated from \n"
"	a set of source files to a set of target files.\n"
"\n"
"	The -f option lists the individual files that require integration.\n"
"	For partially integrated changelists, files might be listed even if\n"
"	they have been integrated individually.\n"
"\n"
"	The -l flag includes the full text of the changelist descriptions.\n"
"\n"
"	The -t flag displays the time as well as the date.\n"
"\n"
"	The -b flag makes 'p4 interchanges' use a user-defined branch view.\n"
"	(See 'p4 help branch'.) The source is the left side of the branch\n"
"	view and the target is the right side.  Used with the -r flag, the\n"
"	direction is reversed.\n"
"\n"
"	The -s flag can be used with -b to cause fromFile to be treated as\n"
"	the source, and both sides of the branch view to be treated as the\n"
"	target, per the branch view mapping.  Optional toFile arguments may\n"
"	be given to further restrict the scope of the target file set.  The\n"
"	-r flag is ignored when -s is used.\n"
"\n"
"	The -u flag limits results to those submitted by a particular user.\n"
"\n"
"	The -S flag causes 'p4 interchanges' to use a generated branch view\n"
"	that maps a stream to its parent.  With -r, the direction of the\n"
"	mapping is reversed.  -P can be used to generate the branch view\n" 
"	using a parent stream other than the stream's actual parent.  The -S\n"
"	flag also makes 'p4 interchanges' respect a stream's flow.\n"
"\n"
"	The -F flag can be used with -S to force 'p4 interchanges' to ignore\n"
"	a stream's expected flow.  It can also force it to generate a branch\n"
"	view based on a virtual stream; the mapping itself refers to the\n"
"	underlying real stream.\n"
"\n"
};

ErrorId MsgHelp::HelpJobs = { ErrorOf( ES_HELP, 57, E_INFO, EV_NONE, 0  ), 
"\n"
"    jobs -- Display list of jobs\n"
"\n"
"    p4 jobs [-e jobview -i -l -m max -r] [file[revRange] ...]\n"
"    p4 jobs -R\n"
"\n"
"	Lists jobs in the server. If a file specification is included, fixes\n"
"	for submitted changelists affecting the specified files are listed.\n"
"	The file specification can include wildcards and a revision range.\n"
"	 See 'p4 help revisions' for details about specifying revisions.\n"
"\n"
"	The -e flag lists jobs matching the expression specified in the\n"
"	jobview parameter. For a description of jobview syntax, see 'p4 help\n"
"	jobview'.\n"
"\n"
"	The -i flag includes any fixes made by changelists integrated into\n"
"	the specified files.\n"
"\n"
"	The -l flag produces long output with the full text of the job\n"
"	descriptions.\n"
"\n"
"	The -m max flag limits the output to the first 'max' jobs, ordered\n"
"	by their job name.\n"
"\n"
"	The -r flag sorts the jobs in reverse order (by job name).\n"
"\n"
"	The -R flag rebuilds the jobs table and reindexes each job, which\n"
"	is necessary after upgrading to 98.2.  'p4 jobs -R' requires that the\n"
"	user be an operator or have 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpJobSpec = { ErrorOf( ES_HELP, 58, E_INFO, EV_NONE, 0  ), 
"\n"
"    jobspec -- Edit the job template\n"
"\n"
"    p4 jobspec\n"
"    p4 jobspec -o\n"
"    p4 jobspec -i\n"
"\n"
"	Jobspec edits the template that specifies the format of jobs.\n"
"	This format is used by 'p4 job' when jobs are entered or updated,\n"
"	and by 'p4 jobs' and 'p4 describe' when jobs are displayed.\n"
"\n"
"	Jobspec brings up a form with the following fields:\n"
"\n"
"	   Fields:  A list of the fields maintained for each job, one\n"
"		    line per field.  Each line has five words: code, name,\n"
"		    data-type, len, and field-type.\n"
"\n"
"		    'code' is a unique integer identifier for storing\n"
"			the data of the field.  Job codes must be between\n"
"			101 and 199.\n"
"\n"
"		    'name' is the name of the field for the job.\n"
"\n"
"		    'data-type' indicates the format of the field:\n"
"\n"
"			word: a single word (any value)\n"
"			date: a date/time field\n"
"			select: one of a set of words\n"
"			line: a one-liner\n"
"			text: a block of text\n"
"			bulk: text not indexed for 'p4 jobs -e'\n"
"\n"
"		    'len' is the recommended character length of a\n"
"			display box for the field.  If 0, a text box is\n"
"			assumed.\n"
"\n"
"		    'field-type' indicates how to handle the setting of\n"
"			the field:\n"
"\n"
"			optional: no default, and not required to be present\n"
"			default: default provided, still not required\n"
"			required: default provided, value must be present\n"
"			once: set once to the default and never changed\n"
"			always: always set to the default when saving the\n"
"				form, adding or deleting fixes with 'p4 fix'\n"
"				or 'p4 changelist', or submitting a change\n"
"				associated with the job with 'p4 submit'.\n"
"\n"
"	   Values:  A list of 'select' fields and the values that the fields\n"
"		    can have.  Each line has two words: the field name and\n"
"		    the values list, with individual values separated by\n"
"		    '/' (no spaces).\n"
"\n"
"	   Presets: A list of fields and their default values, for fields\n"
"		    whose 'setting' flag is other than 'optional'.  Each\n"
"		    line has two words: the field name and the default\n"
"		    value.  If the value has spaces, it must be enclosed\n"
"		    in double quotes.  The following special defaults are\n"
"		    recognized:\n"
"\n"
"			$user: the user entering the job\n"
"			$now: the current date\n"
"			$blank: the words '<enter description here>'\n"
"\n"
"		    The Preset for the job status field (code 102) has\n"
"		    a special syntax for providing a default fix status\n"
"		    for 'p4 fix' and 'p4 change' along with the default\n"
"		    status for new jobs:\n"
"\n"
"		    	jobStatus,fix/fixStatus\n"
"\n"
"		    Otherwise the fixStatus is hardwired to 'closed'.\n"
"\n"
"	   Comments: text to be included at the top of each job specification,\n"
"		    to help the user fill out the form. Each line must begin\n"
"		    with the comment character '#'.\n"
"\n"
"	The following field codes are reserved:\n"
"\n"
"	    code 101, required: the job name\n"
"	    code 102, optional: the job status\n"
"	    code 103, optional: the user who created the job\n"
"	    code 104, optional: the date the job was created\n"
"	    code 105, optional: the description\n"
"\n"
"	    If there is a job status field (102), 'p4 fix' and 'p4 change'\n"
"	    (of a submitted changelist) and 'p4 submit' (of a pending\n"
"	    changelist) will set the job's status to the fix's status for\n"
"	    each job associated with the change.  If the fix's status is\n"
"	    the special value 'same', the job's status is left unchanged.\n"
"\n"
"	    Fields 102-105 are used by 'p4 describe' and 'p4 jobs' to display\n"
"	    a job summary.  Missing fields are omitted from the summary.\n"
"\n"
"	    If field 105 is present, it is treated as a description,\n"
"	    which is used by 'p4 change' and 'p4 submit' to annotate the\n"
"	    list of jobs to be fixed by the changelist being created.\n"
"\n"
"	If you change the jobspec after jobs have been created, note the\n"
"	following limitations:\n"
"\n"
"	    Data is stored according to its code.  Fields can be renamed\n"
"	    by keeping the same code. Removing a code can cause the\n"
"	    associated data stored for the code to become abandoned.\n"
"\n"
"	    Changing the definition of a code (for example, from 'text' to\n"
"	    'word') can require users to correct jobs for the new format\n"
"	    during editing.\n"
"\n"
"	The -o flag writes the job template to the standard output.  The\n"
"	user's editor is not invoked.\n"
"\n"
"	The -i flag reads a job template from the standard input.  The\n"
"	user's editor is not invoked.\n"
"\n"
"	'p4 jobspec' requires 'admin' access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLabel = { ErrorOf( ES_HELP, 59, E_INFO, EV_NONE, 0  ), 
"\n"
"    label -- Create or edit a label specification\n"
"\n"
"    p4 label [-f -g -t template] name\n"
"    p4 label -d [-f -g] name\n"
"    p4 label -o [-t template] name\n"
"    p4 label -i [-f -g]\n"
"\n"
"	Create or edit a label. The name parameter is required. The\n"
"	specification form is put into a temporary file and the editor\n"
"	(configured by the environment variable $P4EDITOR) is invoked.\n"
"\n"
"	The label specification form contains the following fields:\n"
"\n"
"	Label:       The label name (read only.)\n"
"\n"
"	Owner:       The user who created this label.  A label can be owned\n"
"	             by a user, or owned by a group.  Can be changed.\n"
"\n"
"	Update:      The date that this specification was last modified.\n"
"\n"
"	Access:      The date of the last 'labelsync' or use of '@label'\n"
"		     referencing this label.\n"
"\n"
"	Description: A short description of the label (optional).\n"
"\n"
"	Options:     Flags to change the label behavior.\n"
"\n"
"	             locked       Prevents users other than the label owner\n"
"	             unlocked     from changing the specification. Prevents\n"
"	                          the label from being deleted. Prevents the\n"
"	                          owner from running 'p4 labelsync'. For a\n"
"	                          loaded label, prevents 'p4 unload'.\n"
"\n"
"	             autoreload   For a static label, indicates where label\n"
"	             noautoreload revisions are stored. Specify 'noautoreload'\n"
"	                          to indicate that the revisions should be\n"
"	                          stored in the db.label table. Specify\n"
"	                          'autoreload' to indicate that the revisions\n"
"	                          should be stored in the unload depot.\n"
"\n"
"	Revision:    An optional revision specification for an automatic\n"
"		     label.  Enclose in double quotes if it contains the\n"
"		     # (form comment) character.  An automatic label can\n"
"		     be treated as a pure alias of a single revision\n"
"		     specification (excluding @label) provided that the\n"
"		     View mapping is empty.\n"
"\n"
"	View:        A mapping that selects files from the depot. The\n"
"		     default view selects all depot files. Only the left\n"
"		     side of the mapping is used for labels.  Leave this\n"
"		     field blank when creating an automatic label as\n"
"		     a pure alias. See 'p4 help views'.\n"
"\n"
"	ServerID:    If set, restricts usage to the named server.\n"
"		     If unset, usage is allowed on any server.\n"
"\n"
"	A label is a named collection of revisions.  A label is either\n"
"	automatic or static.  An automatic label refers to the revisions\n"
"	given in the View: and Revision: fields.  A static label refers to\n"
"	the revisions that are associated with the label using the 'p4 tag'\n"
"	or 'p4 labelsync' commands.  A static label cannot have a Revison:\n"
"	field. See 'p4 help revisions' for information on using labels as\n"
"	revision specifiers.  \n"
"\n"
"	Only the label owner can run 'p4 labelsync', and only if the label\n"
"	is unlocked. A label without an owner can be labelsync'd by any user.\n"
"\n"
"	Flag -d deletes the specified label. You cannot delete a locked label.\n"
"	The -f flag forces the delete.\n"
"\n"
"	The -o flag writes the label specification to standard output.  The\n"
"	user's editor is not invoked.\n"
"\n"
"	The -i flag reads a label specification from standard input.  The\n"
"	user's editor is not invoked.\n"
"\n"
"	The -t flag copies the view and options from the template label to\n"
"	the new label.\n"
"\n"
"	The -f flag forces the deletion of a label. By default, locked labels\n"
"	can only be deleted by their owner.  The -f flag also permits the\n"
"	Last Modified date to be set.  The -f flag requires 'admin' access,\n"
"	which is granted by 'p4 protect'.\n"
"\n"
"	The -g flag should be used on an Edge Server to update a global\n"
"	label. Without -g, the label definition is visible only to users\n"
"	of this Edge Server. Configuring rpl.labels.global=1 reverses this\n"
"	default and causes this flag to have the opposite meaning.\n"
};

ErrorId MsgHelp::HelpLabels = { ErrorOf( ES_HELP, 60, E_INFO, EV_NONE, 0  ), 
"\n"
"    labels -- Display list of defined labels\n"
"\n"
"    p4 labels [-t] [-u user] [[-e|-E] nameFilter -m max] [file[revrange]]\n"
"    p4 labels [-t] [-u user] [[-e|-E] nameFilter -m max] [-a|-s serverID]\n"
"    p4 labels -U\n"
"\n"
"	Lists labels defined in the server.\n"
"\n"
"	If files are specified, 'p4 labels' lists the labels that contain\n"
"	those files.  If you include a file specification, automatic labels\n"
"	and labels with the 'autoreload' option set are omitted from the list.\n"
"	If the file specification includes a revision range, 'p4 labels'\n"
"	lists labels that contain the specified revisions.\n"
"\n"
"	See 'p4 help revisions' for details about specifying revisions.\n"
"\n"
"	The -t flag displays the time as well as the date.\n"
"\n"	
"	The -u user flag lists labels owned by the specified user.\n"
"\n"
"	The -e nameFilter flag lists labels with a name that matches\n"
"	the nameFilter pattern, for example: -e 'svr-dev-rel*'. The -e flag\n"
"	uses the server's normal case-sensitivity rules. The -E flag makes\n"
"	the matching case-insensitive, even on a case-sensitive server.\n"
"\n"
"	The -m max flag limits output to the first 'max' number of labels.\n"
"\n"
"	The -U flag lists unloaded labels (see 'p4 help unload').\n"
"\n"
"	The -a and -s flags are useful in a distributed server installation\n"
"	(see 'p4 help distributed') in order to see the names of local labels\n"
"	stored on other Edge Servers. These flags are not allowed if the\n"
"	command includes a file specification.\n"
"\n"
"	The -a flag specifies that all labels should be displayed, not just\n"
"	those that are bound to this server.\n"
"\n"
"	The -s serverID flag specifies that only those labels bound to the\n"
"	specified serverID should be displayed.\n"
"\n"
"	On an Edge Server, if neither -s nor -a is specified, only those\n"
"	local labels bound to this Edge Server are displayed. Labels created\n"
"	on the Commit Server are global, and are also included in the output.\n"
};

ErrorId MsgHelp::HelpLabelsync = { ErrorOf( ES_HELP, 61, E_INFO, EV_NONE, 0  ), 
"\n"
"    labelsync -- Apply the label to the contents of the client workspace\n"
"\n"
"    p4 labelsync [-a -d -g -n -q] -l label [file[revRange] ...]\n"
"\n"
"	Labelsync causes the specified label to reflect the current contents\n"
"	of the client.  It records the revision of each file currently synced.\n"
"	The label's name can subsequently be used in a revision specification\n"
"	as @label to refer to the revision of a file as stored in the label.\n"
"\n"
"	Without a file argument, labelsync causes the label to reflect the\n"
"	contents of the whole client, by adding, deleting, and updating the\n"
"	label.  If a file is specified, labelsync updates the specified file.\n"
"\n"
"	If the file argument includes a revision specification, that revision\n"
"	is used instead of the revision synced by the client. If the specified\n"
"	revision is a deleted revision, the label includes that deleted\n"
"	revision.  See 'p4 help revisions' for details about specifying\n"
"	revisions.\n"
"\n"
"	If the file argument includes a revision range specification,\n"
"	only files selected by the revision range are updated, and the\n"
"	highest revision in the range is used.\n"
"\n"
"	The -a flag adds the specified file to the label.\n"
"\n"
"	The -d deletes the specified file from the label, regardless of\n"
"	revision.\n"
"\n"
"	The -n flag previews the operation without altering the label.\n"
"\n"
"	Only the owner of a label can run labelsync on that label. A label\n"
"	that has its Options: field set to 'locked' cannot be updated. A\n"
"	label without an owner can be labelsync'd by any user.\n"
"\n"
"	The -q flag suppresses normal output messages. Messages regarding\n"
"	errors or exceptional conditions are displayed.\n"
"\n"
"	The -g flag should be used on an Edge Server to update a global\n"
"	label. Note that in this case, the client should be a global client.\n"
"	Configuring rpl.labels.global=1 reverses this default and causes this\n"
"	flag to have the opposite meaning.\n"
};

ErrorId MsgHelp::HelpNetworkAddress = { ErrorOf( ES_HELP, 161, E_INFO, EV_NONE, 0  ), 
"\n"
"	When specifying the network address for a Perforce connection, use\n"
"	the following syntax:\n"
"\n"
"	    prefix:host:port\n"
"\n"
"	The prefix indicates whether this connection should be plaintext\n"
"	or encrypted, and whether address resolution should prefer IPv4 or\n"
"	IPv6 addresses. Specify one of the following prefix values:\n"
"\n"
"	    tcp,tcp4,tcp6,tcp46,tcp64,ssl,ssl4,ssl6,ssl46,ssl64\n"
"\n"
"	The default prefix value is 'tcp'.\n"
"\n"
"	The host portion of the address can be either a resolvable host name,\n"
"	or an IP address in either IPv4 or IPv6 format. Specify an IPv4\n"
"	address as NNN.NNN.NNN.NNN. Specify an IPv6 address in the format\n"
"	described by RFC 2373 and RFC 2372: [x:x:x:x:x:x:x:x]; note that the\n"
"	use of the brackets around the address removes the ambiguity about\n"
"	where the prefix and port portions of the Perforce network address\n"
"	begin and end.\n"
"\n"
"	The default host name is 'perforce'.\n"
"\n"
"	The port number should be an integer between 1 and 65535. Note that\n"
"	your operating system may enforce a smaller range of values, and may\n"
"	require special permission for certain values (i.e., values less than\n"
"	1025 may require root permission on Unix)\n"
"\n"
"	The default port number is 1666.\n"
"\n"
};

ErrorId MsgHelp::HelpLdap = { ErrorOf( ES_HELP, 172, E_INFO, EV_NONE, 0 ),
"\n"
"    ldap -- Create, modify, delete or test an LDAP configuration\n"
"\n"
"    p4 ldap config\n"
"    p4 ldap -d config\n"
"    p4 ldap -o config\n"
"    p4 ldap -i\n"
"    p4 ldap -t username config\n"
"\n"
"	An LDAP configuration defines an Active Directory or other LDAP server\n"
"	to which the Perforce Server can connect in order to authenticate\n"
"	users who have AuthMethod set to 'ldap'. In addition to the host and\n"
"	port of the LDAP server, this configuration defines how the\n"
"	authenticationshould happen, by picking one of three bind methods:\n"
"\n"
"	Simple:\n"
"	This authentication method takes a template DN and substitutes %%user%%\n"
"	placeholders with the user's userId to produce the user's DN which the\n"
"	Perforce Server will then attempt to bind against, validating the\n"
"	user's password. An example of such a template could look like this:\n"
"\n"
"	    uid=%%user%%,ou=users,dc=example,dc=org\n"
"\n"
"	Search:\n"
"	This authentication method uses an LDAP search query to locate the\n"
"	appropriate user record. It requires a known base DN for the search\n"
"	and an LDAP search query (which should make use of the %%user%%\n"
"	placeholder). It may also require the full DN and password of a known\n"
"	read-only entity in the directory in order to perform the search.\n"
"	An example base DN and LDAP query might look like this:\n"
"\n"
"	    Base DN: ou=users,dc=example,dc=org\n"
"	    LDAP query: (uid=%%user%%)\n"
"\n"
"	SASL:\n"
"	This authentication method defers the user search to the LDAP server\n"
"	and does not require a DN to be discovered before a bind is attempted.\n"
"	A specific realm may be provided if the LDAP server has multiple\n"
"	realms (or domains in the case of Active Directory). Additionally, if\n"
"	'realminusername' option is enabled, the realm will be separated from\n"
"	the useranme if that username is in either UNC (realm\\user) or\n"
"	UPN (user@realm) formats.\n"
"\n"
"	SASL is generally the easiest method to configure if the LDAP server\n"
"	supports SASL DIGEST-MD5.\n"
"\n"
"\n"
"	To enable LDAP authentication, one or more LDAP configurations must\n"
"	exist and be assigned a priority with the 'auth.ldap.order.N'\n"
"	configurable. The server will need to be restarted before LDAP\n"
"	authentication will be enabled. Note: LDAP authentication implies at\n"
"	least security level 3; all must use ticket based authentication (see\n"
"	'p4 login') and any users authenticating against the Perforce database\n"
"	must have strong passwords.\n"
"\n"
"	If more than one 'auth.ldap.order.N' configurable is set to a valid\n"
"	configuration, each one is considered enabled and a login by a user\n"
"	with AuthMethod set to ldap will cause each enabled configuration\n"
"	to be checked in order until the user's credentials are validated or\n"
"	the user record is found but the credentials are rejected.\n"
"\n"
"	When LDAP authentication is enabled and the 'auth.default.method'\n"
"	configurable is set to 'ldap' and the 'auth.ldap.userautocreate'\n"
"	configureable is set to 1, any user who is able to authenticate will be\n"
"	created and will consume a license, regardless of whether they are\n"
"	granted access by 'p4 protect'. If the 'getattrs' option is enabled,\n"
"	the new user's Fullname and Email fields will be populated from the\n"
"	user's record in the directory using the values in the LDAP attributes\n"
"	specified in the 'AttributeName' and 'AttributeEmail' fields. If the\n"
"	'BindMethod' is 'SASL', this feature also requires the 'SearchBaseDN'\n"
"	and 'SearchFilter' fields to be configured.\n"
"\n"
"	In addition to the bind methods, user access can be restricted only to\n"
"	those who belong to a particular group within the directory. This is\n"
"	achieved by performing an LDAP search as the user who has just been\n"
"	authenticated, and checking that there is at least one record returned\n"
"	from that search. This search requires a base DN and a LDAP query that\n"
"	contains the %%user%% placeholder. An example base DN and LDAP query to\n"
"	check that the user is in a group named 'perforce' might look like:\n"
"\n"
"	    Base DN: ou=groups,dc=example,dc=org\n"
"	    LDAP query: (&(cn=perforce)(memberUid=%%user%%))\n"
"\n"
"\n"
"	The LDAP configuration spec contains the following fields:\n"
"\n"
"	Name:          The LDAP configuration name.\n"
"\n"
"	Host:          The FQDN of the directory server.\n"
"\n"
"	Port:          The port number at which to connect to the directory\n"
"	               server.\n"
"\n"
"	Encryption:    The encryption method to use when connecting to the\n"
"	               directory server. Options are: 'none', 'ssl' and 'tls'.\n"
"\n"
"	BindMethod:    The bind method to use with this directory. Options\n"
"	               are: 'simple', 'search' and 'sasl'.\n"
"\n"
"	Options:       Modifiers to the behavior of the LDAP integration,\n"
"	               specific to this configuration. Options are:\n"
"	                   [no]downcase - should 'p4 ldapsync' downcase\n"
"	                                  usernames from the directory.\n"
"	                   [no]getattrs - should the Fullname and Email fields\n"
"	                                  for users created by 'p4 login'\n"
"	                                  be populated from the directory.\n"
"	                   [no]realminusername - take the realm from the SASL\n"
"	                                         username if it is in UNC or\n"
"	                                         UPN format.\n"
"\n"
"	SimplePattern: This is the DN which will be used to bind against to\n"
"	               validate the user's credentials. The %%user%% placeholder\n"
"	               will be replaced with the user's userId. This field\n"
"	               only applies to the 'simple' bind method.\n"
"\n"
"	SearchBaseDN:  The DN from which to start the search for the user object.\n"
"\n"
"	SearchFilter:  The LDAP query filter to use to identify the user object\n"
"	               which will be used to bind against. The %%user%%\n"
"	               placeholder will be replaced with the user's userId.\n"
"\n"
"	SearchScope:   The scope to use when searching for the user records.\n"
"	               Options are:\n"
"	                   baseonly - Just the BaseDN object\n"
"	                   children - The BaseDN and its direct children\n"
"	                   subtree - The BaseDN and all objects below it\n"
"\n"
"	SearchBindDN:  The DN to bind against in order to search the directory.\n"
"\n"
"	SearchPasswd:  The password for the BindDN record.\n"
"\n"
"	SaslRealm:     The optional realm to use when authenticating the user\n"
"	               via SASL.This field applies only to the 'sasl' bind\n"
"	               method.\n"
"\n"
"	GroupSearchFilter: The filter to use for the group search.\n"
"\n"
"	GroupBaseDN:       The search base for performing the group search. If\n"
"	                   unset this will default to the SearchBaseDN.\n"
"\n"
"	GroupSearchScope:  The scope to use when performing the group search.\n"
"	                   Options are:\n"
"	                       baseonly - Just the BaseDN object\n"
"	                       children - The BaseDN and its direct children\n"
"	                       subtree - The BaseDN and all objects below it\n"
"\n"
"	AttributeUid:      The name of the attribute in the user object that\n"
"	                   contains the user's UID.\n"
"\n"
"	AttributeName:     The name(s) of the attribute(s) in the user object\n"
"	                   that contains the user's full name. If multiple\n"
"	                   attributes are required to form the full name,\n"
"	                   specifiy each one surrounded by %% symbols such\n"
"	                   that expanding them forms the user's full name."
"\n"
"	AttributeEmail:    The name of the attribute in the directory's user\n"
"	                   object that contain the users' email addresses.\n"
"\n"
"\n"
"	The GroupSearchFilter field is only needed if users must also belong\n"
"	to a group within the directory. The other two group fields may also\n"
"	be used by the 'p4 ldapsync' command.\n"
"\n"
"\n"
"	The -d flag deletes the named LDAP configuration.\n"
"\n"
"	The -o flag writes the LDAP configuration to standard output. The\n"
"	user's editor is not invoked.\n"
"\n"
"	The -i flag causes a LDAP configuration to be read from the standard\n"
"	input. The user's editor is not invoked.\n"
"\n"
"	The -t flag specifies a username to attempt authentication against\n"
"	the named LDAP configuration. This will return a success message or an\n"
"	error message that will contain more detailed information when\n"
"	available.\n"
"\n"
"	'p4 ldap' requires 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLdaps = { ErrorOf( ES_HELP, 173, E_INFO, EV_NONE, 0  ), 
"\n"
"    ldaps -- Display list of LDAP configurations\n"
"\n"
"    p4 ldaps [-A]\n"
"    p4 ldaps -t username\n"
"\n"
"	Lists LDAP configurations. (See 'p4 help ldap'.)\n"
"\n"
"	The -A flag limits the results to a priority ordered list of\n"
"	active configurations.\n"
"\n"
"	The -t flag specifies a username to attempt authentication against\n"
"	each active configuration (all active configurations will be tested).\n"
"\n"
"	'p4 ldaps' requires 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLdapSync = { ErrorOf( ES_HELP, 187, E_INFO, EV_NONE, 0  ), 
"\n"
"    ldapsync -- Synchronizes Perforce group memberships LDAP groups\n"
"\n"
"    p4 ldapsync -g [ -n ] [ -i <N> ] [ group ... ]\n"
"\n"
"	Updates the users lists in Perforce groups to match the lists of members\n"
"	in LDAP groups when the -g flag is specified. If one or more group\n"
"	names are provided, only those groups are updated; if no group names\n"
"	are provided, then all groups with LDAP configurations will be updated.\n"
"\n"
"	To keep groups with LDAP configurations in sync with their LDAP\n"
"	counterparts, ldapsync can be set as a startup command, and will run\n"
"	in the background.\n"
"\n"
"	The -n flag previews the operations without altering the groups.\n"
"\n"
"	The -i flag causes the command to automatically repeat its action\n"
"	every N seconds. If -i is not specified, the command runs once,\n"
"	then exits.\n"
"\n"
"	'p4 ldapsync' requires 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLegal = { ErrorOf( ES_HELP, 151, E_INFO, EV_NONE, 0  ), 
"\n"
"    For Perforce legal and license information see:\n"
"	http://www.perforce.com/purchase/license-agreements\n"
"\n"
"    OpenSSL:\n"
"	This product includes cryptographic software written by Eric Young\n"
"	(eay@cryptsoft.com).\n"
"	This product includes software written by Tim Hudson (tjh@cryptsoft.com).\n"
"\n"
"    OpenSSL License\n"    
"    ---------------\n"    
"    \n"    
"    /* ====================================================================\n"    
"     * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.\n"    
"     *\n"    
"     * Redistribution and use in source and binary forms, with or without\n"    
"     * modification, are permitted provided that the following conditions\n"    
"     * are met:\n"    
"     *\n"    
"     * 1. Redistributions of source code must retain the above copyright\n"    
"     *    notice, this list of conditions and the following disclaimer.\n"    
"     *\n"    
"     * 2. Redistributions in binary form must reproduce the above copyright\n"    
"     *    notice, this list of conditions and the following disclaimer in\n"    
"     *    the documentation and/or other materials provided with the\n"    
"     *    distribution.\n"    
"     *\n"    
"     * 3. All advertising materials mentioning features or use of this\n"    
"     *    software must display the following acknowledgment:\n"    
"     *    \"This product includes software developed by the OpenSSL Project\n"    
"     *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)\"    \n"    
"     *\n"    
"     * 4. The names \"OpenSSL Toolkit\" and \"OpenSSL Project\" must not be used to\n"    
"     *    endorse or promote products derived from this software without\n"    
"     *    prior written permission. For written permission, please contact\n"    
"     *    openssl-core@openssl.org.\n"    
"     *\n"    
"     * 5. Products derived from this software may not be called \"OpenSSL\"\n"    
"     *    nor may \"OpenSSL\" appear in their names without prior written\n"    
"     *    permission of the OpenSSL Project.\n"    
"     *\n"    
"     * 6. Redistributions of any form whatsoever must retain the following\n"    
"     *    acknowledgment:\n"    
"     *    \"This product includes software developed by the OpenSSL Project\n"    
"     *    for use in the OpenSSL Toolkit (http://www.openssl.org/)\"\n"    
"     *\n"    
"     * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY\n"    
"     * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n"    
"     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n"    
"     * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR\n"    
"     * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n"    
"     * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n"    
"     * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n"    
"     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n"    
"     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n"    
"     * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n"    
"     * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n"    
"     * OF THE POSSIBILITY OF SUCH DAMAGE.\n"    
"     * ====================================================================\n"    
"     *\n"    
"     * This product includes cryptographic software written by Eric Young\n"    
"     * (eay@cryptsoft.com).  This product includes software written by Tim\n"    
"     * Hudson (tjh@cryptsoft.com).\n"    
"     *\n"    
"     */\n"    
"    \n"    
"    Original SSLeay License\n"    
"    -----------------------\n"    
"    \n"    
"    /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)\n"    
"     * All rights reserved.\n"    
"     *\n"    
"     * This package is an SSL implementation written\n"    
"     * by Eric Young (eay@cryptsoft.com).\n"    
"     * The implementation was written so as to conform with Netscapes SSL.\n"    
"     *\n"    
"     * This library is free for commercial and non-commercial use as long as\n"    
"     * the following conditions are adhered to.  The following conditions\n"    
"     * apply to all code found in this distribution, be it the RC4, RSA,\n"    
"     * lhash, DES, etc., code; not just the SSL code.  The SSL documentation\n"    
"     * included with this distribution is covered by the same copyright terms\n"    
"     * except that the holder is Tim Hudson (tjh@cryptsoft.com).\n"    
"     *\n"    
"     * Copyright remains Eric Young's, and as such any Copyright notices in\n"    
"     * the code are not to be removed.\n"    
"     * If this package is used in a product, Eric Young should be given attribution\n"    
"     * as the author of the parts of the library used.\n"    
"     * This can be in the form of a textual message at program startup or\n"    
"     * in documentation (online or textual) provided with the package.\n"    
"     *\n"    
"     * Redistribution and use in source and binary forms, with or without\n"    
"     * modification, are permitted provided that the following conditions\n"    
"     * are met:\n"    
"     * 1. Redistributions of source code must retain the copyright\n"    
"     *    notice, this list of conditions and the following disclaimer.\n"    
"     * 2. Redistributions in binary form must reproduce the above copyright\n"    
"     *    notice, this list of conditions and the following disclaimer in the\n"    
"     *    documentation and/or other materials provided with the distribution.\n"    
"     * 3. All advertising materials mentioning features or use of this software\n"    
"     *    must display the following acknowledgement:\n"    
"     *    \"This product includes cryptographic software written by\n"    
"     *     Eric Young (eay@cryptsoft.com)\"\n"    
"     *    The word 'cryptographic' can be left out if the routines from the library\n"    
"     *    being used are not cryptographic related  :-) .\n"    
"     * 4. If you include any Windows specific code (or a derivative thereof) from\n"    
"     *    the apps directory (application code) you must include an acknowledgement:\n"    
"     *    \"This product includes software written by Tim Hudson (tjh@cryptsoft.com)\"\n"    
"     *\n"    
"     * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND\n"    
"     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n"    
"     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n"    
"     * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n"    
"     * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n"    
"     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n"    
"     * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n"    
"     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n"    
"     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n"    
"     * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n"    
"     * SUCH DAMAGE.\n"    
"     *\n"    
"     * The licence and distribution terms for any publicly available version or\n"    
"     * derivative of this code cannot be changed.  i.e. this code cannot simply be\n"    
"     * copied and put under another distribution licence\n"    
"     * [including the GNU Public Licence.]\n"    
"     */\n"    
"    \n"    
"    OpenLDAP:\n"    
"    -----------------------\n"    
"    \n"    
"    Copyright 1998-2014 The OpenLDAP Foundation\n"    
"    All rights reserved.\n"    
"    \n"    
"    Redistribution and use in source and binary forms, with or without\n"    
"    modification, are permitted only as authorized by the OpenLDAP\n"    
"    Public License.\n"    
"    \n"    
"    A copy of this license is available in the file LICENSE in the\n"    
"    top-level directory of the distribution or, alternatively, at\n"    
"    <http://www.OpenLDAP.org/license.html>.\n"    
"    \n"    
"    OpenLDAP is a registered trademark of the OpenLDAP Foundation.\n"    
"    \n"    
"    Individual files and/or contributed packages may be copyright by\n"    
"    other parties and/or subject to additional restrictions.\n"    
"    \n"    
"    This work is derived from the University of Michigan LDAP v3.3\n"    
"    distribution.  Information concerning this software is available\n"    
"    at <http://www.umich.edu/~dirsvcs/ldap/ldap.html>.\n"    
"    \n"    
"    This work also contains materials derived from public sources.\n"    
"    \n"    
"    Additional information about OpenLDAP can be obtained at\n"    
"    <http://www.openldap.org/>.\n"    
"    \n"    
"    ---\n"    
"    \n"    
"    Portions Copyright 1998-2012 Kurt D. Zeilenga.\n"    
"    Portions Copyright 1998-2006 Net Boolean Incorporated.\n"    
"    Portions Copyright 2001-2006 IBM Corporation.\n"    
"    All rights reserved.\n"    
"    \n"    
"    Redistribution and use in source and binary forms, with or without\n"    
"    modification, are permitted only as authorized by the OpenLDAP\n"    
"    Public License.\n"    
"    \n"    
"    ---\n"    
"    \n"    
"    Portions Copyright 1999-2008 Howard Y.H. Chu.\n"    
"    Portions Copyright 1999-2008 Symas Corporation.\n"    
"    Portions Copyright 1998-2003 Hallvard B. Furuseth.\n"    
"    Portions Copyright 2007-2011 Gavin Henry.\n"    
"    Portions Copyright 2007-2011 Suretec Systems Ltd.\n"    
"    All rights reserved.\n"    
"    \n"    
"    Redistribution and use in source and binary forms, with or without\n"    
"    modification, are permitted provided that this notice is preserved.\n"    
"    The names of the copyright holders may not be used to endorse or\n"    
"    promote products derived from this software without their specific\n"    
"    prior written permission.  This software is provided ``as is''\n"    
"    without express or implied warranty.\n"    
"    \n"    
"    ---\n"    
"    \n"    
"    Portions Copyright (c) 1992-1996 Regents of the University of Michigan.\n"    
"    All rights reserved.\n"    
"    \n"    
"    Redistribution and use in source and binary forms are permitted\n"    
"    provided that this notice is preserved and that due credit is given\n"    
"    to the University of Michigan at Ann Arbor.  The name of the\n"    
"    University may not be used to endorse or promote products derived\n"    
"    from this software without specific prior written permission.  This\n"    
"    software is provided ``as is'' without express or implied warranty.\n"    
"    \n"    
"    \n"    
"    OpenLDAP License\n"    
"    -----------------------\n"    
"    \n"    
"    The OpenLDAP Public License\n"    
"       Version 2.8, 17 August 2003\n"    
"    \n"    
"    Redistribution and use of this software and associated documentation\n"    
"    (\"Software\"), with or without modification, are permitted provided\n"    
"    that the following conditions are met:\n"    
"    \n"    
"    1. Redistributions in source form must retain copyright statements\n"    
"       and notices,\n"    
"    \n"    
"    2. Redistributions in binary form must reproduce applicable copyright\n"    
"       statements and notices, this list of conditions, and the following\n"    
"       statements and notices, this list of conditions, and the following\n"    
"       disclaimer in the documentation and/or other materials provided\n"    
"       with the distribution, and\n"    
"    \n"    
"    3. Redistributions must contain a verbatim copy of this document.\n"    
"    \n"    
"    The OpenLDAP Foundation may revise this license from time to time.\n"    
"    Each revision is distinguished by a version number.  You may use\n"    
"    this Software under terms of this license revision or under the\n"    
"    terms of any subsequent revision of the license.\n"    
"    \n"    
"    THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS\n"    
"    CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n"    
"    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY\n"    
"    AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT\n"    
"    SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S)\n"    
"    OR OWNER(S) OF THE SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n"    
"    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n"    
"    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n"    
"    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n"    
"    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n"    
"    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n"    
"    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n"    
"    POSSIBILITY OF SUCH DAMAGE.\n"    
"    \n"    
"    The names of the authors and copyright holders must not be used in\n"    
"    advertising or otherwise to promote the sale, use or other dealing\n"    
"    in this Software without specific, written prior permission.  Title\n"    
"    to copyright in this Software shall at all times remain with copyright\n"    
"    holders.\n"    
"    \n"    
"    OpenLDAP is a registered trademark of the OpenLDAP Foundation.\n"    
"    \n"    
"    Copyright 1999-2003 The OpenLDAP Foundation, Redwood City,\n"    
"    California, USA.  All Rights Reserved.  Permission to copy and\n"    
"    distribute verbatim copies of this document is granted.\n"    
"    \n"    
"    \n"    
"    Cyrus SASL License\n"    
"    -----------------------\n"    
"    \n"    
"    /* CMU libsasl\n"    
"     * Tim Martin\n"    
"     * Rob Earhart\n"    
"     * Rob Siemborski\n"    
"     */\n"    
"    /* \n"    
"     * Copyright (c) 1998-2003 Carnegie Mellon University.  All rights reserved.\n"    
"     *\n"    
"     * Redistribution and use in source and binary forms, with or without\n"    
"     * modification, are permitted provided that the following conditions\n"    
"     * are met:\n"    
"     *\n"    
"     * 1. Redistributions of source code must retain the above copyright\n"    
"     *    notice, this list of conditions and the following disclaimer. \n"    
"     *\n"    
"     * 2. Redistributions in binary form must reproduce the above copyright\n"    
"     *    notice, this list of conditions and the following disclaimer in\n"    
"     *    the documentation and/or other materials provided with the\n"    
"     *    distribution.\n"    
"     *\n"    
"     * 3. The name \"Carnegie Mellon University\" must not be used to\n"    
"     *    endorse or promote products derived from this software without\n"    
"     *    prior written permission. For permission or any other legal\n"    
"     *    details, please contact  \n"    
"     *      Office of Technology Transfer\n"    
"     *      Carnegie Mellon University\n"    
"     *      5000 Forbes Avenue\n"    
"     *      Pittsburgh, PA  15213-3890\n"    
"     *      (412) 268-4387, fax: (412) 268-7395\n"    
"     *      tech-transfer@andrew.cmu.edu\n"    
"     *\n"    
"     * 4. Redistributions of any form whatsoever must retain the following\n"    
"     *    acknowledgment:\n"    
"     *    \"This product includes software developed by Computing Services\n"    
"     *     at Carnegie Mellon University (http://www.cmu.edu/computing/).\"\n"    
"     *\n"    
"     * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO\n"    
"     * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n"    
"     * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE\n"    
"     * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n"    
"     * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN\n"    
"     * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING\n"    
"     * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n"    
"     */\n"    
"\n"
};

ErrorId MsgHelp::HelpLicense = { ErrorOf( ES_HELP, 101, E_INFO, EV_NONE, 0  ), 
"\n"
"    license -- Update or display the license file\n"
"\n"
"    p4 license -o\n"
"    p4 license -i\n"
"    p4 license -u\n"
"\n"
"	Update the Perforce license file.  This command requires a valid\n"
"	license file in the Perforce root directory. Typically this command\n"
"	lets an administrator add extra licensed users to the Perforce server\n"
"	without having to shut the server down and copy the license file to\n"
"	the server root.\n"
"\n"
"	Most new license files obtained from Perforce can be installed with\n"
"	this command, unless the server's IP address or port has changed.\n"
"	In that case, stop the server, copy the new license file to the root,\n"
"	and restart the server.\n"
"\n"
"	The -o flag writes the license file to the standard output.\n"
"\n"
"	The -i flag reads a license file from the standard input.\n"
"\n"
"	The -u flag reports the license limits and how many entities are in\n"
"	use towards the limits.\n"
"\n"
"	This command requires 'super' access (or 'admin' for '-u'),\n"
"	which is granted by 'p4 protect'.\n"
"\n"
"	**********************************************************************\n"
"	When using the free version of the server (no license file) the server\n"
"	is limited to 20 users and 20 workspaces, or unlimited users and\n"
"	workspaces when the repository has less than 1,000 files\n"
"	**********************************************************************\n"
};

ErrorId MsgHelp::HelpList = { ErrorOf( ES_HELP, 147, E_INFO, EV_NONE, 0  ), 
"\n"
"    list -- Create a temporary list of files that can be used as a label\n"
"\n"
"    p4 list [ -l label ] [ -C ] [ -M ] file[revRange] ...\n"
"    p4 list -l label -d [ -M ]\n"
"\n"
"	List builds an in-memory temporary list of files that can be used\n"
"	as a label in any command that can take a label. The list only lasts\n"
"	as long as the connected session, for example a temporary list created\n"
"	in one 'p4' command line request will not be available to a subsequent\n"
"	'p4' command that references the label.\n"
"\n"
"	By default, the head revision is listed.  If the file argument\n"
"	specifies a revision, then all files at that revision are listed.\n"
"	If the file argument specifies a revision range, the highest revision\n"
"	in the range is used for each file. For details about specifying\n"
"	revisions, see 'p4 help revisions'.\n"
"\n"
"	The -l flag specifies the name of the temporary label that should be\n"
"	used to access the list.  In the event that a label with that name\n"
"	already exists, the in-memory name has precedence over the stored one.\n"
"	Without the '-l' option the list command assigns a unique name to the\n"
"	temporary list and returns the name as output.\n"
"\n"
"	The -d flag specifies that the named list should be deleted, freeing\n"
"	the memory used by that list.\n"
"\n"
"	The -C flag limits any depot paths to those that can be mapped through\n"
"	the client workspace.\n"
"\n"
"	The -M flag can be specified when issuing the list command against a\n"
"	forwarding replica; in this case, it indicates that the list command\n"
"	should not be processed by the replica, but should instead be\n"
"	forwarded to the master server.\n"
};

ErrorId MsgHelp::HelpLock = { ErrorOf( ES_HELP, 62, E_INFO, EV_NONE, 0  ), 
"\n"
"    lock -- Lock an open file to prevent it from being submitted\n"
"\n"
"    p4 lock [-c changelist#] [file ...]\n"
"    p4 lock -g -c changelist#\n"
"\n"
"	The specified files are locked in the depot, preventing any user\n"
"	other than the current user on the current client from submitting\n"
"	changes to the files.  If a file is already locked, the lock request\n"
"	is rejected.\n"
"\n"
"	The -c flag and the file specification limit the files to be locked.\n"
"	If no file names are specified and no changelist is specified, all\n"
"	open files are locked.\n"
"\n"
"	The -g flag is used to lock the files locally and globally at the\n"
"	Commit Server in a distributed environment. It may only be run from\n"
"	an Edge Server, and must be used with the '-c' flag with a numbered\n"
"	changelist. These locks are removed by the 'unlock' or any\n"
"	'submit' command for that change.\n"
"\n"
"	If a changelist is specified, only those files open in that\n"
"	changelist are locked.\n"
"\n"
"	If a file specification is given, only the matching files are locked.\n"
"\n"
"	If both the -c flag and a file specification are provided, only the\n"
"	matching files in the specified changelist are locked.\n"
};

ErrorId MsgHelp::HelpLogger = { ErrorOf( ES_HELP, 63, E_INFO, EV_NONE, 0  ), 
"\n"
"    logger -- Report changed jobs and changelists\n"
"\n"
"    p4 logger [-c sequence#] [-t counter]\n"
"\n"
"	Dumps the event log, which notes updates to changes and jobs, for\n"
"	use with defect tracking integration.  The event log is enabled\n"
"	by setting the counter 'logger' to 0 using the 'p4 counter' command.\n"
"	Each event is assigned a sequence number.  The presence of an entry\n"
"	in the log doesn't guarantee that the named entity has changed.\n"
"\n"
"	If a sequence# is specified using the -c flag, only events after that\n"
"	number are listed. If a counter is given using the -t flag, only events\n"
"	after the number of that counter are listed.  If both are specified,\n"
"	the counter is updated to the sequence number and nothing is output.\n"
"	If the update brings the counter to the highest sequence number in\n"
"	the log, the log is cleared.\n"
"\n"
"	Important: 'p4 logger' is not intended for end users. It is used by\n"
"	P4DTG to help propagate information to an external defect tracking\n"
"	system.\n"
"\n"
"	'p4 logger -c' requires 'review' access, which is granted by 'p4\n"
"	protect'.\n"
"\n"
"	In a distributed installation, 'p4 logger' commands should be issued\n"
"	to the Commit Server, not to an Edge Server.\n"
};

ErrorId MsgHelp::HelpLogin = { ErrorOf( ES_HELP, 89, E_INFO, EV_NONE, 0  ), 
"\n"
"    login -- Log in to Perforce by obtaining a session ticket\n"
"\n"
"    p4 login [-a -p] [-r <remotespec>] [-h <host>] [user]\n"
"    p4 login [-s] [-r <remotespec>]\n"
"\n"
"	The login command enables a user to access Perforce until the session\n"
"	expires or the user logs out.\n"
"\n"
"	When a user logs in to Perforce, they are prompted for a password\n"
"	If they enter the correct password, they are issued a ticket.  The\n"
"	ticket expires when the default timeout value has been reached and\n"
"	is valid only for the host machine where the 'login' command was\n"
"	executed (see below for exception).\n"
"\n"
"	The ticket can be used anywhere that a password can be used.\n"
"\n"
"	Example: p4 -P <ticket value> changes -m1\n"
"\n"
"	The -a flag causes the server to issue a ticket that is valid on all\n"
"	host machines.\n"
"\n"
"	The -h flag causes the server to issue a ticket that is valid on the\n"
"	specified host (IP address).  This flag is typically used together\n"
"	with the -p flag to acquire a ticket that can be used on a different\n"
"	machine.\n"
"\n"
"	The -p flag displays the ticket, but does not store it on the client\n"
"	machine.\n"
"\n"
"	The -r flag causes the server to forward the login to the server\n"
"	referenced in the the specified remote specification. If a RemoteUser\n"
"	is set in the remote specification, the login will be for that user.\n"
"	Specifying a host or a username is not allowed when logging into a\n"
"	remote server.\n"
"\n"
"	The -s flag displays the status of the current ticket (if there is\n"
"	one).\n"
"\n"
"	Specifying a username as an argument to 'p4 login' requires 'super'\n"
"	access, which is granted by 'p4 protect'.  In this case, 'p4 login'\n"
"	does not prompt for the password (you must already be logged in).\n"
};

ErrorId MsgHelp::HelpLogout = { ErrorOf( ES_HELP, 90, E_INFO, EV_NONE, 0  ), 
"\n"
"    logout -- Log out from Perforce by removing or invalidating a ticket.\n"
"\n"
"    p4 logout [-a] [user]\n"
"\n"
"	The logout command removes the ticket on the client. To resume using\n"
"	Perforce, the user must log in again.\n"
"\n"
"	If you are logged in to Perforce from more than one machine, you can\n"
"	log out of Perforce from all machines from which you were logged in\n"
"	by specifying the -a flag. The -a flag invalidates the ticket on the\n"
"	server. All of your Perforce tickets are invalidated and you are\n"
"	logged out.\n"
"	\n"
"	Specifying a username as an argument to 'p4 logout' requires 'super'\n"
"	access, which is granted by 'p4 protect'.  Note that the '-a' flag\n"
"	must be used to effectively log out a user who has a valid ticket on\n"
"	another machine.\n"
};

ErrorId MsgHelp::HelpMerge = { ErrorOf( ES_HELP, 134, E_INFO, EV_NONE, 0 ),
"\n"
"    merge -- Merge one set of files into another \n"
"\n"
"    p4 merge [options] [-F] [--from stream] [toFile][revRange]\n"
"    p4 merge [options] fromFile[revRange] toFile\n"
"\n"
"	options: -c changelist# -m max -n -Ob -q\n"
"\n"
"	'p4 merge' merges changes from one set of files (the 'source') into \n"
"	another (the 'target'). It is a simplified form of the 'p4 integrate'\n"
"	command, similar to 'p4 integrate -Rbd -Or'.\n"
"\n"
"	Using the client workspace as a staging area, 'p4 merge' schedules all\n"
"	affected target files to be resolved per changes in the source.\n"
"	Target files outside of	the current client view are not affected.\n"
"	Source files need not be within the client view.\n"
"\n"
"	'p4 resolve' must be used to resolve all changes.  'p4 submit' commits\n"
"	merged files to	the depot.  Unresolved files may not be submitted.\n"
"	Merged files can be shelved with 'p4 shelve' and abandoned with\n"
"	'p4 revert'.  The commands 'p4 integrated' and 'p4 filelog' display\n"
"	merge history.\n"
"\n"
"	When 'p4 merge' schedules a workspace file to be resolved, it leaves\n"
"	it read-only. 'p4 resolve' can operate on a read-only file;  for \n"
"	other pre-submit changes, 'p4 edit' must be used to make the file \n"
"	writable.\n"
"\n"
"	By default, 'p4 merge' merges changes into the current stream from its\n"
"	parent, or from another stream specified by the --from flag.  The\n"
"	source and target can also be specified on the command line as a\n"
"	pair of file paths.  More complex merge mappings can be specified\n"
"	via branchspecs as with 'p4 integrate' (see 'p4 help integrate').\n"
"\n"
"	Each file in the target is mapped to a file in the source. Mapping \n"
"	adjusts automatically for files that have been moved or renamed, as\n"
"	long as 'p4 move' was used to move/rename files.  The scope of source\n"
"	and target file sets must include both old-named and new-named files\n"
"	for mappings to be adjusted.  Moved source files may schedule moves \n"
"	to be resolved in target files. \n"
"\n"
"	revRange is a revision or a revision range that limits the span of\n"
"	source history to be probed for unintegrated revisions.  For details\n"
"	about revision specifiers, see 'p4 help revisions'.\n"
"\n"
"	The -F flag can be used to force merging against a stream's expected\n"
"	flow. It can also force the generation of a branch view based on a\n"
"	virtual stream; the mapping itself refers to the underlying real\n"
"	stream.\n"
"\n"
"	The -Ob flag causes the base revision (if any) to be displayed along\n"
"	with each scheduled resolve.\n"
"\n"
"	The -q flag suppresses normal output messages. Messages regarding\n"
"	errors or exceptional conditions are displayed.\n"
"\n"
"	Merging is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment. Even if the\n"
"	merge command succeeds, the required subsequent resolve command\n"
"	will fail.\n"
};

ErrorId MsgHelp::HelpMerge3 = { ErrorOf( ES_HELP, 98, E_INFO, EV_NONE, 0  ), 
"\n"
"    merge3 -- three-way file merge (unsupported)\n"
"\n"
"    p4 merge3 [-db -dw -dl -r -t -v] base leg1 leg2\n"
"\n"
"	Performs a three-way merge of the specified files and writes the\n"
"	results to standard output.  This command is implemented on the\n"
"	client and requires file names to be specified using client syntax.\n"
"	This command is used to support Perforce's graphical merge tools.\n"
"\n"
"	The -db, -dw, -dl, -t, and -v flags are the same as in 'p4 resolve'.\n"
"\n"
"	-r formats the output from a special one to one more like\n"
"	'p4 resolve'.\n"
};

ErrorId MsgHelp::HelpMonitor = { ErrorOf( ES_HELP, 88, E_INFO, EV_NONE, 0  ), 
"\n"
"    monitor -- Display Perforce process information\n"
"\n"
"    p4 monitor show [-a -l -e -L -s R|T|P|B|F|I ]\n"
"    p4 monitor terminate [id]\n"
"    p4 monitor clear [id | all]\n"
"    p4 monitor pause [id]\n"
"    p4 monitor resume [id]\n"
"\n"
"	Monitor displays running p4 processes. Monitor tracks the Perforce\n"
"	processes using a dedicated table. This table is constantly updated,\n"
"	so there is a potential minor impact on server performance. To enable\n"
"	this command, set the monitor configurable as follows: \n"
"\n"
"	    To monitor active commands, set the configurable to 1.\n"
"\n"
"	    To monitor idle connections and active commands, set the\n"
"	    configurable to 2.\n"
"\n"
"	    To monitor idle connections stuck at Init(), idle connections\n"
"	    and active commands, set the configurable to 3.\n"
"\n"
"	    To monitor idle connections and active commands, including a list\n"
"	    of the tables locked by the command for more than 1 second, set\n"
"	    the configurable to 5.\n"
"\n"
"	    To monitor idle connections and active commands, including a list\n"
"	    of the tables locked by the command for more than 1 second, with\n"
"	    lock wait times included in the lock information, set the\n"
"	    configurable to 10.\n"
"\n"
"	    To monitor idle connections and active commands, including a list\n"
"	    of the tables locked by the command for any duration, with\n"
"	    lock wait times included in the lock information, set the\n"
"	    configurable to 25.\n"
"\n"
"	Changes to the monitor configurable affect all new p4 processes that\n"
"	connect to the server; restarting the server is not required.\n"
"\n"
"	'p4 monitor show' displays current process information. For each\n"
"	process, a single line of output lists the process ID, status,\n"
"	owner, elapsed time in HH:MM:SS format, and command. The status\n"
"	values are: [R]unning, [T]erminated, [P]aused, [B]ackground,\n"
"	[F]inish, or [I]dle. The Background and Finish statuses occur only in\n"
"	replica servers.\n"
"\n"
"	The following flags require that the user be an operator or have\n"
"	'super' access:\n"
"\n"
"	    The -a flag includes the command args.\n"
"\n"
"	    The -e flag includes the command environment. For each process,\n"
"	    client application (if known), host address and client name are\n"
"	    displayed.\n"
"\n"
"	    The -l flag displays long output, including the full username and\n"
"	    argument list.\n"
"\n"
"	    The -L flag includes file locking information, and requires that\n"
"	    either the monitor configurable has been set as described above,\n"
"	    or the monitor.lsof configurable has been set to enable the\n"
"	    display. The monitor.lsof configurable can be used with a Linux\n"
"	    server, while setting the monitor configurable to 5 or more works\n"
"	    for any server platform. However, there is no value to setting\n"
"	    both configurables; either set monitor.lsof, or set monitor to\n"
"	    5 or more, but not both.\n"
"\n"
"	    The -s flag displays only processes in the indicated status.\n"
"\n"
"	'p4 monitor terminate [id]' marks the specified command for\n"
"	termination. This command requires that the user be an operator or\n"
"	have 'super' access.\n"
"\n"
"	'p4 monitor clear [id|all]' removes the specified process record from\n"
"	the monitor table. All of the records are removed if the option 'all'\n"
"	is supplied instead of an ID.  This option might be required if for\n"
"	some reason commands are ending prematurely. This command requires\n"
"	that the user be an operator or have 'super' access.\n"
"\n"
"	'p4 monitor pause [id]' marks the specified command for\n"
"	pausing until resumed. This command requires that the user be\n"
"	an operator or have 'super' access.\n"
"\n"
"	'p4 monitor resume [id]' marks the specified command for\n"
"	resuming. This command requires that the user be an operator or have\n"
"	'super' access.\n"
};

ErrorId MsgHelp::HelpMove = { ErrorOf( ES_HELP, 108, E_INFO, EV_NONE, 0  ), 
"\n"
"    move -- move file(s) from one location to another\n"
"    rename -- synonym for 'move'\n"
"\n"
"    p4 move [-c changelist#] [-f -n -k] [-t filetype] fromFile toFile\n"
"\n"
"	Move takes an already opened file and moves it from one client\n"
"	location to another, reopening it as a pending depot move.  When\n"
"	the file is submitted with 'p4 submit', its depot file is moved\n"
"	accordingly.\n"
"\n"
"	Wildcards in fromFile and toFile must match. The fromFile must be\n"
"	a file open for add or edit.\n"
"\n"
"	'p4 opened' lists pending moves. 'p4 diff' can compare a moved\n"
"	client file with its depot original, 'p4 sync' can schedule an \n"
"	update of a moved file, and 'p4 resolve' can resolve the update.\n"
"\n"
"	A client file can be moved many times before it is submitted.\n"
"	Moving a file back to its original location will undo a pending\n"
"	move, leaving unsubmitted content intact.  Using 'p4 revert'\n"
"	undoes the move and reverts the unsubmitted content.\n"
"\n"
"	If -c changelist# is specified, the file is reopened in the\n"
"	specified pending changelist as well as being moved.\n"
"\n"
"	The -f flag forces a move to an existing target file. The file\n"
"	must be synced and not opened.  The originating source file will\n"
"	no longer be synced to the client.\n"
"\n"
"	If -t filetype is specified, the file is assigned that filetype.\n"
"	If the filetype is a partial filetype, the partial filetype is\n"
"	combined with the current filetype.  See 'p4 help filetypes'.\n"
"\n"
"	The -n flag previews the operation without moving files.\n"
"\n"
"	The -k flag performs the rename on the server without modifying\n"
"	client files. Use with caution, as an incorrect move can cause\n"
"	discrepancies between the state of the client and the corresponding\n"
"	server metadata.\n"
"\n"
"	The 'move' command requires a release 2009.1 or newer client. The\n"
"	'-f' flag requires a 2010.1 client.\n"
};

ErrorId MsgHelp::HelpObliterate = { ErrorOf( ES_HELP, 64, E_INFO, EV_NONE, 0  ), 
"\n"
"    obliterate -- Remove files and their history from the depot\n"
"\n"
"    p4 obliterate [-y -A -b -a -h] file[revRange] ...\n"
"\n"
"	Obliterate permanently removes files and their history from the server.\n"
"	(See 'p4 delete' for the non-destructive way to delete a file.)\n"
"	Obliterate retrieves the disk space used by the obliterated files\n"
"	in the archive and clears the files from the metadata that is\n"
"	maintained by the server.  Files in client workspaces are not\n"
"	physically affected, but they are no longer under Perforce control.\n"
"\n"
"	Obliterate is aware of lazy copies made when 'p4 integrate' creates\n"
"	a branch, and does not remove copies that are still in use. Because\n"
"	of this, obliterating files does not guarantee that the corresponding\n"
"	files in the archive will be removed.\n"
"\n"
"	If the file argument has a revision, the specified revision is\n"
"	obliterated.  If the file argument has a revision range, the\n"
"	revisions in that range are obliterated.  See 'p4 help revisions'\n"
"	for help.\n"
"\n"
"	By default, obliterate displays a preview of the results. To execute\n"
"	the operation, you must specify the -y flag.\n"
"\n"
"	Obliterate has three flags that can improve performance (-b, -a, -h):\n"
"\n"
"	The '-b' flag restricts files in the argument range to those that\n"
"	are branched and are both the first revision and the head revision\n"
"	This flag is useful for removing old branches while keeping files\n"
"	of interest (files that were modified).\n"
"\n"
"	The '-a' flag skips the archive search and removal phase.  This\n"
"	phase of obliterate can take a very long time for sites with big\n"
"	archive maps (db.archmap).  However, file content is not removed;\n"
"	if the file was a branch, then it's most likely that the archival\n"
"	search is not necessary.  This option is safe to use with the '-b'\n"
"	option.\n"
"\n"
"	The '-h' flag instructs obliterate not to search db.have for all\n"
"	possible matching records to delete.  Usually, db.have is one of the\n"
"	largest tables in a repository and consequently this search takes\n"
"	a long time.  Do not use this flag when obliterating branches or\n"
"	namespaces for reuse,  because the old content on any client\n"
"	will not match the newly-added repository files.  Note that use of\n"
"	the -h flag has the side-effect of cleaning the obliterated files\n"
"	from client workspaces when they are synced.\n"
"\n"
"	When a revision has been archived, its action is changed to archive.\n"
"	By default, obliterate will not process a revision which has been\n"
"	archived. To include such revisions, you must specify the -A flag.\n"
"	Note that obliterate -A does not affect the metadata and content in\n"
"	the archive depot. To remove the metadata and content in the archive\n"
"	depot, see 'p4 help archive' and the corresponding '-p' flag. Note\n"
"	also that obliterating an archive revision with the -A flag means\n"
"	you can no longer restore it nor use 'archive -p', so typically you\n"
"	should use 'archive -p' instead of 'obliterate -A'.\n"
"\n"
"	If you are obliterating files in order to entirely remove a depot\n"
"	from the server, and files in that depot have been integrated to\n"
"	other depots, run 'p4 snap' first to break those linkages, so that\n"
"	obliterate can remove the unreferenced archive files. If, instead,\n"
"	you specify '-a' to skip the archive removal phase, then you will\n"
"	need to specify '-f' when deleting the depot, since the presence\n"
"	of the archive files will prevent the depot deletion.\n"
"\n"
"	'p4 obliterate' requires 'admin' access, which is granted by 'p4\n"
"	protect'.\n"
};

ErrorId MsgHelp::HelpOpened = { ErrorOf( ES_HELP, 65, E_INFO, EV_NONE, 0  ), 
"\n"
"    opened -- List open files and display file status\n"
"\n"
"    p4 opened [-a -c changelist# -C client -u user -m max -s -g] [file ...]\n"
"    p4 opened [-a -x -m max ] [file ...]\n"
"\n"
"	Lists files currently opened in pending changelists, or, for\n"
"	specified files, show whether they are currently opened or locked.\n"
"	If the file specification is omitted, all files open in the current\n"
"	client workspace are listed.\n"
"\n"
"	Files in shelved changelists are not displayed by this command. To\n"
"	display shelved changelists, see 'p4 changes -s shelved'; to display\n"
"	the files in those shelved changelists, see 'p4 describe -s -S'.\n"
"\n"
"	If the stream spec associated with this client is currently opened,\n"
"	the stream spec is displayed on the first line of the output.\n"
"\n"
"	The -a flag lists opened files in all clients.  By default, only\n"
"	files opened by the current client are listed.\n"
"\n"
"	The -c changelist# flag lists files opened in the specified\n"
"	changelist#.\n"
"\n"
"	The -C client flag lists files open in the specified client workspace.\n"
"\n"
"	The -u user flag lists files opened by the specified user.\n"
"\n"
"	The -m max flag limits output to the first 'max' number of files.\n"
"\n"
"	The -s option produces 'short' and optimized output when used with\n"
"	the -a (all clients) option.  For large repositories '-a' can take\n"
"	a long time when compared to '-as'.\n"
"\n"
"	The -x option lists files that are opened 'exclusive'. This option\n"
"	only applies to a distributed installation where global tracking of\n"
"	these file types is necessary across servers. The -x option implies\n"
"	the -a option.\n"
"\n"
"	The -g option lists files that are opened on the Commit Server\n"
"	in a distributed installation. This is useful for tracking files\n"
"	that may be globally locked on the Commit Server from any of its\n"
"	Edge Servers. Since the command query runs on the Commit Server,\n"
"	the file spec argument (if any) must be in depot syntax. The -g\n"
"	option implies the -a option.\n"
};

ErrorId MsgHelp::HelpPasswd = { ErrorOf( ES_HELP, 66, E_INFO, EV_NONE, 0  ), 
"\n"
"    passwd -- Set the user's password on the server (and Windows client)\n"
"\n"
"    p4 passwd [-O oldPassword -P newPassword] [user]\n"
"\n"
"	'p4 passwd' sets the user's password on the server.\n"
"\n"
"	After a password is set for a user, the same password must be set on\n"
"	the client in the environment variable $P4PASSWD to enable the user\n"
"	to use all Perforce client applications on that machine. (On Windows,\n"
"	you can use 'p4 passwd' to configure the password in the environment.)\n"
"\n"
"	'p4 passwd' prompts for both the old password and the new password\n"
"	with character echoing turned off.  To delete the password, set it to\n"
"	an empty string.\n"
"\n"
"	The -O flag provides the old password, avoiding prompting. If you\n"
"	specify -O, you must also specify -P.\n"
"\n"
"	The -P flag provides the new password, avoiding prompting.\n"
"\n"
"	If you are using ticket-based authentication, changing your password\n"
"	automatically invalidates all of your tickets and logs you out.\n"
"\n"
"	Specifying a username as an argument to 'p4 passwd' requires 'super'\n"
"	access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpPopulate = { ErrorOf( ES_HELP, 148, E_INFO, EV_NONE, 0 ),
"\n"
"    populate -- Branch a set of files as a one-step operation\n"
"\n"
"    p4 populate [options] fromFile[rev] toFile\n"
"    p4 populate [options] -b branch [-r] [toFile[rev]]\n"
"    p4 populate [options] -b branch -s fromFile[rev] [toFile]\n"
"    p4 populate [options] -S stream [-P parent] [-r] [toFile[rev]]\n"
"\n"
"	options: -d description -f -m max -n -o\n"
"\n"
"	'p4 populate' branches a set of files (the 'source') into another depot\n"
"	location (the 'target') in a single step.  The new files are created\n"
"	immediately, without requiring a 'p4 submit' or a client workspace.\n"
"\n"
"	The target must be completely empty of files, including deleted files.\n"
"\n"
"	Source and target files (fromFile and toFile) can be specified on\n"
"	the command line or through a branch view.  On the command line,\n"
"	fromFile is the source file set and toFile is the target file set.\n"
"	With a branch view, a toFile argument can be given to limit the scope\n"
"	of the target file set.\n"
"\n"
"	A revision specifier can be used to select the revision to branch; by\n"
"	default, the head revision is branched. The revision specifier can be\n"
"	used on fromFile, or on toFile, but not on both.  When used on toFile,\n"
"	it refers to source revisions, not to target revisions.  A range may\n"
"	not be used as a revision specifier.  For revision syntax, see 'p4\n"
"	help revisions'.\n"
"\n"
"	Use 'p4 populate -r -S' to branch a child stream from its parent.\n"
"	The -S flag makes 'p4 populate' use a generated branch view that maps\n"
"	the stream (or its underlying real stream) to its parent.  With -r,\n"
"	the direction of the mapping is reversed.  -P can be used to generate\n" 
"	the branch view using a parent stream other than the stream's actual\n"
"	parent.\n"
"\n"
"	The -b flag makes 'p4 populate' use a user-defined branch view.  (See\n"
"	'p4 help branch'.) The source is the left side of the branch view\n"
"	and the target is the right side. With -r, the direction is reversed.\n"
"\n"
"	The -s flag can be used with -b to cause fromFile to be treated as\n"
"	the source, and both sides of the user-defined branch view to be\n"
"	treated as the target, per the branch view mapping.  An optional\n"
"	toFile argument may be given to further restrict the scope of the\n"
"	target file set.  -r is ignored when -s is used.\n"
"\n"
"	The -d flag specifies a description for the submitted changelist.\n"
"\n"
"	The -f flag forces deleted files to be branched into the target.\n"
"	By default, deleted files are treated as nonexistent and simply\n"
"	skipped.\n"
"\n"
"	The -n flag displays a preview of the operation, without actually\n"
"	doing anything.\n"
"\n"
"	The -o flag displays a list of files created by the populate command.\n"
"\n"
"	The -m flag limits the actions to the first 'max' number of files.\n"
};


ErrorId MsgHelp::HelpPrint = { ErrorOf( ES_HELP, 67, E_INFO, EV_NONE, 0  ), 
"\n"
"    print -- Write a depot file to standard output\n"
"\n"
"    p4 print [-a -A -k -o localFile -q -m max] file[revRange] ...\n"
"    p4 print -U unloadfile ...\n"
"\n"
"	Retrieve the contents of a depot file to the client's standard output.\n"
"	The file is not synced.  If file is specified using client syntax,\n"
"	Perforce uses the client view to determine the corresponding depot\n"
"	file.\n"
"\n"
"	By default, the head revision is printed.  If the file argument\n"
"	includes a revision, the specified revision is printed.  If the\n"
"	file argument has a revision range,  then only files selected by\n"
"	that revision range are printed, and the highest revision in the\n"
"	range is printed. For details about revision specifiers, see 'p4\n"
"	help revisions'.\n"
"\n"
"	The -a flag prints all revisions within the specified range, rather\n"
"	than just the highest revision in the range.\n"
"\n"
"	The -A flag prints files in archive depots.\n"
"\n"
"	The -k flag suppresses keyword expansion.\n"
"\n"
"	The -o localFile flag redirects the output to the specified file on\n"
"	the client filesystem.\n"
"\n"
"	The -q flag suppresses the initial line that displays the file name\n"
"	and revision.\n"
"\n"
"	The -m flag limits print to the first 'max' number of files.\n"
"\n"
"	The -U option prints files in the unload depot (see 'p4 help unload'\n"
"	for more information about the unload depot).\n"
};

ErrorId MsgHelp::HelpProperty = { ErrorOf( ES_HELP, 159, E_INFO, EV_NONE, 0  ), 
"\n"
"    property -- Add, delete, or list property values\n"
"\n"
"    p4 property -a -n name -v value [-s sequence] [-u user | -g group]\n"
"    p4 property -d -n name [-s sequence] [-u user | -g group]\n"
"    p4 property -l [-A] [-n name [-s sequence] [-u user | -g group]] [-F filter -T taglist -m max]\n"
"\n"
"	The first form updates a property value in the server, or adds the\n"
"	property value to the server if it is not yet there.\n"
"\n"
"	The second form deletes a property value from the server.\n"
"\n"
"	The third form lists one or more property values from the server.\n"
"	Specifying the -n flag when using the -l flag substantially improves\n"
"	the performance of this command.\n"
"\n"
"	The server does not directly use property values. It provides\n"
"	storage of property values for use by applications that wish to\n"
"	persistently store their configuration settings and other property\n"
"	data in the server.\n"
"\n"
"	When specifying multiple property values for the same property, use\n"
"	distinct sequence numbers to specify the precedence order. A value\n"
"	with a higher sequence number is ordered before a value with a lower\n"
"	sequence number. Values with the same sequence number have an\n"
"	undefined ordering relationship.\n"
"\n"
"	The -n flag specifies the name of this property.\n"
"\n"
"	The -v flag specifies the value of this property.\n"
"\n"
"	The -s flag specifies the sequence number of this property. If the\n"
"	sequence is not specified, it defaults to 1.\n"
"\n"
"	The -u flag specifies the user to whom this property applies.\n"
"\n"
"	The -g flag specifies the user group to which this property applies.\n"
"\n"
"	The -m max flag limits output to the first 'max' number of properties.\n"
"\n"
"	The -T flag can be used to limit the fields that are displayed.\n"
"\n"
"	The -F flag limits output to properties matching the filter pattern.\n"
"\n"
"	The -T and -F flags can only be used with tagged format.\n"
"\n"
"	The -A flag specifies that properties for all users and groups should\n"
"	be listed, including the sequence number of each property value.\n"
"\n"
"	The -a, -A, and -d flags require that the user have 'admin' access\n"
"	granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpProtect = { ErrorOf( ES_HELP, 68, E_INFO, EV_NONE, 0  ), 
"\n"
"    protect -- Modify protections in the server namespace\n"
"\n"
"    p4 protect\n"
"    p4 protect -o\n"
"    p4 protect -i\n"
"\n"
"	'p4 protect' edits the protections table in a text form.\n"
"\n"
"	Each line in the table contains a protection mode, a group/user\n"
"	indicator, the group/user name, client host ID and a depot file\n"
"	path pattern. Users receive the highest privilege that is granted\n"
"	on any line.\n"
"\n"
"	Note: remote depots are accessed using the pseudo-user 'remote'.\n"
"	To control access from other servers that define your server as\n"
"	a remote server, grant appropriate permissions to the 'remote' user.\n"
"\n"
"	     Mode:   The permission level or right being granted or denied.\n"
"		     Each permission level includes all the permissions above\n"
"		     it, except for 'review'. Each permission only includes\n"
"		     the specific right and no lesser rights.  This approach\n"
"		     enables you to deny individual rights without having to\n"
"		     re-grant lesser rights. Modes prefixed by '=' are rights.\n"
"		     All other modes are permission levels.\n"
"\n"
"      Valid modes are:\n"
"\n"
"		     list   - users can see names but not contents of files;\n"
"			      users can see all non-file related metadata\n"
"			      (clients, users, changelists, jobs, etc.)\n"
"\n"
"		     read   - users can sync, diff, and print files\n"
"\n"
"		     open   - users can open files (add, edit, delete,\n"
"			      integrate)\n"
"\n"
"		     write  - users can submit open files\n"
"\n"
"		     admin  - permits those administrative commands and\n"
"			      command options that don't affect the server's\n"
"			      security.\n"
"\n"
"		     super  - access to all commands and command options.\n"
"\n"
"		     review - permits access to the 'p4 review' command;\n"
"			      implies read access\n"
"\n"
"		     =read  - if this right is denied, users can't sync,\n"
"			      diff, or print files\n"
"\n"
"		     =branch - if this right is denied, users are not\n"
"			       permitted to use files as a source\n"
"			       for 'p4 integrate'\n" 
"\n"
"		     =open   = if this right is denied, users cannot open\n"
"			       files (add, edit, delete, integrate)\n"
"\n"
"		     =write  = if this right is denied, users cannot submit\n"
"			       open files\n"
"\n"
"	     Group/User indicator: specifies the grantee is a group or user.\n"
"\n"
"	     Name:   A Perforce group or user name; can include wildcards.\n"
"\n"
"	     Host:   The IP address of a client host; can include wildcards.\n"
"\n"
"	             The server can distinguish connections coming from a\n"
"	             proxy, broker, or replica. The server prepends the string\n"
"	             'proxy-' to the IP address of the true client of such\n"
"	             a connection when the server enforces the protections.\n"
"\n"
"	             Specify the 'proxy-' prefix for the IP address in the\n"
"	             Host: field in the protections table to indicate the\n"
"	             protections that should thus apply.\n"
"\n"
"	             For example, 'proxy-*' applies to all connections from\n"
"	             all proxies, brokers, and replicas, while\n"
"	             'proxy-10.0.0.5' identifies a client machine with an IP\n"
"	             address of 10.0.0.5 which is connecting to p4d through\n"
"	             a proxy, broker, or replica.\n"
"\n"
"	             If you wish to write a single set of protections entries\n"
"	             which apply both to directly-connected clients as well\n"
"	             as to those which connect via a proxy, broker, or\n"
"	             replica, you can omit the 'proxy-' prefix and also set\n"
"	             dm.proxy.protects=0. In this case, the 'proxy-' prefix\n"
"	             is not prepended to the IP address of connections which\n"
"	             are made via a proxy, replica or broker.  Note that in\n"
"	             this scenario, all intermediate proxies, brokers, and\n"
"	             replicas should be at release 2012.1 or higher.\n"
"\n"
"	     Path:   The part of the depot to which access is being granted\n"
"	             or denied.  To deny access to a depot path, preface the\n"
"	             path with a \"-\" character. These exclusionary mappings\n"
"	             apply to all access levels, even if only one access\n"
"	             level is specified in the first field.\n"
"\n"
"	The -o flag writes the protection table	to the standard output.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -i flag reads the protection table from the standard input.\n"
"	The user's editor is not invoked.\n"
"\n"
"	After protections are defined, 'p4 protect' requires 'super'\n"
"	access.\n"
};

ErrorId MsgHelp::HelpProtects = { ErrorOf( ES_HELP, 93, E_INFO, EV_NONE, 0  ), 
"\n"
"    protects -- Display protections defined for a specified user and path\n"
"\n"
"    p4 protects [-s spec] [-a | -g group | -u user] [-h host] [-m] [file ...]\n"
"    p4 protects -M [-g group | -u user] [file ...]\n"
"\n"
"	'p4 protects' displays the lines from the protections table that\n"
"	apply to the current user.  The protections table is managed using\n"
"	the 'p4 protect' command.\n"
"\n"
"	If the -a flag is specified, protection lines for all users are\n"
"	displayed.  If the -g group flag or -u user flag is specified,\n"
"	protection lines for that group or user are displayed.\n"
"\n"
"	If the -h host flag is specified, the protection lines that apply\n"
"	to the specified host (IP address) are displayed.\n"
"\n"
"	If the -m flag is given, a single word summary of the maximum\n"
"	access level is reported. Note that this summary does not take\n"
"	exclusions or the specified file path into account.\n"
"\n"
"	If the -M flag is given, a single word summary of the maximum\n"
"	access level is reported. Unlike '-m' it does take into account\n"
"	exclusions and the specified file path.\n"
"\n"
"	If the -s spec flag is specified and a spec depot has been defined\n"
"	then the command runs using the contents of the file in the spec\n"
"	depot rather than the current protections table. This allows the\n"
"	'super' user back-in-time access to how permission would have\n"
"	behaved in a previous version of the protections spec.\n"
"\n"
"	If the file argument is specified, protection lines that apply to\n"
"	the specified files are displayed.\n"
"\n"
"	The -a/-g/-u flags require 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpProxy = { ErrorOf( ES_HELP, 145, E_INFO, EV_NONE, 0  ), 
"\n"
"    proxy -- Display Proxy connection information\n"
"\n"
"    p4 proxy\n"
"\n"
"	'p4 proxy' is only understood by the Perforce Proxy.\n"
"\n"
"	'p4 proxy' lists information about the proxy which the client is\n"
"	connected to.  Items displayed include the client's network address,\n"
"	the proxy's network address, and the proxy's version information.\n"
};

ErrorId MsgHelp::HelpPrune = { ErrorOf( ES_HELP, 174, E_INFO, EV_NONE, 0 ),
"\n"
"    prune -- Remove unmodified branched files from a stream\n"
"\n"
"    p4 prune [-y] -S stream\n"
"\n"
"	Prune permanently removes unmodified files from a stream that is\n"
"	no longer being actively used.  Only the owner of a stream may\n"
"	'p4 prune' it.\n"
"\n"
"	After a stream has been pruned, files that have been modified, i.e.\n"
"	files with more than one revision, will remain in the stream so that\n"
"	their edit history will be preserved.  The unmodified files will be\n"
"	gone as if obliterated by an administrator (see 'p4 help obliterate').\n"
"\n"
"	Mainline, task, and virtual streams may not be pruned.  To remove\n"
"	unmodified files from a task stream, delete or unload it (see 'p4 help\n"
"	stream' and 'p4 help unload').\n"
"\n"
"	Pruned files will remain in client workspaces until the next 'p4 sync',\n"
"	which will remove them.  If pruned files have been branched to a child\n"
"	stream, new integration records will be generated to directly link the\n"
"	branched files in the child stream to the files in the parent stream\n"
"	that they were previously related to indirectly.\n"
"\n"
"	By default, prune displays a preview of the results.  To execute the\n"
"	operation, you must specify the -y flag.\n"
"\n"
"	'p4 prune' requires 'write' access, which is granted by 'p4 protect'.\n"
"	You must also be the owner of the stream in order to run 'p4 prune'.\n"
"\n"
};

ErrorId MsgHelp::HelpRename = { ErrorOf( ES_HELP, 69, E_INFO, EV_NONE, 0  ), 
"\n"
"    rename -- How to rename files using pre-2009.1 clients\n"
"\n"
"	In release 2009.1 and higher, you can use 'p4 move' to move or\n"
"	rename files. Perforce clients prior to release 2009.1 do not\n"
"	support 'p4 move'.  However, files in older clients can be\n"
"	renamed by branching one file to another and deleting the\n"
"	original file.  For example:\n"
"\n"
"	    p4 integrate fromFile toFile\n"
"	    p4 delete fromFile\n"
"	    p4 submit\n"
"\n"
"	For further information, see the help for the individual commands.\n"
"\n"
"	Note: Files renamed in this way are treated as branched files\n"
"	rather than moved files in subsequent operations.\n"
};

ErrorId MsgHelp::HelpReopen = { ErrorOf( ES_HELP, 70, E_INFO, EV_NONE, 0  ), 
"\n"
"    reopen -- Change the filetype of an open file or move it to\n"
"              another changelist\n"
"\n"
"    p4 reopen [-c changelist#] [-t filetype] file ...\n"
"\n"
"	Reopen an open file for the current user in order to move it to a\n"
"	different changelist or change its filetype.\n"
"\n"
"	The target changelist must exist; you cannot create a changelist by\n"
"	reopening a file. To move a file to the default changelist, use\n"
"	'p4 reopen -c default'.\n"
"\n"
"	If -t filetype is specified, the file is assigned that filetype. If\n"
"	a partial filetype is specified, it is combined with the current\n"
"	filetype.  For details, see 'p4 help filetypes'.\n"
};

ErrorId MsgHelp::HelpReconcile = { ErrorOf( ES_HELP, 146, E_INFO, EV_NONE, 0  ), 
"\n"
"    reconcile -- Open files for add, delete, and/or edit to reconcile\n"
"                 client with workspace changes made outside of Perforce\n"
"\n"
"    rec         -- synonym for 'reconcile'\n"
"    status      -- 'reconcile -n + opened' (output uses local paths)\n"
"    status -A   -- synonym for 'reconcile -ead' (output uses local paths)\n"
"\n"
"    clean       -- synonym for 'reconcile -w'\n"
"\n"
"    p4 reconcile [-c change#] [-e -a -d -f -I -l -m -n -w] [file ...]\n"
"    p4 status [-c change#] [-A | [-e -a -d] | [-s]] [-f -I -m] [file ...]\n"
"    p4 clean [-e -a -d -I -l -n] [file ...]\n"
"    p4 reconcile -k [-l -n] [file ...]\n"
"    p4 status -k [file ...]\n"
"\n"
"	'p4 reconcile' finds unopened files in a client's workspace and\n"
"	detects the following:\n"
"\n"
"	1. files in depot missing from workspace, but still on have list\n"
"	2. files on workspace that are not in depot\n"
"	3. files modified in workspace that are not opened for edit\n"
"\n"
"	By default, the files matching each condition above in the path\n"
"	are reconciled by opening files for delete (scenario 1), add\n"
"	(scenario 2), and/or edit (scenario 3). The -e, -a, and -d flags\n"
"	may be used to limit to a subset of these operations. If no file\n"
"	arguments are given, reconcile and status default to the current\n"
"	working directory.\n"
"\n"
"	If the list of files to be opened includes both adds and deletes,\n"
"	the missing and added files will be compared and converted to pairs\n"
"	of move/delete and move/add operations if they are similar enough.\n"
"\n"
"	In addition to opening unopened files, reconcile will detect files\n"
"	that are currently opened for edit but missing from the workspace\n"
"	and reopen them for delete. Reconcile will also detect files opened\n"
"	for delete that are present on the workspace and reopen them for\n"
"	edit.\n"
"\n"
"	The -n flag previews the operation without performing any action.\n"
"	Although metadata updates from reconcile require open permission,\n"
"	the preview commands only require read access.\n"
"\n"	
"	If -c changelist# is included, the files are opened in the specified\n"
"	pending changelist.\n"
"\n"
"	The -e flag allows the user to reconcile files that have been\n"
"	modified outside of Perforce. The reconcile command will open\n"
"	these files for edit.\n"
"\n"
"	The -a flag allows the user to reconcile files that are in the\n"
"	user's directory that are not under Perforce source control. These\n"
"	files are opened for add.\n"
"\n"
"	The -f flag allows the user to add files with filenames that contain\n"
"	wildcard characters. Filenames that contain the special characters\n"
"	'@', '#', '%%' or '*' are reformatted to encode the characters using\n"
"	ASCII hexadecimal representation.  After the files are added, you\n"
"	must refer to them using the reformatted file name, because Perforce\n"
"	does not recognize the local filesystem name.\n"
"\n"
"	The -I flag informs the client that it should not perform any ignore\n"
"	checking configured by P4IGNORE.\n"
"\n"
"	The -d flag allows the user to reconcile files that have been\n"
"	removed from the user's directory but are still in the depot.\n"
"	These files will be opened for delete only if they are still on the\n"
"	user's have list.\n"
"\n"
"	The -l flag requests output in local file syntax using relative\n"
"	paths, similar to the workspace-centric view provided by 'status'.\n"
"\n"
"	The -m flag used in conjunction with -e can be used to minimize\n"
"	costly digest computation on the client by checking file modification\n"
"	times before checking digests to determine if files have been\n"
"	modified outside of Perforce.\n"
"\n"
"	The -w flag forces the workspace files to be updated to match the\n"
"	depot rather than opening them so that the depot can be updated to\n"
"	match the workspace.  Files that are not under source control will\n"
"	be deleted, and modified or deleted files will be refreshed.  Note\n"
"	that this operation will result in the loss of any changes made to\n"
"	unopened files. This option requires read permission.\n"
"\n"
"	The -k flag updates the have list when files in the workspace but\n"
"	not on the have list match content of corresponding files in the\n"
"	depot. In this case, the client's have list is updated to reflect\n"
"	the matching revisions. This option is used to reconcile the have\n"
"	list with the workspace.\n"
"\n"
"	The -s flag (only used with 'p4 status') requests summarized\n"
"	output for the files to be opened for 'add'. Files in the current\n"
"	directory are listed as usual, but subdirectories containing files\n"
"	to be opened for 'add' are displayed instead of each file. This\n"
"	optimized option doesn't support move detection. Files to open\n"
"	for 'delete' and 'edit' are still listed individually.\n"
"\n"
"	The status command displays preview output which includes files\n"
"	which are already opened in addition to the files that need to\n"
"	be reconciled. Opened files are not shown with options -A/-a/-e/-d.\n"
"\n"
"	'p4 reconcile' is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpResolve = { ErrorOf( ES_HELP, 71, E_INFO, EV_NONE, 0  ), 
"\n"
"    resolve -- Resolve integrations and updates to workspace files\n"
"\n"
"    p4 resolve [options] [file ...]\n"
"\n"
"	options: -A<flags> -a<flags> -d<flags> -f -n -N -o -t -v\n"
"		 -c changelist#\n"
"\n"
"	'p4 resolve' resolves changes to files in the client workspace.\n"
"	\n"
"	'p4 resolve' works only on files that have been scheduled to be \n"
"	resolved.  The commands that can schedule resolves are: 'p4 sync',\n"
"	'p4 update', 'p4 submit', 'p4 merge', and 'p4 integrate'.  Files must\n"
"	be resolved before they can be submitted.\n"
"\n"
"	Resolving involves two sets of files, a source and a target.  The\n"
"	target is a set of depot files that maps to opened files in the\n"
"	client workspace.  When resolving an integration, the source is a\n"
"	different set of depot files than the target.  When resolving an\n"
"	update, the source is the same set of depot files as the target,\n"
"	at a different revision.\n"
"\n"
"	The 'p4 resolve' file argument specifies the target.  If the file\n"
"	argument is omitted, all unresolved files are resolved.\n"
"\n"
"	Resolving can modify workspace files. To back up files, use 'p4\n"
"	shelve' before using 'p4 resolve'.\n"
"\n"
"	The resolve process is a classic three-way merge. The participating\n"
"	files are referred to as follows:\n"
"\n"
"	  'yours'       The target file open in the client workspace\n"
"	  'theirs'      The source file in the depot\n"
"	  'base'        The common ancestor; the highest revision of the\n"
"	                source file already accounted for in the target.\n"
"	  'merged'      The merged result.\n"
"\n"
"	Filenames, filetypes, and text file content can be resolved by \n"
"	accepting 'yours', 'theirs', or 'merged'.  Branching, deletion, and\n"
"	binary file content can be resolved by accepting either 'yours' or\n"
"	'theirs'.\n"
"\n"
"	When resolving integrated changes, 'p4 resolve' distinguishes among\n"
"	four results: entirely yours, entirely theirs, a pure merge, or an\n"
"	edited merge.  The distinction is recorded when resolved files are\n"
"	submitted, and will be used by future commands to determine whether\n"
"	integration is needed.\n"
"\n"
"	In all cases, accepting 'yours' leaves the target file in its current\n"
"	state.  The result of accepting 'theirs' is as follows:\n"
"\n"
"	   Content:     The target file content is overwritten.\n"
"	   Attribute:   The target's attributes are replaced.\n"
" 	   Branching:	A new target is branched.\n"
" 	   Deletion:    The target file is deleted.\n"
" 	   Filename:	The target file is moved or renamed.\n"
" 	   Filetype:    The target file's type is changed.\n"
"\n"
"	For each unresolved change, the user is prompted to accept a result.\n"
"	Content and non-content changes are resolved separately.  For content,\n"
"	'p4 resolve' places the merged result into a temporary file in the\n"
"	client workspace.  If there are any conflicts, the merged file contains\n"
"	conflict markers that must be removed by the user.\n"
"\n"
"	'p4 resolve' displays a count of text diffs and conflicts, and offers\n"
"	the following prompts:\n"
"\n"
"	  Accept:\n"
"	     at              Keep only changes to their file.\n"
"	     ay              Keep only changes to your file.\n"
"	   * am              Keep merged file.\n"
"	   * ae              Keep merged and edited file.\n"
"	   * a               Keep autoselected file.\n"
"\n"
"	  Diff:\n"
"	   * dt              See their changes alone.\n"
"	   * dy              See your changes alone.\n"
"	   * dm              See merged changes.\n"
"	     d               Diff your file against merged file.\n"
"\n"
"	  Edit:\n"
"	     et              Edit their file (read only).\n"
"	     ey              Edit your file (read/write).\n"
"	   * e               Edit merged file (read/write).\n"
"\n"
"	  Misc:\n"
"	   * m               Run '$P4MERGE base theirs yours merged'.\n"
"			     (Runs '$P4MERGEUNICODE charset base theirs\n"
"			      yours merged' if set and the file is a\n"
"			      unicode file.)\n"
"	     s               Skip this file.\n"
"	     h               Print this help message.\n"
"	     ^C              Quit the resolve operation.\n"
"\n"
"	Options marked (*) appear only for text files. The suggested action\n"
"	will be displayed in brackets. \n"
"\n"
"	The 'merge' (m) option enables you to invoke your own merge program, if\n"
"	one is configured using the $P4MERGE environment variable.  Four files\n"
"	are passed to the program: the base, yours, theirs, and the temporary\n"
"	file. The program is expected to write merge results to the temporary\n"
"	file.\n"
"\n"
"	The -A flag can be used to limit the kind of resolving that will be\n"
"	attempted; without it, everything is attempted:\n"
"\n"
"	    -Aa		Resolve attributes.\n"
"	    -Ab		Resolve file branching.\n"
"	    -Ac		Resolve file content changes.\n"
"	    -Ad		Resolve file deletions.\n"
"	    -Am		Resolve moved and renamed files.\n"
"	    -At		Resolve filetype changes.\n"
"	    -AQ		Resolve charset changes.\n"
"\n"
"	The -a flag puts 'p4 resolve' into automatic mode. The user is not\n"
"	prompted, and files that can't be resolved automatically are skipped:\n"
"\n"
"	    -as		'Safe' resolve; skip files that need merging.\n"
"	    -am 	Resolve by merging; skip files with conflicts.\n"
"	    -af		Force acceptance of merged files with conflicts.\n"
"	    -at		Force acceptance of theirs; overwrites yours.\n"
"	    -ay		Force acceptance of yours; ignores theirs.\n"
"\n"
"	The -as flag causes the workspace file to be replaced with their file\n"
"	only if theirs has changed and yours has not.\n"
"\n"
"	The -am flag causes the workspace file to be replaced with the result\n"
"	of merging theirs with yours. If the merge detected conflicts, the\n"
"	file is left untouched and unresolved.\n"
"\n"
"	The -af flag causes the workspace file to be replaced with the result\n"
"	of merging theirs with yours, even if there were conflicts.  This can\n"
"	leave conflict markers in workspace files.\n"
"\n"
"	The -at flag resolves all files by copying theirs into yours. It \n"
"	should be used with care, as it overwrites any changes made to the\n"
"	file in the client workspace.\n"
"\n"
"	The -ay flag resolves all files by accepting yours and ignoring \n"
"	theirs. It preserves the content of workspace files.\n"
"\n"
"	The -d flags can be used to control handling of whitespace and line\n"
"	endings when merging files:\n"
"\n"
"	    -db		Ignore whitespace changes.\n"
"	    -dw		Ignore whitespace altogether.\n"
"	    -dl 	Ignores line endings. \n"
"\n"
"	The -d flags are also passed to the diff options in the 'p4 resolve'\n"
"	dialog. Additional -d flags that modify the diff output but do not \n"
"	modify merge behavior include -dn (RCS), -dc (context), -ds (summary),\n"
"	and -du (unified). Note that 'p4 resolve' uses text from the client\n"
"	file if the files differ only in whitespace.\n"
"\n"
"	The -f flag enables previously resolved content to be resolved again.\n"
"	By default, after files have been resolved, 'p4 resolve' does not\n"
"	process them again.\n"
"\n"
"	The -n flag previews the operation without altering files.\n"
"\n"
"	The -N flag previews the operation with additional information about\n"
"	any non-content resolve actions that are scheduled.\n"
"\n"
"	The -o flag displays the base file name and revision to be used\n"
"	during the the merge.\n"
"\n"
"	The -t flag forces 'p4 resolve' to attempt a textual merge, even for\n"
"	files with non-text (binary) types.\n"
"\n"
"	The -v flag causes 'p4 resolve' to insert markers for all changes,\n"
"	not just conflicts.\n"
"\n"
"	The -c flag limits 'p4 resolve' to the files in changelist#.\n"
"\n"
"	'p4 resolve' is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpResolved = { ErrorOf( ES_HELP, 72, E_INFO, EV_NONE, 0  ), 
"\n"
"    resolved -- Show files that have been resolved but not submitted\n"
"\n"
"    p4 resolved [-o] [file ...]\n"
"\n"
"	'p4 resolved' lists file updates and integrations that have been \n"
"	resolved but not yet submitted.  To see unresolved integrations, \n"
"	use 'p4 resolve -n'.  To see already submitted integrations, use \n"
"	'p4 integrated'.\n"
"\n"
"	If a depot file path is specified, the output lists resolves for\n"
"	'theirs' files that match the specified path.  If a client file\n"
"	path is specified, the output lists resolves for 'yours' files\n"
"	that match the specified path.\n"
"\n"
"	The -o flag reports the revision used as the base during the\n"
"	resolve.\n"
};

ErrorId MsgHelp::HelpRestore = { ErrorOf( ES_HELP, 126, E_INFO, EV_NONE, 0  ),
"\n"
"    restore -- Restore revisions from an archive depot.\n"
"\n"
"    p4 restore [-n] -D <depot> file[revRange] ...\n"
"\n"
"	Moves previously archived revisions from the specified archive depot\n"
"	back to their original locations. The revision's action is set to\n"
"	its original value (add/edit/etc.).\n"
"\n"
"	The -n flag displays a preview of the operation.\n"
"\n"
"	The storage for the archive depot must be mounted before running this\n"
"	command (except for preview).\n"
"\n"
"	'p4 restore' requires 'admin' access, which is granted using 'p4\n"
"	protect'.\n"
};

ErrorId MsgHelp::HelpRetype = { ErrorOf( ES_HELP, 103, E_INFO, EV_NONE, 0  ), 
"\n"
"    retype -- Change rev type or archive (storage) type (unsupported)\n"
"\n"
"    p4 retype [-l -n] -t filetype file[revRange]\n"
"\n"
"	Retype changes the filetype of each revision of the named files\n"
"	to the new specified filetype. 'filetype' may be a full or partial\n"
"	filetype.  See 'p4 help filetypes'.\n"
"\n"
"	The -l flag causes retype to change the archive (storage) type\n"
"	of the revisions instead.  This involves actually moving the\n"
"	revision contents in the server archive.  If there are any lazy\n"
"	copies of the revisions, they are updated as well.  Note that\n"
"	changing the archive type to purge old revisions using the +S\n"
"	modifier or xtempobj is not allowed, as this would result in\n"
"	purging server archive files.  The effects of retype -l can be\n"
"	viewed with 'p4 fstat -Oc' (undocumented).  Note that to change\n"
"	both the filetype and the storage type, 'p4 retype' must be run\n"
"	twice: once without and once with the -l flag.\n"
"\n"
"	The -n flag previews the operation.\n"
"\n"
"	'p4 retype' ignores files from remote depots.\n"
"\n"
"	'p4 retype' does not purge older revisions when a filetype is\n"
"	retyped to a '+Sn' type. Subsequent edits cause revisions to be\n"
"	purged.\n"
"\n"
"	After changing the type of a file, any client workspaces which\n"
"	currently have this file should be refreshed by issuing\n"
"	'p4 sync file#none' followed by 'p4 sync file', to ensure that the\n"
"	client copy of the file reflects the new filetype.\n"
"\n"
"	'p4 retype' requires 'admin' access, which is granted by 'p4 protect'.\n"
"\n"
"	'p4 retype' is unsupported, because it cannot safely run concurrently\n"
"	with other 'p4 retype', 'p4 snap', or 'p4 obliterate' commands.\n"
};

ErrorId MsgHelp::HelpRevert = { ErrorOf( ES_HELP, 73, E_INFO, EV_NONE, 0  ), 
"\n"
"    revert -- Discard changes from an opened file\n"
"\n"
"    p4 revert [-a -n -k -w -c changelist# -C client] [--remote=rmt] file ...\n"
"\n"
"	Revert an open file to the revision that was synced from the depot,\n"
"	discarding any edits or integrations that have been made.  You must\n"
"	explicitly specify the files to be reverted.  Files are removed from\n"
"	the changelist in which they are open.  Locked files are unlocked.\n"
"\n"
"	The -a flag reverts only files that are open for edit, add, or\n"
"	integrate and are unchanged or missing. Files with pending\n"
"	integration records are left open. The file arguments are optional\n"
"	when -a is specified.\n"
"\n"
"	The -n flag displays a preview of the operation.\n"
"\n"
"	The -k flag marks the file as reverted in server metadata without\n"
"	altering files in the client workspace.\n"
"\n"
"	The -w flag causes files that are open for add to be deleted from the\n"
"	workspace when they are reverted.\n"
"\n"
"	The -c flag reverts files that are open in the specified changelist.\n"
"\n"
"	The -C flag allows a user to specify the workspace that has the file\n"
"	opened rather than defaulting to the current client workspace. When\n"
"	this option is used, the '-k' flag is also enabled and the check for\n"
"	matching user is disabled. The -C flag requires 'admin' access, which\n"
"	is granted by 'p4 protect'.\n"
"\n"
"	The --remote flag is useful for DVCS configurations in which files\n"
"	of type +l are in use. 'p4 revert --remote=origin filename' reverts\n"
"	the named file in your DVCS server, and additionally, if the file is\n"
"	of type +l, releases the global exclusive lock on the file in the\n"
"	origin server.\n"
};

ErrorId MsgHelp::HelpReview = { ErrorOf( ES_HELP, 74, E_INFO, EV_NONE, 0  ), 
"\n"
"    review -- List and track changelists (for the review daemon)\n"
"\n"
"    p4 review [-c changelist#] [-t counter]\n"
"\n"
"	'p4 review' lists changelists that have not been reviewed before,\n"
"	as tracked by the specified counter.  If the counter is omitted,\n"
"	'p4 review' lists all changelists.  (If a changelist# and counter\n"
"	are specified, 'p4 review' sets the counter to that changelist# and\n"
"	produces no output.  This functionality has been superceded by the\n"
"	'p4 counter' command.)\n"
"\n"
"	'p4 review' is not meant as an end-user command.  It exists to\n"
"	support an automated change review daemon.\n"
};

ErrorId MsgHelp::HelpReviews = { ErrorOf( ES_HELP, 75, E_INFO, EV_NONE, 0  ), 
"\n"
"    reviews -- List the users who are subscribed to review files\n"
"\n"
"    p4 reviews [-C client] [-c changelist#] [file ...]\n"
"\n"
"	'p4 reviews' lists all users who have subscribed to review the\n"
"	specified files.\n"
"\n"
"	The -c flag limits the files to the submitted changelist.\n"
"\n"
"	The -C flag limits the files to those opened in the specified clients\n"
"	workspace,  when used with the -c flag limits the workspace to files\n"
"	opened in the specified changelist.\n"
"\n"
"	To subscribe to review files, issue the 'p4 user' command and edit\n"
"	the 'Reviews field'.\n"
};

ErrorId MsgHelp::HelpSearch = { ErrorOf( ES_HELP, 100, E_INFO, EV_NONE, 0  ), 
"\n"
"    search -- Search index (unsupported)\n"
"\n"
"    p4 search [-m max] words\n"
"\n"
"	Search is an interface to the search engine that searches jobs.\n"
"	This command lists any index keys that contain the specified words.\n"
"\n"
"	The -m flag limits search to the first 'max' number of jobs.\n"
"\n"
"	See also 'p4 help index'.\n"
};

ErrorId MsgHelp::HelpSnap = { ErrorOf( ES_HELP, 102, E_INFO, EV_NONE, 0  ), 
"\n"
"    snap -- Snap (undo) archive lazy copies (unsupported)\n"
"\n"
"    p4 snap [-n] file[revRange] ... [archivePath]\n"
"\n"
"	Snap scans the specified file revisions for any revision that has\n"
"	an archive file that is a lazy copy.  For each of these files the\n"
"	contents are copied into their own archive file, and the file is\n"
"	updated to reflect that it is no longer a lazy copy.\n"
"\n"
"	This operation increases the amount of space required for the archive\n"
"	but ensures that (manually) deleting any other part of the archive\n"
"	does not affect the specified revisions.\n"
"\n"
"	If the archivePath argument is specified, only those file revisions\n"
"	that have lazy copies of archives in that archive path are copied.\n"
"	The archive path of a particular file revision can be viewed with\n"
"	'p4 fstat -Oc' (undocumented).\n"
"\n"
"	For example, if you intend to (manually) delete the archives for\n"
"	'//olddepot', but you know that some number of integrations were\n"
"	performed from '//olddepot' to '//depot2', you might do\n"
"\n"
"		'p4 snap //depot2/... //olddepot/...'\n"
"\n"
"	Since 'p4 snap' does not remove the archives from '//olddepot', but\n"
"	only creates the new archives in '//depot2', you will need to run\n"
"	'p4 obliterate' on the files in '//olddepot' after you have run\n"
"	'p4 snap' in order to clean up the '//olddepot' contents.\n"
"\n"
"	The -n flag previews the operation without copying files or changing\n"
"	metadata.\n"
"\n"
"	'p4 snap' requires 'admin' access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpSet = { ErrorOf( ES_HELP, 76, E_INFO, EV_NONE, 0  ), 
"\n"
"    set -- Set or display Perforce variables\n"
"\n"
"    p4 set [-q] [-s -S service] [var=[value]]\n"
"\n"
"	'p4 set' can set Perforce variables in persistent storage.\n"
"\n"
"	With no arguments, 'p4 set' lists variable settings.\n"
"\n"
"	The -q flag removes the origins of the settings from the list output.\n"
"\n"
"	On Windows, 'p4 set' sets Perforce variables in the Windows registry\n"
"	to the specified values. If you omit the value, the variable is unset.\n"
"	On other platforms, 'p4 set' sets Perforce variables in the P4ENVIRO\n"
"	file.\n"
"\n"
"	The -s flag sets variables for the whole system rather than for the\n"
"	user.  This option requires NT administrator privilege.\n"
"\n"
"	The -S service flag sets variables for the specified service. This\n"
"	option requires NT administrator privilege.\n"
"\n"
"	Registry/P4ENVIRO variable entries can be overridden by environment\n"
"	variables and (in some cases) flags on the command line. See 'p4 help\n"
"	environment' for a list of environment variables used by Perforce.\n"
"\n"
"	Certain Perforce variables can also be set persistently by using\n"
"	configuration files named by the P4CONFIG variable. These settings\n"
"	have higher precedence than environment/registry variables, but lower\n"
"	precedence than command line flags. P4CONFIG file variable settings\n"
"	only affect Perforce client programs; servers do not use them.\n"
"\n"
"	Since Perforce variables can be set in multiple locations, you should\n"
"	examine the output of 'p4 set' carefully; a variable set in one\n"
"	location may be overriding a variable set in a lower-precedence\n"
"	location.\n"
};

ErrorId MsgHelp::HelpShelve = { ErrorOf( ES_HELP, 119, E_INFO, EV_NONE, 0  ), 
"\n"
"    shelve -- Store files from a pending changelist into the depot\n"
"\n"
"    p4 shelve [-Af] [-p] [files]\n"
"    p4 shelve [-Af] [-a option] [-p] -i [-f | -r]\n"
"    p4 shelve [-Af] [-a option] [-p] -r -c changelist#\n"
"    p4 shelve [-Af] [-a option] [-p] -c changelist# [-f] [file ...]\n"
"    p4 shelve [-As] -d -c changelist# [-f] [file ...]\n"
"\n"
"	'p4 shelve' creates, modifies or deletes shelved files in a pending\n"
"	changelist. Shelved files remain in the depot until they are deleted\n"
"	(using 'p4 shelve -d') or replaced by subsequent shelve commands.\n"
"	After 'p4 shelve', the user can revert the files and restore them\n"
"	later using 'p4 unshelve'.  Other users can 'p4 unshelve' the stored\n"
"	files into their own workspaces.\n"
"\n"
"	Files that have been shelved can be accessed by the 'p4 diff',\n"
"	'p4 diff2', 'p4 files' and 'p4 print' commands using the revision\n"
"	specification '@=change', where 'change' is the pending changelist\n"
"	number.\n"
"\n"
"	By default, 'p4 shelve' creates a changelist, adds files from the\n"
"	user's default changelist, then shelves those files in the depot.\n"
"	The user is presented with a text changelist form displayed using\n"
"	the editor configured using the $P4EDITOR environment variable.\n"
"\n"
"	If a file pattern is specified, 'p4 shelve' shelves the files that\n"
"	match the pattern.\n"
"\n"
"	The -Af flag specifies that only files should be shelved with this\n"
"	changelist; by default, if the stream spec is open, it will also be\n"
"	included with any shelved changelist.  (See 'p4 help streamcmds.)\n"
"\n"
"	The -i flag reads the pending changelist specification with shelved\n"
"	files from the standard input.  The user's editor is not invoked.\n"
"	To modify an existing changelist with shelved files, specify the\n"
"	changelist number using the -c flag.\n"
"\n"
"	The -c flag specifies the pending changelist that contains shelved\n"
"	files to be created, deleted, or modified. Only the user and client\n"
"	of the pending changelist can add or modify its shelved files. Any\n"
"	files specified by the file pattern must already be opened in the\n"
"	specified changelist; use 'p4 reopen' to move an opened file from\n"
"	one changelist to another.\n"
"\n"
"	The -f (force) flag must be used with the -c or -i flag to overwrite\n"
"	any existing shelved files in a pending changelist.\n"
"\n"
"	The -r flag (used with -c or -i) enables you to replace all shelved\n"
"	files in that changelist with the files opened in your own workspace\n"
"	at that changelist number.  Previously shelved files will be deleted.\n"
"	Only the user and client workspace of the pending changelist can\n"
"	replace its shelved files.\n"
"\n"
"	The -a flag enables you to handle unchanged files similarly to some\n"
"	client submit options, namely 'submitunchanged' and 'leaveunchanged'.\n"
"	The default behavior of shelving all files corresponds to the\n"
"	'submitunchanged' option. The 'leaveunchanged' option only shelves\n"
"	changed files, and then leaves the files opened in the pending\n"
"	changelist on the client.\n"
"\n"
"	The -d flag (used with -c) deletes the shelved files in the specified\n"
"	changelist so that they can no longer be unshelved.  By default, only\n"
"	the user and client of the pending changelist can delete its shelved\n"
"	files. A user with 'admin' access can delete shelved files by including\n"
"	the -f flag to force the operation.\n"
"\n"
"	If the shelved changelist includes a stream spec, by default it is\n"
"	deleted when all files have been deleted; the -As flag forces the\n"
"	the stream spec to be deleted even if files remain.\n"
"\n"
"	The -p flag promotes a shelved change from an edge server to a commit\n"
"	server where it can be accessed by other edge servers participating\n"
"	in the distributed configuration.  Once a shelved change has been\n"
"	promoted, all subsequent local modifications to the shelf are also\n"
"	pushed to the commit server and remain until the shelf is deleted.\n"
"	Once a shelf has been created, the combination of flags '-p -c' will\n"
"	promote the shelf without modification unless '-f' or '-r' are also\n"
"	used to update the shelved files before promotion.\n"
"\n"
"	'p4 shelve' is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpSubmit = { ErrorOf( ES_HELP, 77, E_INFO, EV_NONE, 0  ), 
"\n"
"    submit -- Submit open files to the depot\n"
"\n"
"    p4 submit [-Af -r -s -f option --noretransfer 0|1]\n"
"    p4 submit [-Af -r -s -f option] file\n"
"    p4 submit [-Af -r -f option] -d description\n"
"    p4 submit [-Af -r -f option] -d description file\n"
"    p4 submit [-Af -r -f option --noretransfer 0|1] -c changelist#\n"
"    p4 submit -e shelvedChange#\n"
"    p4 submit -i [-Af -r -s -f option]\n"
"              --parallel=threads=N[,batch=N][,min=N]\n"
"\n"
"	'p4 submit' commits a pending changelist and its files to the depot.\n"
"\n"
"	By default, 'p4 submit' attempts to submit all files in the 'default'\n"
"	changelist.  Submit displays a dialog where you enter a description\n"
"	of the change and, optionally, delete files from the list of files\n"
"	to be checked in. \n"
"\n"
"	To add files to a changelist before submitting, use any of the \n"
"	commands that open client workspace files: 'p4 add', 'p4 edit',\n"
"	etc.\n"
"\n"
"	If the file parameter is specified, only files in the default\n"
"	changelist that match the pattern are submitted.\n"
"\n"
"	Files in a stream path can be submitted only by client workspaces\n"
"	dedicated to the stream. See 'p4 help client'.\n"
"\n"
"	Before committing a changelist, 'p4 submit' locks all the files being\n"
"	submitted. If any file cannot be locked or submitted, the files are \n"
"	left open in a numbered pending changelist. By default, the files in\n"
"	a failed submit operation are left locked unless the\n"
"	submit.unlocklocked configurable is set. Files are unlocked even if\n"
"	they were manually locked prior to submit if submit fails when\n"
"	submit.unlocklocked is set. 'p4 opened' shows unsubmitted files\n"
"	and their changelists.\n"
"\n"
"	Submit is atomic: if the operation succeeds, all files are updated\n"
"	in the depot. If the submit fails, no depot files are updated.\n"
"\n"
"	If submit fails, some or all of the files may have been copied to\n"
"	the server. By default, retrying a failed submit will transfer all of\n"
"	the files again unless the submit.noretransfer configurable is set.\n"
"	If submit.noretransfer is set to 1, submit uses digest comparisons to\n"
"	to detect if the files have already been transferred in order to\n"
"	avoid file re-transfer when retrying a failed submit.\n"
"\n"
"	The --noretransfer flag is used to override the submit.noretransfer\n"
"	configurable so the user can choose his preferred re-transfer\n"
"	behavior during the current submit operation.\n"
"\n"
"	The -Af flag specifies that only files should be submitted with this\n"
"	changelist; by default, if the stream spec is open, it will be\n"
"	included with the next submit.  (See 'p4 help streamcmds.)\n"
"\n"
"	The -c flag submits the specified pending changelist instead of the\n"
"	default changelist. Additional changelists can be created manually, \n"
"	using the 'p4 change' command, or automatically as the result of a \n"
"	failed attempt to submit the default changelist.\n"
"\n"
"	The -e flag submits a shelved changelist without transferring files\n"
"	or modifying the workspace. The shelved change must be owned by\n"
"	the person submitting the change, but the client may be different.\n"
"	However, files shelved to a stream target may only be submitted by\n"
"	a stream client that is mapped to the target stream. In addition,\n"
"	files shelved to a non-stream target cannot be submitted by a stream\n"
"	client. To submit a shelved change, all files in the shelved change\n"
"	must be up to date and resolved. No files may be open in any workspace\n"
"	at the same change number. Client submit options (ie revertUnchanged,\n"
"	etc) will be ignored. If the submit is successful, the shelved change\n"
"	and files are cleaned up, and are no longer available to be unshelved\n"
"	or submitted.\n"
"\n"
"	The -d flag passes a description into the specified changelist rather\n"
"	than displaying the changelist dialog for manual editing. This option\n"
"	is useful for scripting, but does not allow you to add jobs or modify\n"
"	the default changelist.\n"
"\n"
"	The -f flag enables you to override submit options that are configured\n"
"	for the client that is submitting the changelist.  This flag overrides\n"
"	the -r (reopen)flag, if it is specified.  See 'p4 help client' for\n"
"	details about submit options.\n"
"\n"
"	The -i flag reads a changelist specification from the standard input.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -r flag reopens submitted files in the default changelist after\n"
"	submission.\n"
"\n"
"	The -s flag extends the list of jobs to include the fix status\n"
"	for each job, which becomes the job's status when the changelist\n"
"	is committed.  See 'p4 help change' for details.\n"
"\n"
"	The --parallel flag specifies options for parallel file transfer. If\n"
"	parallel file transfer has been enabled by setting the\n"
"	net.parallel.max configurable, and if there are sufficient resources\n"
"	across the system, a submit command may execute more rapidly by\n"
"	transferring multiple files in parallel. Specify threads=N to request\n"
"	files be sent concurrently, using N independent network connections.\n"
"	The N threads grab work in batches; specify batch=N to control the\n"
"	number of files in a batch. A submit that is too small will not\n"
"	initiate parallel file transfers; specify min=N to control the\n"
"	minimum number of files in a parallel submit. Requesting progress\n"
"	indicators causes the --parallel flag to be ignored.\n"
"\n"
"	Using --parallel from an edge server allows parallel file transfer\n"
"	from the edge server to the commit server. This uses standard pull\n"
"	threads to transfer the files. Note that an administrator must ensure\n"
"	that pull threads can be run on the commit server. The address\n"
"	used by the commit server to connect to the edge server must\n"
"	be specified in the ExternalAddress field of the edge server spec.\n"	
"	Note that parallel submit is not supported from an edge server if\n"
"	the commit server is on a Windows platform. In this case --parallel\n"
"	or auto	parallel submit will be silently ignored, and the submit\n"
"	will run without using parallel threads.\n"
"\n"	
"	Auto parallel submit may be enabled by setting the\n"
"	net.parallel.submit.threads configurable to the desired number\n"
"	of threads to be used for all submit commands. This value must be\n"
"	less than or equal to the value of net.parallel.max. Other\n"
"	net.parallel.submit.* configurables may be specified as well, but\n"
"	are not required. See 'p4 help configurables' to see the options\n"
"	and their defaults. Auto parallel submit is turned off by unsetting\n"
"	the net.parallel.submit.threads configurable. A user may override\n"
"	the configured auto parallel submit options on the command line,\n"
"	or may disable it via 'p4 submit --parallel=0`.\n"
"\n"
"	Only 'submit -e' is supported for files with propagating attributes\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpSpec = { ErrorOf( ES_HELP, 99, E_INFO, EV_NONE, 0  ), 
"\n"
"    spec -- Edit spec comments and formatting hints (unsupported)\n"
"\n"
"    p4 spec [-d -i -o] type\n"
"\n"
"	Edit any type of specification: branch, change, client, depot,\n"
"	group, job, label, spec, stream, triggers, typemap, or user. Only\n"
"	the comments and the formatting hints can be changed. Any fields\n"
"	that you add during editing are discarded when the spec is saved.\n"
"\n"
"	'p4 jobspec' is equivalent to 'p4 spec job', and any custom spec\n"
"	(including the job spec) can be deleted with 'p4 spec -d type'.\n"
};

ErrorId MsgHelp::HelpSync = { ErrorOf( ES_HELP, 78, E_INFO, EV_NONE, 0  ), 
"\n"
"    sync -- Synchronize the client with its view of the depot\n"
"    flush -- synonym for 'sync -k'\n"
"    update -- synonym for 'sync -s'\n"
"\n"
"    p4 sync [-f -L -n -N -k -q -r] [-m max] [file[revRange] ...]\n"
"    p4 sync [-L -n -N -q -s] [-m max] [file[revRange] ...]\n"
"    p4 sync [-L -n -N -p -q] [-m max] [file[revRange] ...]\n"
"            --parallel=threads=N[,batch=N][,batchsize=N][,min=N][,minsize=N]\n"
"\n"
"	Sync updates the client workspace to reflect its current view (if\n"
"	it has changed) and the current contents of the depot (if it has\n"
"	changed). The client view maps client and depot file names and\n"
"	locations.\n"
"\n"
"	Sync adds files that are in the client view and have not been\n"
"	retrieved before.  Sync deletes previously retrieved files that\n"
"	are no longer in the client view or have been deleted from the\n"
"	depot.  Sync updates files that are still in the client view and\n"
"	have been updated in the depot.\n"
"\n"
"	By default, sync affects all files in the client workspace. If file\n"
"	arguments are given, sync limits its operation to those files.\n"
"	The file arguments can contain wildcards.\n"
"\n"
"	If the file argument includes a revision specifier, then the given\n"
"	revision is retrieved.  Normally, the head revision is retrieved.\n"
"	See 'p4 help revisions' for help specifying revisions.\n"
"\n"
"	If the file argument includes a revision range specification,\n"
"	only files selected by the revision range are updated, and the\n"
"	highest revision in the range is used.\n"
"\n"
"	Normally, sync does not overwrite workspace files that the user has\n"
"	manually made writable.  Setting the 'clobber' option in the\n"
"	client specification disables this safety check.\n"
"\n"
"	The -f flag forces resynchronization even if the client already\n"
"	has the file, and overwriting any writable files.  This flag doesn't\n"
"	affect open files.\n"
"\n"
"	The -L flag can be used with multiple file arguments that are in\n"
"	full depot syntax and include a valid revision number. When this\n"
"	flag is used the arguments are processed together by building an\n"
"	internal table similar to a label. This file list processing is\n"
"	significantly faster than having to call the internal query engine\n"
"	for each individual file argument. However, the file argument syntax\n"
"	is strict and the command will not run if an error is encountered.\n"
"\n"
"	The -n flag previews the operation without updating the workspace.\n"
"\n"
"	The -N flag also previews the operation without updating the\n"
"	workspace, but reports only a summary of the work the sync would do.\n"
"\n"
"	The -k flag updates server metadata without syncing files. It is\n"
"	intended to enable you to ensure that the server correctly reflects\n"
"	the state of files in the workspace while avoiding a large data\n"
"	transfer. Caution: an erroneous update can cause the server to\n"
"	incorrectly reflect the state of the workspace.\n"
"\n"
"	The -p flag populates the client workspace, but does not update the\n"
"	server to reflect those updates.  Any file that is already synced or\n"
"	opened will be bypassed with a warning message.  This option is very\n"
"	useful for build clients or when publishing content without the\n"
"	need to track the state of the client workspace.\n"
"\n"
"	The -q flag suppresses normal output messages. Messages regarding\n"
"	errors or exceptional conditions are not suppressed.\n"
"\n"
"	The -r flag allows open files which are mapped to new locations\n"
"	in the depot to be reopened in the new location.  By default, open\n"
"	workspace files remain associated with the depot files that they were\n"
"	originally opened as.\n"
"\n"
"	The -s flag adds a safety check before sending content to the client\n"
"	workspace.  This check uses MD5 digests to compare the content on the\n"
"	clients workspace against content that was last synced.  If the file\n"
"	has been modified outside of Perforce's control then an error message\n"
"	is displayed and the file is not overwritten.  This check adds some\n"
"	extra processing which will affect the performance of the operation.\n"
"	Clients with 'allwrite' and 'noclobber' set do this check by default.\n"
"\n"
"	The -m flag limits sync to the first 'max' number of files. This\n"
"	option is useful in conjunction with tagged output and the '-n'\n"
"	flag, to preview how many files will be synced without transferring\n"
"	all the file data.\n"
"\n"
"	The --parallel flag specifies options for parallel file transfer. If\n"
"	your administrator has enabled parallel file transfer by setting the\n"
"	net.parallel.max configurable, and if there are sufficient resources\n"
"	across the system, a sync command may execute more rapidly by\n"
"	transferring multiple files in parallel. Specify threads=N to request\n"
"	files be sent concurrently, using N independent network connections.\n"
"	The N threads grab work in batches; specify batch=N to control the\n"
"	number of files in a batch, or batchsize=N to control the number of\n"
"	bytes in a batch. A sync that is too small will not initiate parallel\n"
"	file transfers; specify min=N to control the minimum number of files\n"
"	in a parallel sync, or minsize=N to control the minimum number of\n"
"	bytes in a parallel sync. Requesting progress indicators causes the\n"
"	--parallel flag to be ignored.\n"
"\n"
"	Auto parallel sync may be enabled by setting the net.parallel.threads\n"
"	configurable to the desired number of threads to be used by all sync\n"
"	commands. This value must be less than or equal to the value of\n"
"	net.parallel.max. Other net.parallel.* configurables may be specified\n"
"	as well, but are not required. See 'p4 help configurables' to see\n"
"	the options and their defaults. Auto parallel sync is turned off by\n"
"	unsetting the net.parallel.threads configurable. A user may override\n"
"	the configured auto parallel sync options on the command line, or may\n"
"	disable it via 'p4 sync --parallel=0'.\n"
};

ErrorId MsgHelp::HelpTag = { ErrorOf( ES_HELP, 91, E_INFO, EV_NONE, 0  ), 
"\n"
"    tag -- Tag files with a label\n"
"\n"
"    p4 tag [-d -g -n -U] -l label file[revRange] ...\n"
"\n"
"	Tag associates the named label with the file revisions specified by\n"
"	the file argument.  After file revisions are tagged with a label,\n"
"	revision specifications of the form '@label' can be used to refer\n"
"	to them.\n"
"\n"
"	If the file argument does not include a revision specification, the\n"
"	head revisions is tagged.  See 'p4 help revisions' for revision\n"
"	specification options.\n"
"\n"
"	If the file argument includes a revision range specification, only\n"
"	the files with revisions in that range are tagged.  Files with more\n"
"	than one revision in the range are tagged at the highest revision.\n"
"\n"
"	The -d deletes the association between the specified files and the\n"
"	label, regardless of revision.\n"
"\n"
"	The -n flag previews the results of the operation.\n"
"\n"
"	Tag can be used with an existing label (see 'p4 help labels') or\n"
"	with a new one.  An existing label can be used only by its owner,\n"
"	and only if it is unlocked. (See 'p4 help label').\n"
"\n"
"	The -U flag specifies that the new label should be created with the\n"
"	'autoreload' option (See 'p4 help label'). It has no effect on an\n"
"	existing label.\n"
"\n"
"	To list the file revisions tagged with a label, use 'p4 files\n"
"	@label'.\n"
"\n"
"	The -g flag is used on an Edge Server to update a global label.\n"
"	Configuring rpl.labels.global=1 reverses this default and causes this\n"
"	flag to have the opposite meaning.\n"
};

ErrorId MsgHelp::HelpTickets = { ErrorOf( ES_HELP, 92, E_INFO, EV_NONE, 0  ),
"\n"
"    tickets -- Display list of session tickets for this user\n"
"\n"
"    p4 tickets\n"
"\n"
"	'p4 tickets' lists all the tickets that have been granted to the\n"
"	user by 'p4 login'.\n"
};

ErrorId MsgHelp::HelpTrigger = { ErrorOf( ES_HELP, 79, E_INFO, EV_NONE, 0  ), 
"\n"
"    trigger -- see 'p4 help triggers'\n"
};

ErrorId MsgHelp::HelpTriggers = { ErrorOf( ES_HELP, 80, E_INFO, EV_NONE, 0  ), 
"\n"
"    triggers -- Modify list of server triggers\n"
"\n"
"    p4 triggers\n"
"    p4 triggers -o\n"
"    p4 triggers -i\n"
"\n"
"	'p4 triggers' edits the table of triggers, which are used for\n"
"	change submission validation, form validation, external authentication,\n"
"	external job fix integration, external archive integration, and command\n"
"	policies.\n"
"\n"
"	Triggers are administrator-defined commands that the server runs\n"
"	to perform the following:\n"
"\n"
"	Validate changelist submissions.\n"
"\n"
"	    The server runs changelist triggers before the file transfer,\n"
"	    between file transfer and changelist commit, upon commit failure,\n"
"	    or after the commit.\n"
"\n"
"	Validate shelve operations.\n"
"\n"
"	    The server runs shelve triggers before files are shelved, after\n"
"	    files are shelved, or when shelved files have been discarded\n"
"	    (via shelve -d).\n"
"\n"
"	Manipulate and validate forms.\n"
"\n"
"	    The server runs form-validating triggers between generating\n"
"	    and outputting the form, between inputting and parsing the\n"
"	    form, between parsing and saving the form, or when deleting\n"
"	    the form.\n"
"\n"
"	Authenticate or change a user password.\n"
"\n"
"	    The server runs authentication triggers to either validate\n"
"	    a user password during login or when setting a new password.\n"
"\n"
"	Intercept job fix additions or deletions.\n"
"\n"
"	    The server run fix triggers prior to adding or deleting a fix\n"
"	    between a job and changelist.\n"
"\n"
"	Access external archive files.\n"
"\n"
"	    For files with the +X filetype modifier, the server runs an\n"
"	    archive trigger to read, write, or delete files in the archive.\n"
"\n"
"	Command execution policy.\n"
"\n"
"	    Command triggers can be specified to run before and after\n"
"	    processing of user requests.  Pre-execution triggers can\n"
"	    prevent the command from running.\n"
"\n"
"	Server maintenance.\n"
"\n"
"	    Journal rotation triggers can be specified to run after the\n"
"	    journals have rotated to the target server. These will only run\n"
"	    when the journal rotation is triggered by 'p4 admin journal',\n"
"	    'p4 admin checkpoint' or on replicas when they rotate to match\n"
"	    the master.\n"
"\n"
"	The trigger form has a single entry 'Triggers:', followed by any\n"
"	number of trigger lines.  Each trigger line must be indented with\n"
"	spaces or tabs in the form. Triggers are executed in the order listed\n"
"	and if a trigger fails, subsequent triggers are not run.  A trigger\n"
"	succeeds if the executed command exits returning 0 and fails otherwise.\n"
"	Normally the failure of a trigger prevents the operation from\n"
"	completing, except for the commit and journal triggers, which run after\n"
"	the operation is complete, or the change-failed trigger which is only\n"
"	advisory.\n"
"\n"
"	Each trigger line contains a trigger name, a trigger type, a depot\n"
"	file path pattern matching where the trigger will be executed, a\n"
"	command name or form type and a command to run.\n"
"\n"
"	Name:   The name of the trigger.  For change triggers, a run of the\n"
"		same trigger name on contiguous lines is treated as a single\n"
"		trigger so that multiple paths can be specified.  Only the\n"
"		command of the first such trigger line is used.\n"
"\n"
"	Type:	When the trigger is to execute:\n"
"\n"
"		archive:\n"
"		    Execute an archive trigger for the server to access\n"
"		    any file with the +X filetype modifier.\n"
"\n"
"		auth-check:\n"
"		service-check:\n"
"		    Execute an authentication check trigger to verify a\n"
"		    user's password against an external password manager\n"
"		    during login or when setting a new password.\n"
"\n"
"		auth-check-sso:\n"
"		    Facilitate a single sign-on user authentication. This\n"
"		    configuration requires two programs or scripts to run;\n"
"		    one on the client, the other on the server.\n"
"\n"
"		    client:\n"
"		        Set the environment variable 'P4LOGINSSO' to point to\n"
"		        a script that can be executed to obtain the user's\n"
"		        credentials or other information that the server\n"
"		        trigger can verify.  The client-side script must\n"
"		        write the message to the standard output\n"
"		        (max length 128K).\n"
"\n"
"		        Example:  P4LOGINSSO=/Users/joe/bin/runsso\n"
"\n"
"		        The two variables available to this trigger are\n"
"		        %%P4PORT%% and %%serverAddress%%.  The distinction is\n"
"		        that serverAddress is the address of the target server\n"
"		        and the P4PORT is what the client is connecting to,\n"
"		        which might be an intermediate like a Perforce Proxy.\n"
"\n"
"		        These variables can be passed to the client script by\n"
"		        appending them to the client command string, as in:\n"
"\n"
"		        P4LOGINSSO=\"/Users/joe/bin/runsso %%serverAddress%%\"\n"
"\n"
"		    server:\n"
"		        Execute an authentication (sso) trigger that gets\n"
"		        this message from the standard input and returns an\n"
"		        exit status of 0 (for verified) or otherwise failed.\n"
"\n"
"		        Example:\n"
"		            sso auth-check-sso auth \"/secure/verify %%user%%\"\n"
"\n"
"		    The user must issue the 'p4 login' command, but no\n"
"		    password prompting is invoked.  If the server\n"
"		    determines that the user is valid, they are issued a\n"
"		    Perforce ticket just as if they had logged in with a\n"
"		    password.\n"
"\n"
"		    Pre-2007.2 clients cannot run a client-side single\n"
"		    sign-on.  Specifying an 'auth-check' trigger as a backup\n"
"		    for a user to gain access will prompt the user for a\n"
"		    password if it's an older client or P4LOGINSSO has not\n"
"		    been configured.\n"
"\n"
"		    Unlike passwords which are encrypted, the sso message is\n"
"		    sent to the server in clear text.\n"
"\n"
"		auth-set:\n"
"		    Execute an authentication set trigger to send a new\n"
"		    password to an external password manager.\n"
"\n"
"		change-submit:\n"
"		    Execute pre-submit trigger after changelist has been\n"
"		    created and files locked but prior to file transfer.\n"
"\n"
"		change-content:\n"
"		    Execute mid-submit trigger after file transfer but prior\n"
"		    to commit.  Files can be accessed by the 'p4 diff2',\n"
"		    'p4 files', 'p4 fstat', and 'p4 print' commands using\n"
"		    the revision specification '@=change', where 'change' is\n"
"		    the pending changelist number passed as %%changelist%%.\n"
"\n"
"		change-commit:\n"
"		    Execute post-submit trigger after changelist commit.\n"
"\n"
"		change-failed:\n"
"		    Executes only if the changelist commit failed.\n"
"		    Note that this trigger only fires on errors\n"
"		    occurring after a commit process has started. It does\n"
"		    not fire for early usage errors, or due to errors from\n"
"		    the submit form. In short, if a change-* trigger\n"
"		    could have run, then the change-failed trigger\n"
"		    will fire if that commit fails.\n"
"\n"
"		command:\n"
"		    Execute pre/post trigger when users run commands.\n"
"\n"
"		edge-submit:\n"
"		    Execute pre-submit trigger on Edge Server after changelist\n"
"		    has been created but prior to file transfer.\n"
"\n"
"		edge-content:\n"
"		    Execute mid-submit trigger on Edge Server after file\n"
"		    transfer but prior to beginning submit on Commit Server.\n"
"\n"
"		fix-add:\n"
"		    Execute fix trigger prior to adding a fix.  The special\n"
"		    variable %%jobs%% is available for expansion and must be\n"
"		    the last argument to the trigger as it expands to one\n"
"		    argument for each job listed on the 'p4 fix' command.\n"
"\n"
"		fix-delete:\n"
"		    Execute fix trigger prior to deleting a fix.  The special\n"
"		    variable %%jobs%% is available for expansion and must be\n"
"		    the last argument to the trigger as it expands to one\n"
"		    argument for each job listed on the 'p4 fix -d' command.\n"
"\n"
"		form-out:\n"
"		    Execute form trigger on generation of form.	 Trigger may\n"
"		    modify form.\n"
"\n"
"		form-in:\n"
"		    Execute form trigger on input of form before its contents\n"
"		    are parsed and validated.  Trigger may modify form.\n"
"\n"
"		form-save:\n"
"		    Execute form trigger prior to save of form after its\n"
"		    contents are parsed.\n"
"\n"
"		form-commit:\n"
"		    Execute form trigger after it has been committed, allowing\n"
"		    access to automatically generated fields (jobname, dates\n"
"		    etc).  It cannot modify the form.  This trigger for job\n"
"		    forms is run by 'p4 job' and 'p4 fix' (after the status\n"
"		    is updated), 'p4 change' (if the job is added or deleted)\n"
"		    and 'p4 submit' (if the job is associated with the change).\n"
"		    The 'form-commit' trigger has access to the new job name\n"
"		    created with 'p4 job', while the 'form-in' and 'form-save'\n"
"		    triggers are run before the job name is created.  The\n"
"		    special variable %%action%% is available on the job\n"
"		    'form-commit' trigger command line, and is expanded when\n"
"		    the job is modified by a fix.\n"
"\n"
"		form-delete:\n"
"		    Execute form trigger prior to delete of form after its\n"
"		    contents are parsed.\n"
"\n"
"		journal-rotate:\n"
"		    Execute journal rotation trigger after the journal has been\n"
"		    rotated and after the database has been unlocked.\n"
"\n"
"		journal-rotate-lock:\n"
"		    Execute journal rotation trigger after the journal has been\n"
"		    rotated, but before the database has been unlocked. All\n"
"		    commands against the server will wait for the trigger to\n"
"		    complete before running: do not run commands against the\n"
"		    server from this trigger.\n"
"\n"
"		shelve-submit:\n"
"		    Execute pre-shelve trigger after changelist has been\n"
"		    created but prior to file transfer. Also executed for\n"
"		    reshelve command.\n"
"\n"
"		shelve-commit:\n"
"		    Execute post-shelve trigger after files are shelved or\n"
"		    reshelved.\n"
"\n"
"		shelve-delete:\n"
"		    Execute shelve trigger prior to discarding shelved files.\n"
"\n"
"		push-submit:\n"
"		    Execute trigger during a push, fetch, or unzip operation,\n"
"		    after changelist has been created on the destination\n"
"		    server and files are locked but prior to file transfer.\n"
"\n"
"		push-content:\n"
"		    Execute trigger during a push, fetch, or unzip operation,\n"
"		    after file transfer but prior to commit. Files can be\n"
"		    accessed by the trigger using any of the 'p4 diff2',\n"
"		    'p4 files', 'p4 fstat', and 'p4 print' commands with\n"
"		    the revision specification '@=change', where 'change' is\n"
"		    the pending changelist number passed as %%changelist%%.\n"
"\n"
"		push-commit:\n"
"		    Execute trigger during a push, fetch, or unzip operation,\n"
"		    after changelist commit.\n"
"\n"
"	Path:   For change and submit triggers, a file pattern to match files\n"
"		in the changelist.  This file pattern can be an exclusion\n"
"		mapping (-pattern), to exclude files.  For form triggers, the\n"
"		name of the form (branch, client, etc).  For fix triggers\n"
"		'fix' is required as the path value.  For authentication\n"
"		triggers, 'auth' is required as the path value. For archive\n"
"		triggers, a file pattern to match the name of the file being\n"
"		accessed in the archive.  Note that, due to lazy copying when\n"
"		branching files, the name of the file in the archive can not\n"
"		be the same as the name of the file in the depot.  For command\n"
"		triggers, use the name of the command to match, e.g.\n"
"		'pre-user-$cmd' or a regular expression, e.g.\n"
"		'(pre|post)-user-add'. For journal rotation triggers, set the\n"
"		path value to 'any' if the trigger should run on all servers or\n"
"		a suitable server.id or cluster.id may be used to restrict the\n"
"		trigger to running on either a specific server or a named\n"
"		group of servers.\n"
"\n"
"	Command: The OS command to run for validation.  If the command\n"
"		contains spaces, enclose it in double quotes.  The\n"
"		following variables are expanded in the command string.\n"
"		Use of the triggers.io configurable with a value greater than\n"
"		zero is recommended, as some vars may be empty or contain\n"
"		shell metacharacters.\n"
"\n"
"		    %%//depot/trigger.exe%% -- depot paths within %%vars%%\n"
"		    are filled with the path to a temporary file containing\n"
"		    the referenced file's contents.  Only standard and stream\n"
"		    depot files whose contents is available are valid.\n"
"		    %%argc%% -- number of command arguments\n"
"		    %%args%% -- command argument string\n"
"		    %%argsQuoted%% -- command argument string, CSV delimited\n"
"		    %%client%% -- the client issuing the command\n"
"		    %%clientcwd%% -- client current working directory\n"
"		    %%clienthost%% -- the hostname of the client\n"
"		    %%clientip%% -- the IP address of the client\n"
"		    %%clientprog%% -- the program name of the client\n"
"		    %%clientversion%% -- the version of the client\n"
"		    %%command%% -- name of command being run\n"
"		    %%groups%% -- list of groups user is a member of\n"
"		    %%intermediateService%% -- presence of a Broker/Proxy/etc\n"
"		    %%maxErrorSeverity%% -- highest error seen for this cmd\n"
"		    %%maxErrorText%% -- text and errno for highest error\n"
"		    %%maxLockTime%% -- user-specified override of group value\n"
"		    %%maxOpenFiles%% -- user-specified override of group value\n"
"		    %%maxResults%% -- user-specified override of group value\n"
"		    %%maxScanRows%% -- user-specified override of group value\n"
"		    %%quote%% -- double quote character\n"
"		    %%serverhost%% -- the hostname of the server\n"
"		    %%serverid%% -- the value of the server's server.id\n"
"		    %%serverip%% -- the IP address of the server\n"
"		    %%servername%% -- the value of the server's $P4NAME\n"
"		    %%serverpid%% -- the PID of the server\n"
"		    %%serverport%% -- the IP address:port of the server\n"
"		                    preceded by the transport prefix,\n"
"		                    if needed (i.e. P4PORT)\n"
"		    %%serverroot%% -- the value of the server's $P4ROOT\n"
"		    %%serverservices%% -- the services provided by the server\n"
"		    %%serverVersion%% -- the server's version string\n"
"		    %%target%% -- target changelist for reshelve command\n"
"		    %%terminated%% -- if the command was forced to quit early\n"
"		    %%termReason%% -- reason for early termination\n"
"		    %%triggerMeta_action%% -- command to execute by trigger\n"
"		    %%triggerMeta_depotFile%% -- third field in trigger def.\n"
"		    %%triggerMeta_name%% -- name from trigger definition\n"
"		    %%triggerMeta_trigger%% -- second field in trigger definition\n"
"		    %%user%% -- the user issuing the command\n"
"\n"
"		    %%changelist%% -- the changelist being submitted\n"
"		    %%changeroot%% -- the root path of files submitted\n"
"		    %%oldchangelist%% -- the pre-commit changelist number\n"
"		                    For push-* triggers, oldchangelist is\n"
"		                    the changelist number in the source\n"
"		                    server."
"\n"
"			(More information can be gathered about the\n"
"			changelist being submitted by running\n"
"			'p4 describe %%changelist%%'.)\n"
"\n"
"		    %%formfile%% -- path to temp file containing form\n"
"		    %%formname%% -- the form's name (branch name, etc)\n"
"		    %%formtype%% -- the type of form (branch, etc)\n"
"		    %%action%% -- added/deleted/submitted on job form-commit\n"
"		    %%specdef%% -- the definition of form's spec\n"
"\n"
"		    %%jobs%% -- list of job names for fix triggers\n"
"\n"
"		    %%op%% -- read/write/delete for archive access\n"
"		    %%file%% -- name of archive file\n"
"		    %%rev%% -- revision of archive file\n"
"\n"
"		    If the command was sent via a proxy, broker, or replica:\n"
"		    %%peerhost%% -- the hostname of the proxy/broker/replica\n"
"		    %%peerip%% -- the IP address of the proxy/broker/replica\n"
"		    If the command was sent directly, %%peerhost%% and\n"
"		    %%peerip%% match %%clienthost%% and %%clientip%%.\n"
"\n"
"		    For a change-* trigger in a distributed installation,\n"
"		    %%submitserverid%% -- the server.id where submit was run\n"
"\n"
"		    For a post-rmt-Push trigger:\n"
"		    %%firstPushedChange%% -- first new changelist number\n"
"		    %%lastPushedChange%% -- last new changelist number\n"
"\n"
"		    For a journal-rotate* trigger:\n"
"		    %%journal%% -- the name of the newly rotated journal\n"
"		    %%checkpoint%% -- the name of the newly created checkpoint\n"
"		                    if a checkpoint was taken during the\n"
"		                    journal rotation\n"
"\n"
"		    Note that not all variables are available for every\n"
"		    trigger type.  E.g. argc and argv only show up for\n"
"		    pre-user-$cmd and change-submit (and so on), but not for\n"
"		    post-user-$cmd or change-commit.\n"
"\n"
"		The command's standard input depends on the value of the\n"
"		triggers.io configurable.  When it is set to zero, stdin is\n"
"		empty for change, shelve, fix and command triggers, it\n"
"		is the file content for the archive, and password for auth\n"
"		triggers.  When triggers.io is set to 1, stdin is a textual\n"
"		dictionary containing connection information that the trigger\n"
"		must read (with the exception of archive/auth triggers,\n"
"		which behave the same as when triggers.io=0.)\n"
"\n"
"		If the command fails, the command's standard output (not\n"
"		error output) is sent to the client as the text of a trigger\n"
"		failure error message.\n"
"\n"
"		If the command succeeds, the command's standard output is\n"
"		sent as an unadorned message to the client for all triggers\n"
"		except archive triggers; for archive triggers, the command's\n"
"		standard output is the file content.\n"
"\n"
"	The -o flag writes the trigger table to the standard output.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -i flag reads the trigger table from the standard input.\n"
"	The user's editor is not invoked.\n"
"\n"
"	'p4 triggers' requires 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpTypeMap = { ErrorOf( ES_HELP, 81, E_INFO, EV_NONE, 0  ), 
"\n"
"    typemap -- Edit the filename-to-filetype mapping table\n"
"\n"
"    p4 typemap\n"
"    p4 typemap -o\n"
"    p4 typemap -i\n"
"\n"
"	'p4 typemap' edits a name-to-type mapping table for 'p4 add', which\n"
"	uses the table to assign a file's filetype based on its name.\n"
"\n"
"	The typemap form has a single field, 'TypeMap', followed by any\n"
"	number of typemap lines.  Each typemap line contains a filetype\n"
"	and a depot file path pattern:\n"
"\n"
"	Filetype:   See 'p4 help filetypes' for a list of valid filetypes.\n"
"\n"
"	Path:       Names to be mapped to the filetype.  The mapping is\n"
"		    a file pattern in depot syntax.  When a user adds a file\n"
"		    matching this pattern, its default filetype is the\n"
"		    file type specified in the table.  To exclude files from\n"
"		    the typemap, use exclusionary (-pattern) mappings.\n"
"		    To match all files anywhere in the depot hierarchy,\n"
"		    the pattern must begin with '//...'.  To match files\n"
"		    with a specified suffix, use '//.../*.suffix' or\n"
"		    use '//....suffix' (four dots).\n"
"\n"
"	Later entries override earlier entries. If no matching entry is found\n"
"	in the table, 'p4 add' determines the filetype by examining the file's\n"
"	contents and execution permission bits.\n"
"\n"
"	The -o flag writes the typemap table to standard output. The user's\n"
"	editor is not invoked.\n"
"\n"
"	The -i flag reads the typemap table from standard input. The user's\n"
"	editor is not invoked.\n"
"\n"
"	'p4 typemap' requires 'admin' access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpUnlock = { ErrorOf( ES_HELP, 82, E_INFO, EV_NONE, 0  ), 
"\n"
"    unlock -- Release a locked file, leaving it open\n"
"\n"
"    p4 unlock [-c | -s changelist# | -x] [-f] [file ...]\n"
"    p4 -c client unlock [-f] -r\n"
"\n"
"	'p4 unlock' releases locks on the specified files.\n"
"\n"
"	The changelist flag and file specification limit the files to be\n"
"	unlocked. If no file specification is given and no changelist is\n"
"	specified, all open files are unlocked.\n"
"\n"
"	If a changelist is specified, only those files open in that\n"
"	changelist are unlocked.\n"
"\n"
"	If a file specification is given, only those files are unlocked.\n"
"\n"
"	If both changelist and file specification are provided, only the\n"
"	matching files in the specified changelist are unlocked.\n"
"\n"
"	The -s flag unlocks files from a shelved changelist caused by an\n"
"	aborted 'submit -e' operation. The -c flag applies to opened files\n"
"	in a pending changelist locked by 'p4 lock' or by a failed submit\n"
"	of a change that is not shelved.\n"
"\n"
"	By default, files can be unlocked only by the changelist owner who\n"
"	must also be the person who has the files locked. The -f flag\n"
"	enables you to unlock files in changelists owned by other users.\n"
"	The -f flag requires 'admin' access, which is granted by 'p4\n"
"	protect'.\n"
"\n"
"	If 'p4 unlock' is called from an Edge Server, any corresponding\n"
"	files locked globally via 'p4 lock -g' by that client will be\n"
"	unlocked on the Commit Server.\n"
"\n"
"	The -x option unlocks files that are opened 'exclusive' but are\n"
"	orphaned (see 'p4 opened -x'). This option only applies to a\n"
"	distributed installation where global tracking of these file types\n"
"	is necessary across servers. On the commit server, an administrator\n"
"	may specify 'p4 -c client unlock -f -x [file...]' to unlock the\n"
"	global exclusive locks of files which aren't marked orphaned.\n"
"\n"
"	If a push command from a remote server to this server fails, files\n"
"	can be left locked on this server, preventing other users from\n"
"	submitting changes to those files. Files may also be left locked on\n"
"	a Commit Server from a failed submit or unlock. In these cases, the\n"
"	user who issued the failed command can specify the -r flag with the\n"
"	name of the client that was used on that remote or commit server to\n"
"	unlock the files on that server. An administrator can run\n"
"	'unlock -f -r' as well.\n"
};

ErrorId MsgHelp::HelpUnshelve = { ErrorOf( ES_HELP, 120, E_INFO, EV_NONE, 0  ), 
"\n"
"    unshelve -- Restore shelved files from a pending change into a workspace\n"
"\n"
"    p4 unshelve -s changelist# [options] [file ...]\n"
"	Options: [-A<f|s> -f -n] [-c changelist#]\n"
"	         [-b branch|-S stream [-P parent]]\n"
"\n"
"	'p4 unshelve' retrieves shelved files from the specified pending\n"
"	changelist, opens them in a pending changelist and copies them\n"
"	to the invoking user's workspace.  Unshelving files from a pending\n"
"	changelist is restricted by the user's permissions on the files.\n"
"	A successful unshelve operation places the shelved files on the\n"
"	user's workspace with the same open action and pending integration\n"
"	history as if it had originated from that user and client.\n"
"\n"
"	Unshelving a file over an already opened file is permitted if both\n"
"	shelved file and opened file are opened for 'edit'. In a distributed\n"
"	environment, the shelf must either be promoted or have been created\n"
"	on the same edge server. After unshelving, the workspace file is\n"
"	flagged as unresolved, and 'p4 resolve' must be run to resolve the\n"
"	differences between the shelved file and the workspace file.\n"
"\n"
"	Unshelving a file opened for 'add' when the file already exists\n"
"	in the depot will result in the file being opened for edit. After\n"
"	unshelving, the workspace file is flagged as unresolved, and\n"
"	'p4 resolve' must be run to resolve the differences between the\n"
"	shelved file and the depot file at the head revision. Note that\n"
"	unshelving a file opened for 'add' over an already opened file is\n"
"	not supported.\n"
"\n"
"	The -s flag specifies the number of the pending changelist that\n"
"	contains the shelved files.\n"
"\n"
"	If a file pattern is specified, 'p4 unshelve' unshelves files that\n"
"	match the pattern.\n"
"\n"
"	The -A flag specifies whether files and/or the stream spec (if any)\n"
"	associated with the shelved changelist should be unshelved to the\n"
"	current client; by default, the unshelve command acts on both the\n"
"	files (-Af) and the stream spec (-As).  (See 'p4 help streamcmds.)\n"
"\n"
"	The -b flag specifies a branch spec that the shelved files will be\n"
"	mapped through prior to being unshelved, allowing files to be shelved\n"
"	in one branch and unshelved in another.  As with unshelving into an\n"
"	open file, it may be necessary to run 'p4 resolve'. In a distributed\n"
"	environment, an additional requirement is that the shelve was created\n"
"	on the same edge server.\n"
"\n"
"	The -S flag uses a generated branch view to map the shelved files\n"
"	between the specified stream and its parent stream.  The -P flag\n"
"	can be used to generate the view using a parent stream other than\n"
"	the actual parent.\n"
"\n"
"	The -c flag specifies the changelist to which files are unshelved.\n"
"	By default,  'p4 unshelve' opens shelved files in the default\n"
"	changelist.\n"
"\n"
"	The -f flag forces the clobbering of any writeable but unopened files\n"
"	that are being unshelved.\n"
"\n"
"	The -n flag previews the operation without changing any files or\n"
"	metadata.\n"
"\n"
"	'p4 unshelve' is not supported for files with propagating attributes\n"
"	from an edge server in a distributed environment.\n"
};

ErrorId MsgHelp::HelpUser = { ErrorOf( ES_HELP, 83, E_INFO, EV_NONE, 0  ), 
"\n"
"    user -- Create or edit a user specification\n"
"\n"
"    p4 user [-f] [name]\n"
"    p4 user -d [-f | -F] name\n"
"    p4 user -o [name]\n"
"    p4 user -i [-f]\n"
"\n"
"	Create a new user specification or edit an existing user specification.\n"
"	The specification form is put into a temporary file and the editor\n"
"	(configured by the environment variable $P4EDITOR) is invoked.\n"
"\n"
"	Normally, a user specification is created automatically the first\n"
"	time that the user issues any command that updates the depot. The\n"
"	'p4 user' command is typically used to edit the user's subscription\n"
"	list for change review.\n"
"\n"
"	The user specification form contains the following fields:\n"
"\n"
"	User:        The user name (read-only).\n"
"\n"
"	Email:       The user's email address (Default: user@client).\n"
"\n"
"	Update:      The date the specification was last modified (read-only).\n"
"\n"
"	Access:      The date that the user last issued a client command.\n"
"\n"
"	FullName:    The user's real name.\n"
"\n"
"	JobView:     Selects jobs that are displayed when the user creates\n"
"		     a changelist. These jobs can be closed automatically\n"
"		     when the user submits the changelist. For a description\n"
"		     of jobview syntax, see 'p4 help jobview'\n"
"\n"
"	Reviews:     The subscription list for change review.  There is no\n"
"	             limit on the number of lines that this field can contain.\n"
"		     You can include the following wildcards:\n"
"\n"
"			 ...            matches any characters including /\n"
"			 *              matches any character except /\n"
"\n"
"	Password:    The user's password.  See 'p4 help passwd'.\n"
"\n"
"	Type:        Must be 'service', operator, or 'standard'. Default is\n"
"		     'standard'. Once set, the user type cannot be changed.\n"
"\n"
"	AuthMethod:  Must be 'perforce' or 'ldap'. Default is 'perforce'\n"
"		     Unless overridden by the 'auth.default.method'\n"
"		     configurable, see 'p4 help configurables'. AuthMethod\n"
"		     can only be changed when the -f flag has been provided.\n"
"\n"
"	The -d flag deletes the specified user (unless the user has files\n"
"	open).\n"
"\n"
"	The -o flag writes the user specification to the standard output.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -i flag reads a user specification from the standard input.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -f flag forces the creation, update or deletion of the specified\n"
"	user, and enables you to change the Last Modified date. By default,\n"
"	users can only delete or modify their own user specifications.  The\n"
"	-f flag requires 'super' access, which is granted by 'p4 protect'.\n"
"\n"
"	The -F flag, used only with -d, forces the deletion of the\n"
"	specified user, and also removes the user from the protections\n"
"	table and from all groups. This command fails if removing the\n"
"	user from any group would cause the group to be deleted. In that\n"
"	case the group should be deleted prior to deleting the user.\n"
"	The -F flag requires 'super' access, which is granted by\n"
"	'p4 protect'.\n"
};

ErrorId MsgHelp::HelpUsers = { ErrorOf( ES_HELP, 84, E_INFO, EV_NONE, 0  ), 
"\n"
"    users -- List Perforce users\n"
"\n"
"    p4 users [-l -a -r -c] [-m max] [user ...]\n"
"\n"
"	Lists all Perforce users or users that match the 'user' argument.\n"
"	The report includes the last time that each user accessed the system.\n"
"\n"
"	The -m max flag limits output to the first 'max' number of users.\n"
"\n"
"	The -a flag includes service and operator users in the output.\n"
"\n"
"	The -l flag includes additional information in the output.  The -l\n"
"	flag requires 'super' access, which is granted by 'p4 protect'.\n"
"\n"
"	The -r and -c flags are only allowed on replica servers.  When\n"
"	-r is given only users who have used a replica are reported and\n"
"	when -c is given only the user information from the central server\n"
"	is reported.  Otherwise on a replica server, the user list will\n"
"	be slightly different from the master server as the user access times\n"
"	will reflect replica usage or master usage whichever is newer.\n"
};

ErrorId MsgHelp::HelpVerify = { ErrorOf( ES_HELP, 85, E_INFO, EV_NONE, 0  ), 
"\n"
"    verify -- Verify that the server archives are intact\n"
"\n"
"    p4 verify [-t | -u | -v | -z] [-m max -q -s -X -b N] file[revRange] ...\n"
"    p4 verify -S [-t -m max -q -X -b N] file ...\n"
"    p4 verify -U unloadfiles...\n"
"    p4 verify -A archivefiles...\n"
"\n"
"	For each revision of the specified files, 'p4 verify' reports\n"
"	revision-specific information and an MD5 digest of the revision's\n"
"	contents.  See 'p4 help revisions' for help specifying revisions.\n"
"\n"
"	By default, 'p4 verify' computes and displays the digest of each\n"
"	revision.  If a revision cannot be reproduced (for example, if the\n"
"	file is missing from the archive), the revision's output line ends\n"
"	with MISSING!  If there is a saved digest, 'p4 verify' compares it\n"
"	with the computed one. If they differ, the output line ends with BAD!\n"
"\n"
"	The -m max flag specifies the maximum number of revisions to process.\n"
"	This option can be used with the -u flag to compute and save digests\n"
"	for a limited number of revisions in each 'p4 verify' invocation.\n"
"\n"
"	The -t flag, for use only with a replica server, causes 'p4 verify'\n"
"	to schedule transfer of the content of any damaged revision. The '-t'\n"
"	option cannot be used with the '-v' or '-u' options.\n"
"\n"
"	The -u flag computes and saves the digest only for revisions that\n"
"	have no saved digest.\n"
"\n"
"	The -v flag computes and saves the digest for each revision, regardless\n"
"	of whether the revision already has a saved digest.  This option can\n"
"	be used to update the saved digest if the archive was deliberately\n"
"	changed. The '-u' and '-v' options are mutually exclusive.\n"
"\n"
"	The -z flag optimizes digest computations by skipping revisions that\n"
"	have already been computed in the current pass. This option is useful\n"
"	when the specified files contain lazy copies.  The resulting output\n"
"	might report a lazy copy revision if it is the first revision in the\n"
"	sort order to access a common archive file. This option cannot be used\n"
"	with the '-v' or '-u' options.\n"
"\n"
"	The -q flag minimizes command output, displaying only errors from\n"
"	mismatched digests or unreproducible revisions.\n"
"\n"
"	The -s flag specifies that the file size should also be verified. The\n"
"	-v flag implies the -s flag.\n"
"\n"
"	The -X flag specifies that files with the +X filetype modifier should\n"
"	be skipped.\n"
"\n"
"	By default, 'p4 verify' processes files in batches of 10000 files at\n"
"	a time. The -b flag specifies the batch size. Specify -b 0 to disable\n"
"	batching and process all files in a single batch. If the -z flag is\n"
"	specified, the -b flag is ignored and all files are processed in a\n"
"	single batch.\n"
"\n"
"	The following command verifies all revisions of all archive files:\n"
"\n"
"		p4 verify -qz //...\n"
"\n"
"	Saved digests are used by 'p4 diff' rather than recomputing them.\n"
"\n"
"	The -S flag verifies shelved files. If -S is specified, the only\n"
"	valid revision specifier is @=change, specifying a single shelf.\n"
"	In a distributed installation, 'verify -S' should be run on the\n"
"	Edge Server where the shelf was created. If the shelf has been\n"
"	promoted, 'verify -S' may also be run on the Commit Server.\n"
"\n"
"	The -U flag verifies files in the unload depot (see 'p4 help unload').\n"
"\n"
"	The -A flag verifies files in the archive depot (see\n"
"	'p4 help archive').\n"
"\n"
"	'p4 verify' requires that the user be an operator or have 'admin'\n"
"	 access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpWhere = { ErrorOf( ES_HELP, 86, E_INFO, EV_NONE, 0  ), 
"\n"
"    where -- Show how file names are mapped by the client view\n"
"\n"
"    p4 where [file ...]\n"
"\n"
"	Where shows how the specified files are mapped by the client view.\n"
"	For each argument, three names are produced: the name in the depot,\n"
"	the name on the client in Perforce syntax, and the name on the client\n"
"	in local syntax.\n"
"\n"
"	If the file parameter is omitted, the mapping for all files in the\n"
"	current directory and below) is returned.\n"
"\n"
"	Note that 'p4 where' does not determine where any real files reside.\n"
"	It only displays the locations that are mapped by the client view.\n"
};

ErrorId MsgHelp::HelpTunables = { ErrorOf( ES_HELP, 106, E_INFO, EV_NONE, 0  ), 
"\n"
"	For information on server configuration variables, see\n"
"	'p4 help configurables'.\n"
"\n"
"	For information about unsupported server parameters, see the\n"
"	'configurables' section of 'p4 help undoc'. Change these values only\n"
"	as directed by Technical Support.\n"
};

ErrorId MsgHelp::HelpDbschema = { ErrorOf( ES_HELP, 109, E_INFO, EV_NONE, 0  ), 
"\n"
"    dbschema -- Report meta database information\n"
"\n"
"    p4 dbschema [tablename[:tableversion]]...\n"
"\n"
"	'p4 dbschema' reports database structure information about the\n"
"	Perforce metadata.  Super permission is required to execute this\n"
"	command.\n"
"\n"
"	The command reports schema information for the metadata tables.\n"
"	By default, all current tables are reported. You can optionally specify\n"
"	table names and versions. The results are returned as tagged output.\n"
"	Table names are the file names that start with 'db.'\n"
};

ErrorId MsgHelp::HelpExport = { ErrorOf( ES_HELP, 112, E_INFO, EV_NONE, 0  ), 
"\n"
"    export -- Extract journal or checkpoint records\n"
"\n"
"    p4 export -c token [-J prefix] [-f] [-l lines] [-F filter]\n"
"		[-T tableexcludelist] [-P filterpattern]\n"
"    p4 export -j token [-J prefix] [-f] [-l lines] [-F filter]\n"
"		[-T tableexcludelist] [-P filterpattern]\n"
"    p4 export -j token [-J prefix] -r [-F filter]\n"
"		[-T tableexcludelist] [-P filterpattern]\n"
"\n"
"	'p4 export' extracts journal or checkpoint records from the Perforce\n"
"	metadata.  Super permission is required to execute this command.\n"
"\n"
"	This command extracts records from database journals or checkpoints.\n"
"	By default, the records are returned in tagged output.  Compressed\n"
"	journals or checkpoints are not supported.\n"
"\n"
"	The -j token flag specifies a journal number and optional position\n"
"	(in the form: journal number/offset) from which to start exporting.\n"
"\n"
"	The -c token flag specifies a checkpoint number and optional position\n"
"	(in the form: checkpoint number#offset) from which to start exporting.\n"
"\n"
"	The -f flag formats non-textual datatypes appropriately.\n"
"\n"
"	The -r flag changes the output to raw format (journals only).\n"
"\n"
"	The -J prefix flag specifies a file name prefix to match the one used\n"
"	with p4d -jc <prefix>.\n"
"\n"
"	The -l flag limits the number of lines (records) exported.\n"
"\n"
"	The -P filterpattern flag limits output to records that match the\n"
"	filter pattern. Multiple filter patterns can be specified using\n"
"	multiple -P flags. Each filter pattern should specify either a client\n"
"	filter or a depot filter, and should specify whether the pattern is\n"
"	to be included or excluded, using the syntax:\n"
"\n"
"	        -Pic://client/pattern  -- client records to include\n"
"	        -Pxc://client/pattern  -- client records to exclude\n"
"	        -Pif://depot/pattern   -- depot records to include\n"
"	        -Pxf://depot/pattern   -- depot records to exclude\n"
"\n"
"	If at least one include pattern is specified using -P, all records\n"
"	that are output will match one of the include patterns. If at least\n"
"	one exclude pattern is specified using -P, all records that are\n"
"	output will match none of the exclude patterns.\n"
"\n"
"	The -F filter flag limits output to records that match the filter\n"
"	pattern.  The filter pattern uses the same syntax as the -F filter\n"
"	flag on the 'p4 fstat' command.  Filtering is case-sensitive.\n"
"\n"
"	        Example: -F \"table = db.protect\"\n"
"\n"
"	The -T flag specifies a list of database tables that are excluded\n"
"	from the exported output.  To specify multiple tables, double-quote\n"
"	the list and separate the table names with spaces. The table names\n"
"	must start with \"db.\". Table names can also be separated by commas.\n"
"\n"
"	Note: to delimit transactions and indicate the end of the journal,\n"
"	additional fields are added to the tagged output.\n" 
"\n"
"	Note: The final record is a position record that specifies the\n"
"	position where subsequent records are located.  When processing a\n"
"	checkpoint, a position can be either a continuation of the checkpoint\n"
"	position (if the line count option was supplied) or a journal number.\n"
"	When processing a journal, if the last record processed is the last\n"
"	record the server has written, an 'atend' tag is inserted.  This\n"
"	tag indicates to a polling process that it must wait for more data\n"
"	before issuing the next export command.  Note that this final record\n"
"	is not filtered.\n"
"\n"
"	Note: Journal 'ex' records can have a 'markers' tag, with the value\n"
"	'complete'.  This tag indicates that, when that transaction ended,\n"
"	there were no known outstanding transactions.\n"
"\n"
"	Note: Raw journal output places the raw journal text in a 'data' tag.\n"
"	Other tags can indicate positions where transactions were known to be\n"
"	complete in the journal.\n"
};

ErrorId MsgHelp::HelpReplicate = { ErrorOf( ES_HELP, 121, E_INFO, EV_NONE, 0  ), 
"\n"
"    replicate -- poll for journal changes and apply them to another server\n"
"\n"
"    p4 replicate [-j token][-s statefile][-i interval][-k -x -R]\n"
"	          [-J prefix][-T tables excluded][-o output][command]\n"
"\n"
"	This client command polls for new journal entries from a server and\n"
"	outputs them or invokes another command that pipes the journal records\n"
"	to a subprocess.\n"
"\n"
"	The -j token flag specifies a journal number and optional position\n"
"	(journal number/offset) from which to start replicating.\n"
"\n"
"	The -J prefix flag specifies a file name prefix to match the one used\n"
"	with p4d -jc <prefix>.\n"
"\n"
"	The -s statefile flag specifies a file that tracks the most recent\n"
"	journal position.\n"
"\n"
"	The -i interval flag specifies a polling interval.  A zero interval\n"
"	causes the client to check once and exit (default value is 2 seconds).\n"
"\n"
"	The -k flag configures the pipe to the sub-process command to remain\n"
"	open across polling intervals.  By default, the pipe to the sub-\n"
"	process is restarted for every record batch.\n"
"\n"
"	The -x flag configures 'p4 replicate' to terminate when a\n"
"	journal rotation is detected.\n"
"\n"
"	The -R flag causes the command to attempt reconnection to the server\n"
"	in the event of a connection loss or serious error.  An interval\n"
"	must be given with this option.\n"
"\n"
"	The -T flag specifies a quoted, space separated list of table names\n"
"	which should not be transferred for replication.\n"
"\n"
"	The -o output flag specifies an output file where journal records\n"
"	are written in addition to the sub-process command.\n"
"\n"
"	See Perforce Knowledge Base article 1099 for detailed usage.\n"
"\n"
"	Super permission is required to run this command.\n"
};

ErrorId MsgHelp::HelpReshelve = { ErrorOf( ES_HELP, 193, E_INFO, EV_NONE, 0  ), 
"\n"
"    reshelve -- Copy shelved files to a new or existing shelf.\n"
"\n"
"    p4 reshelve [-p] -s changelist# [file ...]\n"
"    p4 reshelve [-f] [-p] -s changelist# -c changelist# [file ...]\n"
"\n"
"	'p4 reshelve' copies shelved files from an existing shelf into\n"
"	either a new shelf or one that has already been created. This\n"
"	command leaves the source shelf intact.\n"
"\n"
"	If a file pattern is specified, 'p4 reshelve' shelves the files that\n"
"	match the pattern.\n"
"\n"
"	The -s flag specifies the shelved changelist that contains the\n"
"	shelved files to be copied.\n"
"\n"
"	The -c flag specifies the pending changelist that will be the target\n"
"	for the shelved files rather than creating a new one. To update\n"
"	a target shelf you must be the owner of the changelist.\n"
"\n"
"	The -f (force) flag must be used when the same file already exists in\n"
"	the target changelist in order to overwrite it.\n"
"\n"
"	The -p flag promotes the new or target changelist where it can be\n"
"	accessed by other edge servers participating in the distributed\n"
"	configuration.  Once a shelved change has been promoted, all\n"
"	subsequent local modifications to the shelf are also pushed to\n"
"	the commit server and remain until the shelf is deleted.\n"
};

ErrorId MsgHelp::HelpDbstat = { ErrorOf( ES_HELP, 113, E_INFO, EV_NONE, 0  ),
"\n"
"    dbstat -- Display size or simple statistics for a database table\n"
"\n"
"    p4 dbstat [-h] [-f] { -a | dbtable ... }\n"
"    p4 dbstat -s\n"
"\n"
"	The -h flag displays a histogram showing the distances between\n"
"	leaf pages,  enabling you to anticipate disk seeks required for\n"
"	sequential database scans.  Dbstat scans only the internal node\n"
"	pages of the file, not the leaf or overflow pages, and thus\n"
"	reads only 1-5%% of the file.  Use this command with caution:\n"
"	it locks out write access to the database table during its scan.\n"
"\n"
"	The -f flag outputs a page count, pages free, and percent free.\n"
"	If the -h flag is given together with -f, a histogram of free page\n"
"	distribution is shown and distance report is omitted.\n"
"\n"
"	The -a flag outputs infomation for all tables.\n"
"\n"
"	The -s flag returns the size of the database table files.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpDbverify = { ErrorOf( ES_HELP, 141, E_INFO, EV_NONE, 0  ),
"\n"
"    dbverify -- Perform low-level verification of the database tables\n"
"\n"
"    p4 dbverify [-t db.table] [-U] [-v]\n"
"\n"
"	This command performs a series of low-level structural integrity\n"
"	checks on the Perforce database tables. It can be run periodically\n"
"	to determine if tables have become damaged.\n"
"\n"
"	The -t flag restricts the verification to the specified table.\n"
"\n"
"	The -U flag specifies that only the table-not-unlocked check should\n"
"	be performed. This check is very fast, so it can be performed\n"
"	routinely. The table-not-unlocked check reports if, at some time in\n"
"	the past, the table was opened and written, but not cleanly closed.\n"
"\n"
"	The -v flag gives verbose information on the verification.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLogstat = { ErrorOf( ES_HELP, 114, E_INFO, EV_NONE, 0  ),
"\n"
"    logstat -- Report the size of the journal, error log, audit log,\n"
"		or server log files\n"
"\n"
"    p4 logstat [-s | -l log]\n"
"\n"
"	If the -l argument is not specified, logstat reports the file size\n"
"	of the server's journal, error log, and audit log, skipping those\n"
"	which are not defined for this server.\n"
"\n"
"	If the -s flag is provided, logstat also reports the file size for\n"
"	each of the structured log files defined for this server."
"\n"
"	If a named log is specified using the -l flag, logstat instead\n"
"	reports the file size of that named log. The log name should be one\n"
"	of: 'journal', 'errorLog', 'auditLog', or the name of one of the\n"
"	structured log files defined with 'serverlog.file.N'.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLogappend = { ErrorOf( ES_HELP, 142, E_INFO, EV_NONE, 0  ),
"\n"
"    logappend -- Write text to any 'user' log files.\n"
"\n"
"    p4 logappend -a args...\n"
"\n"
"	Logappend writes the user-supplied text arguments to any\n"
"	structured server log file which is including 'user' log events.\n"
"\n"
"	At most 25 arguments may be specified to the command.\n"
"\n"
"	This command requires that the user be an operator or have 'list'\n"
"	access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLogrotate = { ErrorOf( ES_HELP, 136, E_INFO, EV_NONE, 0  ),
"\n"
"    logrotate -- Rotate one or more server log files\n"
"\n"
"    p4 logrotate [-l logname]\n"
"\n"
"	Logrotate rotates the named logfile, or rotates all server logs if\n"
"	the -l flag is not specified.  This only applies to structured logs.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLogparse = { ErrorOf( ES_HELP, 143, E_INFO, EV_NONE, 0  ),
"\n"
"    logparse -- Parse a server logfile and return log data\n"
"\n"
"    p4 logparse [-e] [-T field,field...] [-F filter] [-s offset] [-m max]\n"
"                logfilename\n"
"\n"
"	Logparse parses the indicated structured logfile and returns the\n"
"	log data in tagged format.  It does not work on the basic errorLog or\n"
"	auditLog.  See the logtail command for reading the errorLog.\n"
"\n"
"	The -e flag displays special characters as hexadecimal encodings.\n"
"\n"
"	The -T flag can be used to limit the fields that are displayed.\n"
"\n"
"	The -F flag limits output to records that match the filter pattern.\n"
"\n"
"	The -s flag starts the parse at the given file offset (as returned\n"
"	in the f_offset field.)\n"
"\n"
"	The -m flag limits the number of lines returned.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLogschema = { ErrorOf( ES_HELP, 144, E_INFO, EV_NONE, 0  ),
"\n"
"    logschema -- Describe the schema of a log record type\n"
"\n"
"    p4 logschema [-a | recordtype]\n"
"\n"
"	Logschema returns a description of the specified log record type.\n"
"\n"
"	The -a flag requests a specification of every known log record type.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLockstat = { ErrorOf( ES_HELP, 115, E_INFO, EV_NONE, 0  ),
"\n"
"    lockstat -- Report lock status of database tables\n"
"\n"
"    p4 lockstat [-c client | -C]\n"
"\n"
"	By default, lockstat reports database tables that are currently\n"
"	locked for a read or write operation.\n"
"\n"
"	If the -c argument is supplied, lockstat instead reports whether the\n"
"	specified client workspace is currently locked for a read or write\n"
"	operation.\n"
"\n"
"	If the -C argument is supplied, lockstat instead reports on all client\n"
"	workspaces that are currently locked for a read or write operation.\n"
"\n"
"	Database table lock information is also reported by 'p4 monitor' if\n"
"	the server has been configured to collect that data. For more\n"
"	information, see 'p4 help monitor'.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpLogtail = { ErrorOf( ES_HELP, 116, E_INFO, EV_NONE, 0  ),
"\n"
"    logtail -- Display the last block(s) of the errorLog\n"
"\n"
"    p4 logtail [-b blocksize] [-s startingOffset [-m maxBlocks]] [-l log]\n"
"\n"
"	Logtail outputs the last block(s) of the errorLog and the offset\n"
"	required to get the next block when it becomes available.\n"
"\n"
"	The -s flag option enables you to specify the offset from the\n"
"	beginning of the file (in bytes).\n"
"\n"
"	The -b flag specifies the block size in bytes (default 8192).\n"
"\n"
"	The -m flag specifies a maximum number of blocks to output.\n"
"	The -m flag is ignored unless the -s flag is specified.\n"
"\n"
"	By default, the command outputs all blocks from the offset until the\n"
"	end of the file. The data is returned in the tagged field 'data', in\n"
"	blocks of the size specified by the blocksize parameter. The 'offset'\n"
"	field contains the start of the next block, which can be used with -s\n"
"	to request the next batch of errorLog data.\n"
"\n"
"	If a named log is specified using the -l flag, logtail instead\n"
"	outputs the last block(s) of that named log.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access, which is granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpDbpack = { ErrorOf( ES_HELP, 117, E_INFO, EV_NONE, 0  ),
"\n"
"    dbpack -- reorder database index pages (unsupported)\n"
"\n"
"    p4 dbpack [-c pages -l level] { -a | dbtable... }\n"
"\n"
"	Dbpack reorders database index pages so that leaf pages are sequential.\n"
"\n"
"	The -c flag causes the operation to stop after the specified number of\n"
"	leaf pages are reordered.\n"
"\n"
"	The -l flag is a threshold that must be exceeded before an index\n"
"	page is reordered.  Values for threshold can be:\n"
"\n"
"	    0: index page more than 90%% full and 80%% out of order (default)\n"
"	    1: index page more than 50%% full and 50%% out of order\n"
"	    2: index page more than 0%% out of order\n"
"\n"
"	The -a flag reorders all tables.\n"
"\n"
};



ErrorId MsgHelp::HelpPing = { ErrorOf( ES_HELP, 118, E_INFO, EV_NONE, 0  ),
"\n"
"    ping -- test network performance\n"
"\n"
"    p4 ping [-f][-p pausetime][-c count][-t seconds][-i iterations]\n"
"	     [-s send size][-r receive size]\n"
"\n"
"	Ping sends messages from the server to the client and back, timing\n"
"	the round trips. The round trip time is typically too fast to time\n"
"	a single packet, so a number of packets are sent. Ping reports the\n"
"	time in milliseconds.\n"
"\n"
"	The -c flag specifies the number of messages in a test.\n"
"\n"
"	The -t flag specifies how long to transmit (maximum 6000 seconds).\n"
"\n"
"	The -i flag specifies the number of times to repeat the test.\n"
"\n"
"	The -f flag causes the server to transmit continuously, without\n"
"	waiting for one message to be confirmed before sending the next.\n"
"\n"
"	The -p flag specifies how long to pause between tests: specify 0 for\n"
"	no pause (maximum wait 120 seconds).\n"
"\n"
"	The -s flag specifies the server-to-client message size, up to a\n"
"	maximum value of 10,000,000 bytes\n"
"\n"
"	The -r flag specifies the client-to server message size, up to a\n"
"	maximum value of 100,000 bytes\n"
"\n"
"	Be advised that 'p4 ping' can flood the network with traffic. The\n"
"	'ping' command requires admin privileges.\n"
"\n"
};

ErrorId MsgHelp::HelpConfigure = { ErrorOf( ES_HELP, 124, E_INFO, EV_NONE, 0  ),
"\n"
"    configure -- manage server configuration variables\n"
"\n"
"    p4 configure set [<serverid>#]variable=value\n"
"    p4 configure unset [<serverid>#]variable }\n"
"    p4 configure show [allservers | <serverid> | <variable>]\n"
"\n"
"	'p4 configure set' sets the value of the specified configuration\n"
"	variable.  For a list of configuration variables, see 'p4 help\n"
"	configurables'.\n"
"\n"
"	Server names are useful when multiple servers share the table. If the\n"
"	serverid has been defined for a server (see 'p4 help serverid'),\n"
"	the serverid is used as the server name. The server name can also be\n"
"	explicitly specified using P4NAME or -In.\n"
"\n"
"	In the 'p4 configure' command, if the serverid is omitted, the\n"
"	special server name 'any' is used, and the value is used by any\n"
"	server that is using this server root.\n"
"\n"
"	'p4 configure unset' removes the specified configuration variable.\n"
"\n"
"	'p4 configure show' displays the current configuration of this\n"
"	server.\n"
"\n"
"	'p4 configure show allservers' displays the persistent configuration\n"
"	variables for all servers.\n"
"\n"
"	'p4 configure show <serverid>' displays the persistent configuration\n"
"	variables that are set for the specified server.\n"
"\n"
"	'p4 configure show <variable>' displays the setting(s) of the\n"
"	specified variable. This variant of the command shows all the\n"
"	settings of the variable that it can find, in order of precedence,\n"
"	and can be useful for understanding why a particular variable is\n"
"	not configured with the value that you expect, since variable\n"
"	settings can come from multiple sources.\n"
"\n"
"	Note that the following variables cannot be set using 'p4 configure':\n"
"	'unicode', 'P4JOURNAL', and 'P4ROOT'.\n"
"\n"
"	This command requires that the user be an operator or have 'super'\n"
"	access, which is granted by 'p4 protect'.\n"
"\n"
};

ErrorId MsgHelp::HelpPull = { ErrorOf( ES_HELP, 129, E_INFO, EV_NONE, 0  ),
"\n"
"    pull -- cause this replica server to retrieve data from its target\n"
"\n"
"    p4 pull [-J prefix] [-i <N>] [-b <N>]\n"
"            [-T tableexcludelist] [-P serverid]\n"
"    p4 pull -u [-i <N> -b <N> --batch N]\n"
"    p4 pull -l [ -s | -j [-J prefix] ]\n"
"    p4 pull -d -f file -r revision\n"
"    p4 pull -L [-i <N>]\n"
"\n"
"	'p4 pull' instructs this replica server to retrieve either journal\n"
"	records or file contents from its target server.\n"
"\n"
"	The -i flag causes the command to automatically repeat its action\n"
"	every N seconds. If -i is not specified, the command runs once,\n"
"	then exits.\n"
"\n"
"	The -b flag specifies a wait time before retrying a pull after\n"
"	a failed pull attempt.  This defaults to 60 seconds.\n"
"\n"
"	The -u flag causes the command to retrieve file content. If -u is\n"
"	not specified, the command retrieves journal records and applies\n"
"	them to this server. Multiple 'p4 pull -u' commands may be active\n"
"	on a single replica server.\n"
"\n"
"	The -l flag displays information about pending file content\n"
"	transfers. If -s is also specified, only a summary is displayed.\n"
"	If -j is instead specified, a summary of pending journal transfers\n"
"	is displayed.\n"
"\n"
"	The -d flag specifies that the pending file content transfer should\n"
"	be cancelled. You must also specify the filename and revision using\n"
"	the -f and -r flags. Note that this is not the normal Perforce file\n"
"	and revision data, but rather the archive file and revision. The\n"
"	correct archive filename and revision information to provide can be\n"
"	viewed using 'pull -l'. The 'pull -d' command can be useful when a\n"
"	file transfer is failing due to unrecoverable errors on the master.\n"
"\n"
"	Without -u, -l, or -d, pull retrieves journal records.\n"
"\n"
"	For the pull command which retrieves journal records, you may specify\n"
"	-i 0, which causes the pull thread to use an alternate scheduling\n"
"	algorithm that can reduce replica lag at the cost of slightly higher\n"
"	resource use on the target server.\n"
"\n"
"	The -J prefix flag can be used when pulling journal records or when\n"
"	listing pending journal transfers to specify a file name prefix to\n"
"	match the one used with p4d -jc prefix.\n"
"\n"
"	The -P flag controls replica data filtering. Typically, filtering is\n"
"	defined in the server spec (see 'p4 help server'), and the replica's\n"
"	journal pull thread specifies the replica's serverid to enable the\n"
"	filtering. It is also possible to specify 'p4 export' filter patterns\n"
"	using the -P flag, although this is an unusual configuration style.\n"
"	See 'p4 help export' for information about filter patterns.\n"
"\n"
"	The -T flag specifies a list of database tables that are excluded\n"
"	from the journal records.  To specify multiple tables, double-quote\n"
"	the list and separate the table names with spaces. The table names\n"
"	must start with \"db.\". Table names can also be separated by commas.\n"
"\n"
"	The -L flag specifies that journal records shall be retrieved from a\n"
"	local journal file, such as is produced by 'p4 journalcopy'. The\n"
"	'pull -L' and 'journalcopy' commands are designed to be used together\n"
"	in a standby replica (see 'p4 help replication').\n"
"\n"
"	The --batch flag specifies the number of files a pull thread should\n"
"	process in a single request. The default is 1 and is usually\n"
"	adequate. For high-latency configurations, a larger value may\n"
"	improve archive transfer speed for large numbers of small files.\n"
"\n"
"	This command requires 'super' access granted by 'p4 protect'.\n"
"\n"
};

ErrorId MsgHelp::HelpConfigurables = { ErrorOf( ES_HELP, 130, E_INFO, EV_NONE, 0  ),
"\n"
"   Perforce server configurables\n"
"\n"
"	The Perforce server behavior can be controlled by setting\n"
"	configuration variables using the 'p4 configure set' command. The\n"
"	configuration variables that can be set include the following, in\n"
"	addition to environment variables (see 'p4 help environment'):\n"
"\n"
"	Name               Default Use\n"
"	----               ------- ---\n"
"	auth.default.method perforce Default auth method for new users\n"
"	                           perforce: classic password validation\n"
"	                           ldap: passwords validated by LDAP server\n"
"	auth.id               none Unique identifier for authentication\n"
"	auth.ldap.cafile      none Path to PEM encoded CA validation file\n"
"	auth.ldap.order.N     none Enabled LDAP configuration names\n"
"	auth.ldap.sslciphers  none SSL ciphers to present to LDAP servers\n"
"	auth.ldap.ssllevel       0 Level of SSL certificate validation\n"
"	                           0: no validation (default)\n"
"	                           1: Cert must be valid, but CN not checked\n"
"	                           2: Cert must be valid and CN must match\n"
"	auth.ldap.timeout       30 Maximum wait time for LDAP connections\n"
"	auth.ldap.userautocreate 0 Enables user autocreation on successful auth\n"
"	db.peeking               2 Lockless operation\n"
"	                           0: classic locking\n"
"	                           1: new locking\n"
"	                           2: basic lockless operation (default)\n"
"	                           3: extra lockless operation\n"
"	db.peeking.usemaxlock    0 When peeking, obey maxlocktime setting.\n"
"	db.replication        none Replica metadata access mode\n"
"	dbjournal.bufsize      16K Journal/checkpoint read/write size\n"
"	dbopen.nofsync           0 Disable fsync of db files\n"
"	defaultChangeType     none Default for new change: public/restricted\n"
"	dm.annotate.maxsize    10M Maximum revision size for default annotate\n"
"	dm.domain.accessupdate 300 Time interval to update domain access time\n"
"	dm.domain.accessforce 3600 Time interval to force domain access time\n"
"	dm.grep.maxrevs        10K Maximum number of revs that can be searched\n"
"	dm.keys.hide             0 Users require admin for 'keys' command\n"
"	dm.password.minlength    8 Minimum password length (when enabled)\n"
"	dm.proxy.protects        1 Add 'proxy-' to IP (see 'p4 help protect')\n"
"	dm.resolve.attrib        1 Enable resolve for attributes\n"
"	dm.rotatelogwithjnl      1 Rotate logs when journals are rotated.\n"
"	dm.shelve.accessupdate 300 Time interval to update shelve access time\n"
"	dm.shelve.maxfiles     10M Max number of files that can be shelved\n"
"	dm.shelve.maxsize        0 Limit size of a file that can be shelved\n"
"	dm.shelve.promote        0 Promote shelved changes from edge server\n"
"	dm.user.accessupdate   300 Time interval to update user access time\n"
"	dm.user.accessforce   3600 Time interval to force user access time\n"
"	dm.user.loginattempts    3 Number of password attempts before delay\n"
"	dm.user.noautocreate     0 User autocreation level\n"
"	dm.user.resetpassword    0 New user requires password reset\n"
"	filesys.binaryscan     64K 'add' looks this far for binary chars\n"
"	filesys.bufsize         4K Client file I/O buffer size\n"
"	filesys.depot.min     250M Minimum space for depot filesystem\n"
"	filesys.extendlowmark  32K Minimum filesize before preallocation(NT)\n"
"	filesys.P4ROOT.min    250M Minimum space for P4ROOT filesystem\n"
"	filesys.P4JOURNAL.min 250M Minimum space for P4JOURNAL filesystem\n"
"	filesys.P4LOG.min     250M Minimum space for P4LOG filesystem\n"
"	filesys.TEMP.min      250M Minimum space for TEMP filesystem\n"
"	filetype.maxtextsize   10M Maximum file size for text type detection\n"
"	journalPrefix         none Prefix or directory location for journal\n"
"	lbr.autocompress         0 Use compressed text storage instead of RCS\n"
"	lbr.bufsize             4K Archive file I/O buffer size\n"
"	lbr.proxy.case           1 Proxy cache case-handling (see 'p4p -h')\n"
"	lbr.rcs.maxlen         10M Maximum line length in a +k file.\n"
"	lbr.replication       none Replica depot access and replication mode\n"
"	lbr.retry.max           50 Times replica should retry failed transfer\n"
"	lbr.stat.interval        0 Proxy file status interval (see 'p4p -h')\n"
"	lbr.verify.in            1 Verify contents from the client to server\n"
"	lbr.verify.out           1 Verify contents from the server to client\n"
"	lbr.verify.script.out    1 Verify +X contents from server to client\n"
"	log.originhost           1 Origin and peer IPs in the structured logs\n"
"	minClient             none Lowest client version that may connect\n"
"	minClientMessage      none Message to issue for client-too-old\n"
"	monitor                  0 Server monitoring level\n"
"	monitor.lsof          none Set to /usr/bin/lsof to enable on Linux\n"
"	net.backlog             10 Maximum pending connections queue length\n"
"	net.keepalive.disable    0 Disable sending TCP keepalive packets\n"
"	net.keepalive.idle       0 Seconds before starting to send keepalives\n"
"	net.keepalive.interval   0 Seconds between sending keepalives\n"
"	net.keepalive.count      0 Unacknowledged keepalives before failure\n"
"	net.maxfaultpub        100 Max size of faults (MB) to share via proxy\n"
"	net.maxwait              0 Seconds to wait for a network read or write\n"
"	net.mimcheck             1 Man-in-the-middle network security level\n"
"	net.parallel.max         0 Highest allowed degree of parallel transfer\n"
"	net.parallel.threads  none Auto parallel sync w/#threads\n"
"	net.parallel.batch       8 Files in batch for auto parallel sync\n"
"	net.parallel.batchsize 512K Size of batch for auto parallel sync\n"
"	net.parallel.min         9 Minimum # files for auto parallel sync\n"
"	net.parallel.minsize  576K Minimum size for auto parallel sync\n"
"	net.parallel.submit.threads none Auto parallel submit w/#threads\n"
"	net.parallel.submit.batch 8 Files in batch for auto parallel submit\n"
"	net.parallel.submit.min  9 Minimum # files for auto parallel submit\n"
"	net.reuseport            0 Set SO_REUSEPORT for listening socket\n"
"	net.rfc3484              0 Allow OS to choose between IPv4 and IPv6\n"
"	net.tcpsize           512K TCP sndbuf/rcvbuf sizes set at connect\n"
"	proxy.monitor.level      0 Proxy monitoring level (see 'p4p -h')\n"
"	proxy.monitor.interval  10 Proxy monitoring interval (see 'p4p -h')\n"
"	rcs.nofsync              0 Disable fsync of RCS files\n"
"	rejectList            none List of server blocked applications\n"
"	rpl.checksum.auto        0 Level to checksum when rotating journal\n"
"	rpl.checksum.change      0 Control change-by-change checksum behavior\n"
"	rpl.checksum.table       0 Control table checksum behavior\n"
"	rpl.compress             0 Enable replica-master network compression\n"
"	rpl.forward.all          0 Enable replica update command forwarding\n"
"	rpl.forward.login        0 Enable replica login command forwarding\n"
"	rpl.jnl.batch.size    100M Max size of a single journal transfer\n"
"	rpl.jnlwait.adjust      25 Per-loop ms to add to rpl.jnlwait.interval\n"
"	rpl.jnlwait.interval    50 Initial value in ms of jnlwait loop timer\n"
"	rpl.jnlwait.max       1000 Highest value in ms that loop will attain\n"
"	rpl.journal.ack          0 In DCS, number of ACKs requested\n"
"	rpl.journal.ack.min      0 In DCS, number of ACKs required\n"
"	rpl.labels.global        0 Label default for distributed installations\n"
"	rpl.pull.position        0 Interval in ms for pull position reports\n"
"	rpl.replay.userrp        0 Include db.user.rp data from P4TARGET\n"
"	rpl.verify.cache         0 Verify contents in the replica cache\n"
"	run.unzip.user.allow     0 Should 'p4 unzip' allow '-u'\n"
"	run.users.authorize      0 Should 'p4 users' require authentication\n"
"	security                 0 User/password security level\n"
"	server.allowfetch        0 Whether changes can be fetched:\n"
"	                           1: This server can fetch from other servers\n"
"	                           2: Other servers can fetch from this server\n"
"	                           3: Both (1) and (2) are allowed\n"
"	server.allowpush         0 Whether changes can be pushed:\n"
"	                           1: This server can push to other servers\n"
"	                           2: Other servers can push to this server\n"
"	                           3: Both (1) and (2) are allowed\n"
"	server.allowrewrite      0 Whether submitted changes can be rewritten\n"
"	server.depot.root          Base directory of depots with relative maps\n"
"	server.locks.dir           \"server.locks\" server lock directory\n"
"	server.locks.archive     1 Should archive command lock rev data\n"
"	server.locks.sync        0 Should sync command lock client workspace\n"
"	server.commandlimits     0 Policy for per-command resource limits\n"
"	server.global.client.views\n"
"	                         0 Set to 1 to make client view maps global\n"
"	                           either globally:\n"
"	                              server.global.client.views=1\n"
"	                           or scoped on replica:\n"
"	                              replica#server.global.client.views=1\n"
"	server.maxcommands       0 Max simultaneous commands (if monitoring)\n"
"	server.rolechecks        0 Should server enforce 'p4 server' settings\n"
"	serverlog.file.N      none Server log file name(s)\n"
"	serverlog.maxmb.N     none Size at which log file should be rotated\n"
"	serverlog.retain.N    none Number of rotated log files to retain\n"
"	serverlog.counter.N   none Counter to use for file rotation number\n"
"	serviceUser           none Intermediate service identity\n"
"	spec.hashbuckets        99 Hash spec domains to sub directories\n"
"	ssl.secondary.suite      0 Set SSL cipher suite to the secondary choice\n"
"	startup.N             none Background 'pull' command(s) for replica\n"
"	statefile             none Replica server state tracking file name\n"
"	submit.noretransfer      0 Avoid file re-transfer after failed submit\n"
"	submit.unlocklocked      0 Unlock locked files if submit fails\n"
"	submit.identity       none Changelist identity auto-generation:\n"
"	                           uuid: generate as uuid\n"
"	                           checksum: generate as checksum\n"
"	                           serverid: generate as serverid+change\n"
"	sys.rename.max          10 Limit for retrying a failed file rename\n"
"	sys.rename.wait       1000 Timeout in ms between file rename attempts\n"
"	template.client            Client to use as template if -t omitted\n"
"	template.label             Label to use as template if -t omitted\n"
"	triggers.io              0 Method used for server/trigger communication\n"
"	zerosyncPrefix        none Client prefix for zerosync (-k) namespace\n"
"\n"
"   Perforce client configurables\n"
"\n"
"	The Perforce client behavior can be controlled by setting certain\n"
"	environment variables (see 'p4 help environment'). Additionally, a\n"
"	P4CONFIG file may contain settings for the following configurables\n"
"	to affect certain client behaviors:\n"
"\n"
"	Name               Default Use\n"
"	----               ------- ---\n"
"	filesys.binaryscan     64K 'add' looks this far for binary chars\n"
"	filesys.bufsize         4K Client file I/O buffer size\n"
"	lbr.verify.out           1 Verify contents from the server to client\n"
"	net.keepalive.disable    0 Disable sending TCP keepalive packets\n"
"	net.keepalive.idle       0 Seconds before starting to send keepalives\n"
"	net.keepalive.interval   0 Seconds between sending keepalives\n"
"	net.keepalive.count      0 Unacknowledged keepalives before failure\n"
"	net.maxwait              0 Seconds to wait for a network read or write\n"
"	net.rfc3484              0 Allow OS to choose between IPv4 and IPv6\n"
"	net.tcpsize           512K TCP sndbuf/rcvbuf sizes set at connect\n"
"	sys.rename.max          10 Limit for retrying a failed file rename\n"
"	sys.rename.wait       1000 Timeout in ms between file rename attempts\n"
"\n"
};

ErrorId MsgHelp::ResolveUserHelp = { ErrorOf( ES_HELP, 22, E_INFO, EV_NONE, 1 ),
"%resolveType% options:\n"
"\n"
"    Accept:\n"
"            at              Keep action from their file.\n"
"            ay              Keep only action from your file.\n"
"            am              Keep merged action.\n"
"            a               Keep autoselected action.\n"
"\n"
"    Misc:\n"
"            s               Skip this file.\n"
"            h               Print this help message.\n"
"            ^C              Quit the resolve operation.\n"
};

ErrorId MsgHelp::HelpServer = { ErrorOf( ES_HELP, 137, E_INFO, EV_NONE, 0  ), 
"\n"
"    server -- Create, modify, or delete a server specification\n"
"\n"
"    p4 server <serverID>\n"
"    p4 server -g \n"
"    p4 server -d <serverID>\n"
"    p4 server -o [-l | -c edge-server|commit-server] <serverID>\n"
"    p4 server -i [-c edge-server|commit-server]\n"
"    p4 server -c edge-server|commit-server <serverID>\n"
"\n"
"	A server specification describes the high-level configuration\n"
"	and usage of a server. For installations with only a single server,\n"
"	the server specification is optional; server specifications are\n"
"	necessary when your installation expands to include features such\n"
"	as: replication, proxying, disaster recovery, etc.\n"
"\n"
"	For additional help on replication, see 'p4 help replication'.\n"
"\n"
"	The 'server' command puts the server spec into a temporary file and\n"
"	invokes the editor configured by the environment variable $P4EDITOR.\n"
"	Saving the file creates or modifies the server spec.\n"
"\n"
"	The server spec contains the following fields:\n"
"\n"
"	ServerID:  The UUID of the server.\n"
"\n"
"	Type:      The server executable type.\n"
"	           One of: server(p4d), proxy(p4p), broker(p4broker)\n"
"\n"
"	%'Services'%:  Services provided by this server.\n"
"	           One of the following (grouped by server type):\n"
"	    Type %''server''%:\n"
"	         %'standard'%: standard %'Perforce'% server\n"
"	         %'replica'%: read-only replica server\n"
"	         %'commit-server'%: central server in distributed installation\n"
"	         %'edge-server'%: node in distributed installation\n"
"	         %'forwarding-replica'%: replica which forwards update commands\n"
"	         %'build-server'%: replica which supports build farm integration\n"
"	         %'P4AUTH'%: server which provides central authentication\n"
"	         %'P4CHANGE'%: server which provides central change numbers\n"
"	         %'depot-master'%: commit-server with automated failover\n"
"	         %'depot-standby'%: standby replica of the depot-master\n"
"	         %'workspace-server'%: node in data center installation\n"
"	         %'standby'%: read-only replica server which uses %'journalcopy'%\n"
"	         %'forwarding-standby'%: forwarding-replica which uses %'journalcopy'%\n"
"	         %'local'%: personal server created by %'init'%\n"
"	    Type %''broker''%:\n"
"	         %'broker'%: %'p4broker'% process\n"
"	         %'workspace-router'%: Routing %'broker'% in data center installation\n"
"	    Type %''proxy''%:\n"
"	         %'proxy'%: %'p4p'% caching proxy\n"
"\n"
"	Name:      The P4NAME that is used by the server (optional).\n"
"\n"
"	Address:   The P4PORT that is used by the server (optional).\n"
"\n"
"	ExternalAddress:\n"
"	           For an edge server, this optional field can contain its\n"
"	           external address for connections from the commit server.\n"
"	           This field is required for distributed parallel submit.\n"
"\n"
"	Description:\n"
"	           A description of the server (optional).\n"
"\n"
"	User:      The service user that is used by the server (optional).\n"
"\n"
"	ClientDataFilter:\n"
"	           For a replica server, this optional field can contain one\n"
"	           or more patterns describing how active client data is to\n"
"	           be filtered. Active client data includes have lists,\n"
"	           working records, and pending resolves.\n"
"\n"
"	           Each pattern, in client syntax with optional wildcards,\n"
"	           should specify whether the data is to be included or\n"
"	           excluded, using the syntax:\n"
"	               //client-pattern/...   -- client data to include\n"
"	               -//client-pattern/...  -- client data to exclude\n"
"\n"
"	RevisionDataFilter:\n"
"	           For a replica server, this optional field can contain one\n"
"	           or more patterns describing how submitted revision data is\n"
"	           to be filtered. Submitted revision data includes revision\n"
"	           records, integration records, label contents, and the\n"
"	           files listed in submitted changelists.\n"
"\n"
"	           Each pattern, in depot syntax with optional wildcards,\n"
"	           should specify whether the data is to be included or\n"
"	           excluded, using the syntax:\n"
"	               //depot/pattern/...   -- include this depot path\n"
"	               -//depot/pattern/...  -- exclude this depot path\n"
"\n"
"	ArchiveDataFilter:\n"
"	           For a replica server, this optional field can contain one\n"
"	           or more patterns describing the policy for automatically\n"
"	           scheduling the replication of file content. If this field\n"
"	           is present, only those files described by the pattern are\n"
"	           automatically transferred to the replica; other files will\n"
"	           not be transferred until they are referenced by a replica\n"
"	           command which needs the file content.\n"
"\n"
"	DistributedConfig:\n"
"	           For an edge or commit server, this optional field\n"
"	           which is displayed only with -l or -c shows\n"
"	           configuration settings relevant to this server's\n"
"	           services. When invoked with the -l flag, this field shows\n"
"	           the current configuration. When invoked with the -c flag,\n"
"	           the configuration values are populated with currently\n"
"	           configured values, recommended default values if unset,\n"
"	           or 'unset' for unset values with no default. If this\n"
"	           field is present when invoked with -c, the configuration\n"
"	           commands in this field are run on the current server\n"
"	           using the scope of the ServerID server.\n"
"\n"
"	The -g flag generates a new server UUID.\n"
"\n"
"	The -d flag deletes the named server spec.\n"
"\n"
"	The -o flag writes the server spec to standard output. The user's\n"
"	editor is not invoked. This may be combined with the -l flag.\n"
"\n"
"	The -l flag can be used with the -o flag to display the values of\n"
"	the configuration variables used to set up the current edge or\n"
"	commit server in a distributed environment. This option shows the\n"
"	configuration commands in the DistributedConfig field.\n"
"\n"
"	The -i flag causes a server spec to be read from the standard input.\n"
"	The user's editor is not invoked. This option may be combined with\n"
"	the -c flag to generate and run configuration variables used to set\n"
"	up an edge or commit server in a distributed environment. When used\n"
"	with -c, only the fields explicitly set in standard input from\n"
"	the DistributedConfig field will be configured.\n"
"\n"
"	The -c <services> option allows the user to set, change or display\n"
"	configuration values used to set up the distributed environment\n"
"	on an edge or commit server by using the DistributedConfig field.\n"
"	Configuration fields are initially populated using the configured\n"
"	values if set, default values when unset, or 'unset' for unset\n"
"	values with no default. After exiting from the form, any\n"
"	configuration commands in the DistributedConfig	field will be run\n"
"	on the current server for the scope of the serverID. Note that the\n"
"	commands only apply to the serverID server, and so the 'server#'\n"
"	prefix is not allowed in these commands. The only supported\n"
"	services are edge-server and commit-server. The service dictates\n"
"	which configuration values are allowed to be set.\n"
"\n"
"	'p4 server' requires 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpServers = { ErrorOf( ES_HELP, 138, E_INFO, EV_NONE, 0  ), 
"\n"
"    servers -- Display list of server specifications\n"
"\n"
"    p4 servers [-J | --replication-status]\n"
"\n"
"	Lists server specifications. (See 'p4 help server'.)\n"
"\n"
"	The -J (or --replication-status) flag instead reports information\n"
"	about this server's journal, and about the replication status of all\n"
"	replicas that replicate from this server (if any).  The fields shown\n"
"	are the server id, last updated time, server type, persisted journal\n"
"	position, applied journal position, flags, and is-alive. The is-alive\n"
"	field is 0 for a replica that is no longer running, or 1 for a live\n"
"	replica.  The persisted and applied journal fields are different only\n"
"	for a replica running journalcopy: the persisted position is the last\n"
"	journal offset that this replica has persisted to disk and acknowledged\n"
"	to the master server, and the applied position is the offset of the\n"
"	last journal record that has been applied to the replica's database.\n"
"\n"
"	The first row displays information about this server, and the following\n"
"	rows display information about each replica that has requested journal\n"
"	records from this server.  Only replicas that have a serverID or a\n"
"	P4NAME are listed in the results.\n"
"\n"
"	The flags are a set of fields, each printed in upper-case if it is set\n"
"	or in lower-case if it is not; the numeric value of the flags is\n"
"	displayed after the alphabetic display.  Each field is listed below\n"
"	with its value, name, and description:\n"
"\n"
"	W/8 (Wait)              : this is a long-poll request (-i 0)\n"
"	w   (no wait)           : this is not a long-poll request\n"
"	A/4 (Acknowledging)     : this request ACKs previous journal records\n"
"	a   (non-acknowledging) : this request does not ACK previous records\n"
"	D/2 (Durable)           : only durable records should be returned\n"
"	d   (non-durable)       : non-durable records should also be returned\n"
"	L/1 (Local)             : this is data about the local journal\n"
"	l   (remote)            : this is a request from a replica\n"
"\n"
"	Common field displays with their associated pull or journalcopy\n"
"	commands are:\n"
"\n"
"	WAdl/12     journalcopy -i 0\n"
"	WaDl/10     pull -i 0\n"
"	wAdl/4      journalcopy -i 1\n"
"	waDl/2      pull -i 1\n"
"	wadL/1      (synthesized record for master status)\n"
"\n"
"	You can compare the journal positions of each replica with that of this\n"
"	server to see if any replicas are falling behind.\n"
};

ErrorId MsgHelp::HelpReload = { ErrorOf( ES_HELP, 155, E_INFO, EV_NONE, 0  ), 
"\n"
"    reload -- Reload an unloaded client, label, or task stream\n"
"\n"
"    p4 reload [-f] [-c client | -l label | -s stream] [-p address]\n"
"\n"
"	Reloads the specified client, label, or task stream from the\n"
"	unload depot.\n"
"\n"
"	Specify -c and a client name to reload that client, or -l and a label\n"
"	name to reload that label, or -s and a stream name to reload a task\n"
"	stream.\n"
"\n"
"	The -f flag forces the reloading of the specified client, label,\n"
"	or task stream. By default, users can only reload their own clients,\n"
"	labels, or task streams.  The -f flag requires 'admin' access,\n"
"	which is granted by 'p4 protect'.\n"
"\n"
"	Note that reloading a client or label does not update the access\n"
"	time. See 'p4 help unload' for more information about which commands\n"
"	cause the access time of a client or label to change.\n"
"\n"
"	In a distributed installation, the -p flag can be used to reload\n"
"	an unloaded client or label from a remote Edge Server, thus migrating\n"
"	that client or label from the remote Edge Server to this one. Each\n"
"	Edge Server's service user must be properly authenticated to the\n"
"	other Edge Server in order to perform this operation.\n"
};

ErrorId MsgHelp::HelpUnload = { ErrorOf( ES_HELP, 156, E_INFO, EV_NONE, 0  ), 
"\n"
"    unload -- Unloads a client, label, or task stream to the unload depot\n"
"\n"
"    p4 unload [-f -L -p -z] [-c client | -l label | -s stream] [-o localFile]\n"
"    p4 unload [-f -L -z] [-a|-al|-ac] [-d date | -u user]\n"
"\n"
"	The first form of this command unloads the specified client, label,\n"
"	or task stream to the unload depot.\n"
"\n"
"	Specify -c and a client name to unload that client, or -l and a label\n"
"	name to unload that label, or -s and stream name to unload a task\n"
"	stream.\n"
"\n"
"	The -f flag forces the unloading of the specified client, label, or\n"
"	task stream. By default, users can only unload their own clients,\n"
"	labels, or task streams.  The -f flag requires 'admin' access,\n"
"	which is granted by 'p4 protect'.\n"
"\n"
"	The -p flag promotes any non-promoted (local) shelved changes owned\n"
"	by the specified client from an edge server to a commit server where\n"
"	it can be accessed by other edge servers.\n"
"\n"
"	The -z flag specifies that the client, label, or task stream should\n"
"	be stored in compressed format.\n"
"\n"
"	The -L flag specifies that the client, label, or task stream should\n"
"	be unloaded even if it is locked.\n"
"\n"
"	The -o localFile flag redirects the output to the specified file on\n"
"	the client filesystem. The client, label, or stream is not actually\n"
"	unloaded; instead, the data that would have been written to the\n"
"	unload depot is written to the local file.\n"
"\n"
"	If the -a flag is specified, the specified set of clients and/or\n"
"	labels are unloaded. Specify -d and a date to unload all clients\n"
"	and/or labels whose access date is older than that date. Specify -u\n"
"	and a user to unload all clients and/or labels owned by that user.\n"
"	To restrict the command to clients only, specify -ac rather than -a.\n"
"	To restrict the command to labels only, specify -al rather than -a.\n"
"	When -a is specified, you must specify either -d or -u (or both),\n"
"	and you may not specify the -c or -l flags.\n"
"\n"
"	The access date for a client is updated when the client is used by\n"
"	a command which directly references that client. These commands\n"
"	include: add, change, client, delete, diff, edit, have, integrate,\n"
"	labelsync, lock, move, opened, reconcile, reopen, resolve, revert,\n"
"	shelve, submit, sync, unshelve, and where.\n"
"\n"
"	The access date for a label is updated when the label is used by a\n"
"	command which directly references that label. These commands include:\n"
"	label, and labelsync\n"
"\n"
"	In addition, the access date for a client is updated when the client\n"
"	is used in a revision specifier of the form @client, and the access\n"
"	date for a label is updated when the label is used in a revision\n"
"	specifier of the form @label.\n"
"\n"
"	The configurables dm.domain.accessupdate and dm.domain.accessforce\n"
"	control the frequency of access date updates.\n"
};


ErrorId MsgHelp::HelpAdministration = { ErrorOf( ES_HELP, 140, E_INFO, EV_NONE, 0  ), 
"\n"
"    Perforce commands for administering and operating the server:\n"
"\n"
"	admin        Perform administrative operations on the server\n"
"	archive      Archive obsolete revisions to archive depots\n"
"	cachepurge   Reclaim disk space on a replica\n"
"	configure    Set, unset, or show server configuration variables\n"
"	counter      Display, set, or delete a counter\n"
"	counters     Display list of known counters\n"
"	dbschema     Report information about metadata in the Perforce database\n"
"	dbstat       Display size or simple statistics for a database table\n"
"	dbverify     Perform low-level verification of the database tables\n"
"	depot        Create or edit a depot specification\n"
"	depots       Display list of depots\n"
"	diskspace    Display summary of disk space usage on server\n"
"	group        Change members of a user group\n"
"	groups       List groups (of users)\n"
"	info         Print out client/server information\n"
"	jobspec      Edit the job template\n"
"	journals     Display the checkpoint and journal history\n"
"	license      Update or display the license file\n"
"	ldap         Create or edit an LDAP configuration\n"
"	ldaps        Display list of LDAP configurations\n"
"	ldapsync     Synchronize members of Perforce groups with LDAP groups\n"
"	lockstat     Report lock status of database tables\n"
"	logappend    Append a line to server log file(s)\n"
"	logparse     Display parsed server log records\n"
"	logrotate    Rotate server log file(s)\n"
"	logschema    Display schema information for server log\n"
"	logstat      Report size of journal/errorLog/auditLog files\n"
"	logtail      Display the last block(s) of the errorLog\n"
"	monitor      Display current running perforce process information\n"
"	obliterate   Remove files and their history from the depot\n"
"	ping         Test network performance\n"
"	property     Add, delete, or list property values\n"
"	protect      Modify protections in the server namespace\n"
"	protects     Display protections in place for a given user/path\n"
"	reload       Reload metadata for an unloaded client or label\n"
"	renameuser   Completely rename a user throughout the database\n"
"	restore      Restore archived revisions to their original location\n"
"	triggers     Modify list of server triggers\n"
"	typemap      Modify the file name-to-type mapping table\n"
"	unload       Unload metadata for an unused client or label\n"
"	unzip        Import files from a p4 zip package file\n"
"	user         Create or edit a user specification\n"
"	users        Display list of known users\n"
"	verify       Verify that the server archives are intact\n"
"	zip          Package a set of files for use by p4 unzip\n"
"\n"
"    See 'p4 help replication' for more information about additional\n"
"    commands and issues of interest to those who are configuring and\n"
"    operating replicated servers.\n"
"\n"
"    See 'p4 help dvcs' for more information about additional commands and\n"
"    issues of interest to those who are configuring and operating\n"
"    independent decentralized servers.\n"
};

ErrorId MsgHelp::HelpReplication = { ErrorOf( ES_HELP, 162, E_INFO, EV_NONE, 0  ), 
"\n"
"    Topics regarding the configuration and operation of replicated servers:\n"
"\n"
"	buildserver        General information about Build Farm servers\n"
"	cachepurge         Reclaim disk space on a replica\n"
"	distributed        Topics relevant to a distributed installation\n"
"	export             Extract journal or checkpoint records\n"
"	forwardingreplica  General information about forwarding replicas\n"
"	journalcopy        Copy journal data from master to local filesystem\n"
"	journaldbchecksums Write journal notes with table checksums\n"
"	pull               Pull journal or file data from master\n"
"	replicate          Poll for journal data and apply to another server\n"
"	server             Create or edit a server specification\n"
"	servers            Display list of servers\n"
"\n"
"    A replica is a server which has a copy of another server's data.\n"
"\n"
"    Common reasons for setting up a replica server include: offloading work\n"
"    from the main server, and providing better performance for users in\n"
"    remote locations.\n"
"\n"
"    There are different types of replica servers, such as read-only\n"
"    replicas, forwarding replicas, Edge Servers, etc. See 'p4 help server'\n"
"    for more details about server types and features. The process of\n"
"    adding a new replica server to an existing installation involves:\n"
"    preparing a machine with adequate system resources, configuring the\n"
"    new server, and initializing the new server from a copy of the target\n"
"    server's data and archives. Once the replica server is operational,\n"
"    it should be monitored routinely to ensure that any error conditions\n"
"    are detected and resolved.\n"
"\n"
"    Replica data filtering is configured by specifying filter patterns in\n"
"    the replica's server spec and specifying the replica's serverid in the\n"
"    -P flag on the 'p4 pull' command to enable the filtering.\n"
"\n"
"    A distributed installation contains a Commit Server and one or more Edge\n"
"    Servers. See 'p4 help distributed' for more information.\n"
"\n"
"    Replica servers support a variety of approaches to handling the depot\n"
"    archives, selected by the lbr.replication configurable setting:\n"
"\n"
"	none:              Replica has no access to depot archives. Commands\n"
"	                   which reference file content will be rejected.\n"
"\n"
"	readonly:          Replica will maintain a readonly copy of the\n"
"	                   target server's archives. New files are copied by\n"
"	                   'pull -u' threads and purged files are removed.\n"
"	                   Commands which reference file content are allowed,\n"
"	                   and the file will be retrieved from the target if\n"
"	                   it is missing from the replica.\n"
"\n"
"	shared, or         Replica allows commands which reference file\n"
"	ondemand:          content, but does not automatically transfer new\n"
"	(synonyms)         files nor remove purged files. If a file is not\n"
"	                   present in the archives, commands which reference\n"
"	                   that file will fail. THIS MODE MUST BE USED\n"
"	                   WHEN A REPLICA DIRECTLY SHARES THE SAME PHYSICAL\n"
"	                   ARCHIVES AS THE TARGET, whether by running on the\n"
"	                   same machine or via network sharing, and can also\n"
"	                   be used when an external archive synchronization\n"
"	                   technique such as 'rsync' is used for archives.\n"
"\n"
"	cache:             Replica allows commands which reference file\n"
"	                   content, but does not automatically transfer new\n"
"	                   files. Files which are purged from the target are\n"
"	                   removed from the replica when the purge operation\n"
"	                   is replicated. If a file is not present in the\n"
"	                   archives, the replica will retrieve it from the\n"
"	                   target server.\n"
"\n"
"    Automatic retrieval of new file content can be further controlled by the\n"
"    ArchiveDataFilter setting in the 'p4 server' spec.\n"
"\n"
"    Connections made via forwarding replicas and Edge Servers may require\n"
"    special handling in the protections table if the Host: field specifies\n"
"    an IP address; see 'p4 help protect' for more information.\n"
"\n"
"    A standby replica processes journal records from its master server in\n"
"    such a way that it can be used for failover if the master server dies.\n"
"    A standby replica uses both the 'journalcopy' and 'pull -L' commands\n"
"    together to ensure that the replica journals exactly match the master.\n"
"\n"
"    Complete information about replica configuration and operation can be\n"
"    found in the Distributing Perforce Guide.\n"
};

ErrorId MsgHelp::HelpBuildserver = { ErrorOf( ES_HELP, 165, E_INFO, EV_NONE, 0  ), 
"\n"
"	A server of type 'build-server' (see 'p4 help server') is a replica\n"
"	which supports build farm integration.\n"
"\n"
"	A build-server replica supports the same read-only commands that a\n"
"	simple replica supports. In addition, the 'p4 client' command may be\n"
"	used to create or edit client workspaces on a build-server.\n"
"\n"
"	Such workspaces may issue the 'p4 sync' command, in addition to all\n"
"	read-only commands supported by the replica. The 'p4 sync' command on\n"
"	a bound workspace is processed entirely by the build-server replica,\n"
"	which entirely relieves the master server of all computation, file\n"
"	transfer, networking, and database update resource usage for those\n"
"	sync commands.\n"
"\n"
"	The build-server replica records view-mapping and have-list metadata\n"
"	in its local database, using the separate db.view.rp and db.have.rp\n"
"	database tables. Domain information for bound workspaces is recorded\n"
"	in the db.domain table, which is global to all servers in the\n"
"	installation. A workspace which is bound to a build-server must still\n"
"	have a globally-unique name; this is enforced by the 'p4 client'\n"
"	command on the build-server.\n"
"\n"
"	When creating or editing a client workspace for a build-server,\n"
"	the client specified by the optional 'name' argument, as well as the\n"
"	client specified by the $P4CLIENT environment variable or via the\n"
"	global '-c client' argument must not exist, or must be restricted\n"
"	to this server; this command may not be used to create or edit a\n"
"	workspace that is not restricted to this build-server.\n"
"\n"
"	Since workspace mapping and have list information for bound workspaces\n"
"	is stored locally in the build-server database, the build-server should\n"
"	be checkpointed regularly.\n"
"\n"
"	Since the database of an (unfiltered) build-server is a superset of\n"
"	the database of the master server, an unfiltered build-server can\n"
"	be used to recover from the catastrophic loss of the master server.\n"
};

ErrorId MsgHelp::HelpForwardingreplica = { ErrorOf( ES_HELP, 166, E_INFO, EV_NONE, 0  ), 
"\n"
"	A server of type 'forwarding-replica' (see 'p4 help server') is a\n"
"	replica which supports the full Perforce command set.\n"
"\n"
"	A read-only command which is received by a forwarding-replica is\n"
"	processed locally by the forwarding replica, without consuming any\n"
"	resources on the master server.\n"
"\n"
"	An update command which is received by a forwarding-replica is\n"
"	forwarded to the master server for processing, similarly to the way\n"
"	in which a proxy or broker forwards commands to the server.\n"
"\n"
"	Like a proxy, a forwarding-replica acts as a cache of file content,\n"
"	so commands such as 'p4 sync' or 'p4 resolve', although they are\n"
"	processed by the master server, offload their file transfer operations\n"
"	to the forwarding-replica, thus reducing the load on the master server.\n"
"\n"
"	The 'p4 login' command on a forwarding-replica automatically logs the\n"
"	user into both the forwarding-replica and the master server.\n"
"\n"
"	Since the database of an (unfiltered) forwarding-replica is a superset\n"
"	of the database of the master server, an unfiltered forwarding-replica\n"
"	can be used to recover from the catastrophic loss of the master server.\n"
};

ErrorId MsgHelp::HelpDistributed = { ErrorOf( ES_HELP, 163, E_INFO, EV_NONE, 0  ), 
"\n"
"    A distributed installation contains a Commit Server and one or more Edge\n"
"    Servers. Individual client workspaces are bound to the Edge Server on\n"
"    which they are created, and all work in progress for those workspaces\n"
"    resides only on their owning Edge Server.\n"
"\n"
"    An Edge Server supports the full Perforce command set; however, there\n"
"    are a few differences in behavior which may affect applications.\n"
"\n"
"    A pending change can be viewed on an Edge Server other than the one\n"
"    where the change was created. In that case, the pending change will not\n"
"    display a list of open files; the open files are shown only on the\n"
"    owning server. A pending changelist can be updated or deleted only on\n"
"    the server where the change was created.\n"
"\n"
"    Files of type +l are handled specially in a distributed installation.\n"
"    When +l filetypes are opened, the Edge Server contacts the Commit Server\n"
"    to ensure that the file is not locked on another Edge Server.\n"
"\n"
"    By default, labels are also bound to the Edge Server on which they are\n"
"    created; the -g flag indicates that the label is to be defined globally\n"
"    on all servers in the installation. Configuring rpl.labels.global=1\n"
"    reverses this default and causes the flag to have the opposite meaning.\n"
"\n"
"    When moving your workspace from one server to another, using 'sync -k'\n"
"    and 'reconcile' makes it easy to migrate without needing to reload your\n"
"    work. An alternate mechanism is to unload your workspace on the old\n"
"    server and use 'reload -p' to reload it onto the new server. In either\n"
"    case, shelves created by the workspace remain on the server where they\n"
"    were created. The unload/reload mechanism can also be used to move a\n"
"    locally-bound label from one Edge Server to another.\n"
"\n"
"    A spec depot on an Edge Server contains all the contents of the spec\n"
"    depot on the Commit Server. Additionally, the Edge Server spec depot\n"
"    contains entries for clients and labels bound to that Edge Server.\n"
"    Consider using a Typemap definition such as text+CS4 for client and\n"
"    label spec depot entries, or using a SpecMap field on the spec depot\n"
"    definition to ensure that the Edge Server spec depot does not grow\n"
"    excessively large.\n"
"\n"
"    An unload depot on an Edge Server contains all the contents of the\n"
"    unload depot on the Commit Server. Additionally, the Edge Server unload\n"
"    depot contains entries for clients and labels that were unloaded on\n"
"    that edge server.\n"
"\n"
"    Shelved files behave differently in a distributed configuration. A\n"
"    shelf is accessible only on the Edge Server where it was created, unless\n"
"    it is promoted (see the discussion of the 'shelve' command below).\n"
"\n"
"    When backing up your Edge Server(s), ensure that you checkpoint all\n"
"    database tables and retain rotated journals between checkpoints.\n"
"    Also, ensure that you back up any shelved file content, unloaded clients\n"
"    and labels, and spec depot entries for clients and labels that have been\n"
"    created on this Edge Server, as that data is local to this Edge Server\n"
"    and not contained in the backups of your Commit Server.\n"
"\n"
"    Most commonly-used commands are executed directly on this Edge Server\n"
"    and are unaffected by resource constraints on other servers in your\n"
"    installation. However, there are certain performance implications of a\n"
"    distributed installation that you should anticipate:\n"
"    - Files using the RCS storage format undergo multiple file format\n"
"      conversions during submit. Use text+C or text+F storage formats instead\n"
"      to avoid this penalty.\n"
"    - The submit command is slower than in a non-distributed installation,\n"
"      since the changelist must be copied from the Edge Server to the Commit\n"
"      Server during submit processing. If you are creating a new branch, use\n"
"      the populate command instead to avoid this overhead.\n"
"    - Updates to workspace and label definitions, requests for new change\n"
"      numbers, and opening or reverting +l files require messages to be sent\n"
"      to the Commit server.\n"
"    - Background 'pull' threads in the Edge Server may contend for resources\n"
"      with commands run by Edge Server users.\n"
"\n"
"    Notable differences in command behavior in a distributed installation:\n"
"\n"
"    changes -s shelved file...:\n"
"        Searching for shelves affecting particular files can be done only\n"
"        on the Edge Server where the shelf was created, or on the Commit\n"
"        Server if the shelf was promoted.\n"
"\n"
"    client, clients -a -s:\n"
"        A client workspace is bound to its Edge Server when it is created,\n"
"        and may not be used on other Edge Servers. The 'p4 clients' command\n"
"        displays only those clients bound to this Edge Server; use the -a\n"
"        flag to display the complete list of clients, or the -s serverID\n"
"        flag to display the list of clients bound to a specific Edge Server.\n"
"\n"
"    describe, change\n"
"        The files associated with a pending change are visible only on the\n"
"        Edge Server where the change was created.\n"
"\n"
"    label, labels -a -s:\n"
"        A label is present only on the Edge Server where it was created.\n"
"        The 'p4 labels' command displays only those labels bound to this\n"
"        Edge Server; use the -a flag to display the complete list of labels,\n"
"        or the -s serverID flag to display labels of a specific Edge Server.\n"
"        Labels created on the Commit Server are global, and are visible on\n"
"        all servers in the distributed installation.\n"
"\n"
"    label -g, labelsync -g, tag -g:\n"
"        The -g flag specifies that the label, labelsync, or tag command should\n"
"        execute on the Commit Server to create or update a globally-visible\n"
"        label; otherwise the label is present only on this Edge Server.\n"
"\n"
"    labels file[revrange]:\n"
"        When a file specification is provided, the 'p4 labels' command\n"
"        displays the matching labels, but only shows labels bound to this\n"
"        Edge Server. The file specification argument is not allowed if the\n"
"        -a or -s flags are provided.\n"
"\n"
"    lock, unlock:\n"
"        The lock and unlock commands only prevent submissions from other\n"
"        clients on this Edge Server.\n"
"\n"
"    logger:\n"
"        In a distributed installation, 'p4 logger' commands should be issued\n"
"        to the Commit Server, not to an Edge Server.\n"
"\n"
"    obliterate:\n"
"        The obliterate command removes submitted revision data from the\n"
"        Commit Server, and also removes any related client data for clients\n"
"        resident on the Commit Server. When the file removal operations are\n"
"        replicated to an Edge Server, that Edge Server automatically reverts\n"
"        any open changes to those files for clients resident on that Edge\n"
"        Server. Edge Server clients may still list the obliterated file(s)\n"
"        in the output of 'p4 have'; the file(s) will be removed from their\n"
"        have list the next time that client issues a 'p4 sync'.\n"
"\n"
"    opened -a:\n"
"        Displays only those files opened by other workspaces on this Edge\n"
"        Server; files opened on other Edge Servers do not appear.\n"
"\n"
"    opened -x:\n"
"        Displays information about exclusively locked files.\n"
"\n"
"    reload -p:\n"
"        Allows an unloaded client or label to be reloaded on a different\n"
"        server. Note that any shelves which were created by the client\n"
"        remain on the server where they were created.\n"
"\n"
"    shelve, unshelve:\n"
"        A shelf is present only on the Edge Server where it is created, and\n"
"        can only be unshelved by workspaces on that Edge Server. A shelf can\n"
"        be promoted by specifying the '-p' flag; this causes the shelf data\n"
"        to be redundantly stored on the Commit Server as well as on this\n"
"        Edge Server. A promoted shelf is accessible by users on other Edge\n"
"        Servers, although there is a performance penalty as the shelf data\n"
"        must be retrieved on demand when it is referenced. Although it is\n"
"        accessible from other Edge Servers, the shelf can only be submitted\n"
"        from the Edge Server on which it was created. On an Edge Server\n"
"        which is running with lbr.replication=shared, all new shelves\n"
"        are automatically promoted without needing '-p'. If a workspace\n"
"        has promoted shelves, those shelves must be deleted prior to\n"
"        deleting, unloading, or migrating that workspace to another server.\n"
"\n"
"    spec depot:\n"
"        The spec depot may have different contents on each Edge Server.\n"
"        Clients and labels bound to an Edge Server are recorded in the\n"
"        spec depot on that Edge Server only. The 'depot -d' command for the\n"
"        spec depot does not verify that the Edge Server spec depots are empty.\n"
"\n"
"    triggers:\n"
"        The submit command on the Edge Server will run the 'edge-submit'\n"
"        and 'edge-content' triggers, if defined, prior to transferring\n"
"        the changelist to the Commit Server for final submission. The submit\n"
"        command on the Commit Server will run the standard trigger types;\n"
"        however, if the change was submitted from an Edge Server, the\n"
"        'change' and 'describe' commands must not be used in the trigger.\n"
"        The %%serverid%% variable in the trigger command should be used for\n"
"        trigger definitions which need to detect which server is running\n"
"        the trigger.\n"
"\n"
"    unload depot:\n"
"        The unload depot may have different contents on each Edge Server.\n"
"        Clients and labels bound to an Edge Server are unloaded into the\n"
"        unload depot on that Edge Server. Specify the -s or -a flag to the\n"
"        'p4 clients -U' and 'p4 labels -U' commands on the Edge Server to\n"
"        view unloaded clients or labels for another Edge Server.\n"
"\n"
"        Be sure to include the unload depot as part of your Edge Server\n"
"        backups. Since the Commit Server does not verify that the unload\n"
"        depot is empty on every Edge Server, you must specify 'depot -d -f'\n"
"        in order to delete the unload depot from the Commit Server.\n"
"\n"
"    unlock -x:\n"
"        Releases exclusive locks which have become orphaned due to network\n"
"        outages between the Edge Server and the Commit Server.\n"
"\n"
"    unsubmit, resubmit:\n"
"        These commands are not available on an Edge Server.\n"
"\n"
"    user -i -f:\n"
"        Automatic creation of new user specs is disabled on Edge Servers.\n"
"        To create a new user, the administrator should run 'p4 user -f'.\n"
"\n"
"    archive, attribute -f, labelsync -g, obliterate, populate, restore,\n"
"    retype, snap, tag -g:\n"
"        When one of these commands is issued to an Edge Server, the command\n"
"        is forwarded to the Commit Server for processing. In this case,\n"
"        specify any arguments to the command using depot syntax, not client\n"
"        syntax nor local syntax. In order to use client or local syntax for\n"
"        these commands, you must issue the command directly to the Commit\n"
"        Server (and use a workspace bound to the Commit Server).\n"
"\n"
"    attribute -p (without -f), edit, delete, integrate, copy, reconcile,\n"
"    resolve, shelve, unshelve, submit:\n"
"        These commands are not supported when run from an Edge Server with\n"
"        files which contain propagating attributes. These commands may be\n"
"        used with propagating attributes only from a Commit Server.\n"
};

ErrorId MsgHelp::HelpCachepurge = { ErrorOf( ES_HELP, 168, E_INFO, EV_NONE, 0  ), 
"\n"
"    cachepurge -- Reclaim disk space on a replica\n"
"\n"
"    p4 cachepurge -a [-i N -n -R -S N -O -D files...]\n"
"    p4 cachepurge -f N [-i N -n -R -S N -O -D files...]\n"
"    p4 cachepurge -m N [-i N -n -R -S N -O -D files...]\n"
"    p4 cachepurge -s N [-i N -n -R -S N -O -D files...]\n"
"\n"
"	A replica used as a standby spare or for disaster recovery will\n"
"	maintain a complete copy of the master server's versioned file\n"
"	archives. Replicas which are used for other purposes may not need\n"
"	to hold a copy of the content of every version of every file.\n"
"\n"
"	The cachepurge command is useful for replicas with limited disk space\n"
"	resources. Depending on the scenario, a replica may not need to\n"
"	retain a copy of all of the versioned file archives of its master. If\n"
"	the replica is not being used for disaster recovery purposes, you can\n"
"	reclaim disk space by periodically deleting versioned files from the\n"
"	replica. Note: This is only safe to do if you are certain that you\n"
"	have a backup of these files, either a backup made on this replica or\n"
"	on another replica or on a backup made on the master server.\n"
"\n"
"	The disk space goal is specified using one of the required flags:\n"
"	-a, -f, -m, or -s.\n"
"\n"
"	Each time the cachepurge command runs, it attempts to permanently\n"
"	delete enough file content from the replica to achieve the goal\n"
"	specified by parameters to the command. Note that the file content\n"
"	is only deleted from this replica, not from the master server or any\n"
"	other replica, and also note that if a command is issued to this\n"
"	replica which accesses the file content in the future, the file will\n"
"	be re-retrieved from the master.\n"
"\n"
"	The -a flag specifies to delete all file content. This reclaims the\n"
"	maximum amount of disk space, but also means any file content must\n"
"	be re-retrieved from the master.\n"
"\n"
"	The -f flag specifies a free space target for the filesystem in bytes.\n"
"	When used regularly, this will cause the replica to maintain that\n"
"	amount of free disk space on the depot filesystem.\n"
"\n"
"	The -m flag specifies the number of file revisions to delete. This\n"
"	may free up more or less space, depending on the size of the files.\n"
"\n"
"	The -s flag specifies the number of bytes of file data to delete.\n"
"	This can be helpful for replicas which have a predictable observed\n"
"	growth rate in their filesystem resources.\n"
"\n"
"	The -i flag causes the command to automatically repeat its action\n"
"	every N seconds. If -i is not specified, the command runs once,\n"
"	then exits.\n"
"\n"
"	The -n flag displays a preview of the cachepurge operation without\n"
"	deleting any files.\n"
"\n"
"	The cachepurge command normally examines all files in the repository.\n"
"	The -D flag may be used to specify the subset of the files that are\n"
"	to be eligible for purging.\n"
"\n"
"	The cachepurge command normally chooses files to delete at random.\n"
"	The -R flag inhibits this random behavior, and causes files to be\n"
"	deleted in order. The -a flag implies the -R flag.\n"
"\n"
"	The -S flag specifies that the N most recent revisions of each file\n"
"	are not to be removed. Specifying -S 1 therefore ensures that the\n"
"	head revision of each file is retained in the replica's cache if it\n"
"	is already present there.\n"
"\n"
"	The -O flag specifies that the files are to be ordered from oldest to\n"
"	newest, in order to prefer the deletion of older content over newer.\n"
"	The -O flag requires that the -R flag also be specified.\n"
};

ErrorId MsgHelp::HelpTrust = { ErrorOf( ES_HELP, 150, E_INFO, EV_NONE, 0  ), 
"\n"
"    trust -- Establish trust of an SSL connection\n"
"\n"
"	p4 trust is a client side command.  For detailed help run\n"
"	p4 trust -h\n"
};


ErrorId MsgHelp::HelpRenameUser = { ErrorOf( ES_HELP, 169, E_INFO, EV_NONE, 0  ), 
"\n"
"    renameuser -- Completely rename a user throughout the database\n"
"\n"
"    p4 renameuser [-f] --from=old --to=new\n"
"\n"
"	'p4 renameuser' completely renames a user, modifying all database\n"
"	records which mention the user.\n"
"\n"
"	This includes all workspaces, labels, branches, streams, etc. which\n"
"	are owned by the user, all pending, shelved, and committed changes\n"
"	created by the user, any files that the user has opened or shelved,\n"
"	any fixes that the user made to jobs, any properties that apply to\n"
"	the user, any groups that the user is in, and the user record itself.\n"
"\n"
"	The username is not changed in descriptive text fields (such as job\n"
"	descriptions, change descriptions, or workspace descriptions), only\n"
"	where it appears as the owner or user field of the database record.\n"
"\n"
"	Protection table entries that apply to the user are updated only if\n"
"	the Name: field exactly matches the user name; if the Name: field\n"
"	contains wildcards, it is not modified.\n"
"\n"
"	The only job field that is processed is attribute code 103. If you\n"
"	have included the username in other job fields they will have to be\n"
"	processed separately.\n"
"\n"
"	This command does not modify existing content in the spec depot.\n"
"\n"
"	Files of type +k which contain the $Author$ tag that were submitted\n"
"	by the user will have incorrect digests following this command. Use\n"
"	'p4 verify -v' to recompute the digest value after the rename.\n"
"\n"
"	This command does not process unloaded workspaces, so all the user's\n"
"	workspaces should be reloaded (or deleted) first. In a distributed\n"
"	installation, there may be local workspaces or local labels owned by\n"
"	the user; these workspaces and labels which are bound to Edge Servers\n"
"	should be deleted or moved to the Commit Server first.\n"
"\n"
"	To avoid confusion, the user should not be using the server at the\n"
"	moment this command is run. After this command completes, the user\n"
"	should logout and login again, and can then resume work. Similarly,\n"
"	the user issuing this command should not be the same user as the user\n"
"	being renamed.\n"
"\n"
"	For best results, this command should not be used if the new user has\n"
"	been used in this server already, since work performed by that user\n"
"	may be unintentionally combined with work performed by the renamed\n"
"	user. The server attempts to check for such accidentally merging of\n"
"	two unrelated users, but the check is not perfect.\n"
"\n"
"	The -f flag bypasses the accidental merge checks mentioned above.\n"
"\n"
"	If a central authentication server has been configured using P4AUTH,\n"
"	the user must be renamed in both servers, using separate invocations\n"
"	of 'p4 renameuser'. The commands may be run in either order.\n"
"\n"
"	'p4 renameuser' requires 'super' access granted by 'p4 protect'.\n"
};

ErrorId MsgHelp::HelpJournals = { ErrorOf( ES_HELP, 170, E_INFO, EV_NONE, 0  ), 
"\n"
"    journals -- Display the checkpoint and journal history of the server\n"
"\n"
"    p4 journals [-F filter -T fields -m max]\n"
"\n"
"	'p4 journals' displays information about the checkpoint and journal\n"
"	history of this server.\n"
"\n"
"	The -F flag lists only records satisfying the filter expression. This\n"
"	filter syntax is similar to the one used for 'jobs -e jobview' and is\n"
"	used to evaluate the contents of the fields in the preceding list.\n"
"	Filtering is case-sensitive.\n"
"\n"
"	        Example: -F type=checkpoint\n"
"\n"
"	The -T fields flag returns only the specified fields. The field names\n"
"	can be specified using a comma- or space-delimited list.\n"
"\n"
"	The -m max flag limits output to the specified number of records.\n"
};

ErrorId MsgHelp::HelpPush = { ErrorOf( ES_HELP, 175, E_INFO, EV_NONE, 0  ),
"\n"
"    push -- copy files from a personal server to a shared server\n"
"\n"
"    p4 push [-n -r remotespec -v -O flags] [-S stream | filespec]\n"
"    p4 push [-n -r remotespec -v -O flags] -s shelf\n"
"\n"
"	The push command takes the specified set of files, and the\n"
"	changelists which submitted those files, and copies them to\n"
"	the specified target server.\n"
"\n"
"	A push is only allowed if the files being pushed fit cleanly into\n"
"	the target server, building precisely on a shared common history.\n"
"	If there are any conflicts or gaps, the push is rejected.\n"
"	Otherwise, the changelists become new submitted changelists\n"
"	in the target server.\n"
"\n"
"	The second form of the command pushes a shelved changelist, rather\n"
"	than one or more submitted changelists, in which case conflicts do\n"
"	not arise; the result is a new shelved change in the target server.\n"
"\n"
"	When the changelists are added to the target server, they\n"
"	are given newly assigned change numbers but they retain the\n"
"	same description, user, date, type, workspace, and set of files.\n"
"\n"
"	When the files are added to the target server, they are kept\n"
"	in their same changelists, as new revisions starting after the\n"
"	current head. The new revisions retain the same revision number,\n"
"	file type, action, date, timestamp, digest, and file size.\n"
"\n"
"	Although the changelists are new submitted changelists in the\n"
"	target server, none of the submit triggers are run in the\n"
"	target server. Instead, use the push-* triggers for that purpose.\n"
"\n"
"       The push command can also be used to copy a shelf to the target\n"
"       server by specifying the -s flag.\n"
"\n"
"	Typically, the push command specifies a remote spec, and the\n"
"	DepotMap field in the remote spec specifies which files are to be\n"
"	pushed. The push command may also specify an argument to further\n"
"	restrict the files to be pushed.\n"
"\n"
"	The restriction argument may be either the name of a stream\n"
"	(e.g., '-S dev'), or it may be a filename pattern (e.g.,\n"
"	//stream/dev/...). You may not specify both types of restrictions\n"
"	in a single push command.\n"
"\n"
"	If a stream name or filespec is provided, and the remote spec uses\n"
"	differing patterns for the local and remote sides of the DepotMap,\n"
"	the stream name or filespec argument must specify the files using the\n"
"	local filename syntax.\n"
"\n"
"	If a particular changelist includes some files that match the\n"
"	restriction, and other files that do not, then only the matching\n"
"	files are included in the push. Note that if a remote spec is also\n"
"	provided, only the files that match the restriction and are mapped by\n"
"	the remote spec are included in the push.\n"
"\n"
"	In addition to the file revisions and the changelists, the push\n"
"	command also copies the archive content to the target server.\n"
"	In the case of lazy copies, the target server may already have the\n"
"	corresponding archive, in which case the lazy copy is adjusted\n"
"	to reference the target server's existing archives.\n"
"\n"
"	The push command also copies all integration records which\n"
"	describe integrations to the files being pushed. These integration\n"
"	records are adjusted in the target server to reflect the resulting\n"
"	changelist numbers and revision numbers of the target server.\n"
"	Integration records are copied only if the integration source is\n"
"	mapped by the remote spec specified for the push.\n"
"\n"
"	The push command also copies all attributes which have been set on\n"
"	the files being pushed using 'p4 attribute', and copies all fixes\n"
"	which have been attached to the changelists being pushed, providing\n"
"	the jobs mentioned by those fixes exist in the destination server.\n"
"\n"
"	In order to push a set of files, you must have read access to those\n"
"	files in the current repository, and you must have write access to\n"
"	those same files in the target repository (according to the target\n"
"	repository's protections table); your local userid is also used as\n"
"	the userid at the target server and you must already be logged in\n"
"	to both servers prior to running the push command.\n"
"\n"
"	The push command is atomic: either all the specified files\n"
"	are pushed, or none of them are pushed.\n"
"\n"
"	By default, changes cannot be pushed from server to server; in order\n"
"	to push changes between servers, an administrator of each server must\n"
"	enable pushing. Set server.allowpush=1 on the server which initiates\n"
"	the push; set server.allowpush=2 on the destination server.\n"
"\n"
"	Files with the filetype modifier +S have some special considerations.\n"
"	When pushing files of type +S, old archives which exceed the\n"
"	specified limit are not purged by the push command.\n"
"\n"
"	If a push command fails after it has begun transferring files to\n"
"	the remote server, it will leave those files locked on the remote\n"
"	server. 'p4 opened' will display '*locked*', and the files cannot\n"
"	be submitted by any other user. If the push command cannot be\n"
"	quickly retried, you can use the 'p4 unlock -r' commmand to unlock\n"
"	the files on the remote server.\n"
"\n"
"	The push command is not allowed if there are unsubmitted changes in\n"
"	this server; use 'p4 resubmit' to resubmit those changes first, or\n"
"	discard the shelves with 'p4 shelve -d' if they are not wanted.\n"
"\n"
"	The -r flag specifies a remote spec which contains the address of\n"
"	the target server, and a file mapping which is to be used to re-map\n"
"	the files when they are pushed to the target server. If -r is not\n"
"	specified, the default is -r origin. See also 'p4 help remote'.\n"
"\n"
"	The -S flag specifies a stream name to restrict the files to be\n"
"	included in the push.\n"
"\n"
"	The -n flag performs all the correctness checks, but does not\n"
"	push any files or changelists to the target server.\n"
"\n"
"	The -s flag specifies a shelved changelist to be copied, instead\n"
"	of copying one or more submitted changelists.\n"
"\n"
"	The -v flag specifies verbose mode.\n"
"\n"
"	The -O flag controls the output verbose mode, and has the format\n"
"	'-Ocfi'. If 'c' is specified, verbose mode includes information about\n"
"	each changelist; if 'f' is specified, verbose mode includes\n"
"	information about each file; if 'i' is specified, verbose mode\n"
"	includes information about each integration. The default is -Oc.\n"
"\n"
};

ErrorId MsgHelp::HelpUnzip = { ErrorOf( ES_HELP, 176, E_INFO, EV_NONE, 0  ),
"\n"
"    unzip -- Import files from a p4 zip package file\n"
"\n"
"    p4 unzip -i file [-f -n -A -I -v --enable-dvcs-triggers]\n"
"\n"
"	The unzip command imports the file revisions contained in the\n"
"	specified zip file.\n"
"\n"
"	The -i flag specifies the zip file name.\n"
"\n"
"	The -n flag performs all the correctness checks, but does not\n"
"	push any files or changelists to the target server.\n"
"\n"
"	The -f flag bypasses the correctness checks.\n"
"\n"
"	The -A flag includes the archive content of the new revisions.\n"
"\n"
"	The -I flag excludes integration records for the new revisions.\n"
"\n"
"	The -v flag specifies verbose mode.\n"
"\n"
"	The --enable-dvcs-triggers flag specifies that any push-* and fix-add\n"
"	triggers which have been defined are enabled for this unzip command.\n"
"	Otherwise, unzip does not run those triggers.\n"
"\n"
"	The unzip command requires admin permission granted by\n"
"	p4 protect.\n"
};

ErrorId MsgHelp::HelpZip = { ErrorOf( ES_HELP, 177, E_INFO, EV_NONE, 0  ),
"\n"
"    zip -- Package a set of files and their history for use by p4 unzip\n"
"\n"
"    p4 zip -o file [-r remote -A -I] [ filespec | -c change]\n"
"    p4 zip -o file -A [-r remote -I] -s shelf\n"
"\n"
"	The zip command takes the specified set of files, and the\n"
"	changelists which submitted those files, and writes them to\n"
"	the specified zip file.\n"
"\n"
"	The content of the zip file can be specified either by providing a\n"
"	filespec, which selects a set of revisions, or by providing one or\n"
"	more changelist numbers using the -c flag, which selects all the\n"
"	revisions modified by those changelists.\n"
"\n"
"	The second form of the command writes a single shelved changelist\n"
"	to the specified zip file. A shelf zip may not omit archives.\n"
"\n"
"	The -o flag specifies the zip file name.\n"
"\n"
"	The -r flag specifies a remote spec which is to be used to re-map\n"
"	the files when they are written to the zip file.\n"
"	See 'p4 help remote'.\n"
"\n"
"	The -c flag specifies the change to export; this flag can be\n"
"	specified multiple times to include multiple changes.\n"
"\n"
"	The -A flag includes the archive content of the new revisions.\n"
"\n"
"	The -I flag excludes integration records for the new revisions.\n"
"\n"
"	The -s flag specifies a shelved changelist to be exported, instead\n"
"	of exporting one or more submitted changelists.\n"
"\n"
"	The zip command requires super permission granted by p4 protect.\n"
"\n"
};


ErrorId MsgHelp::HelpUnsubmit = { ErrorOf( ES_HELP, 178, E_INFO, EV_NONE, 0  ),
"\n"
"    unsubmit -- unsubmit a changelist, making it a shelf\n"
"\n"
"    p4 unsubmit [-n -r remote] file[revRange]...\n"
"\n"
"	The unsubmit command takes one or more submitted changelists and\n"
"	undoes the submission, leaving the changelist as a shelved change\n"
"	with the same content. The changelist can then be unshelved and\n"
"	further updated prior to resubmitting it.\n"
"\n"
"	See 'p4 help resubmit' for information about the 'p4 resubmit'\n"
"	command, which is useful for resubmitting unsubmitted changelists\n"
"	in a controlled process.\n"
"\n"
"	revRange is a revision or a revision range that limits the span of\n"
"	file history to be unsubmitted.\n"
"\n"
"	If the file argument has a revision, the specified revision is\n"
"	unsubmitted.  If the file argument has a revision range, the\n"
"	revisions in that range are unsubmitted.  See 'p4 help revisions'\n"
"	for help.\n"
"\n"
"	In all of these cases, all changes which affect any of the specified\n"
"	revision(s) of any of the specified file(s) will be unsubmitted.\n"
"\n"
"	The changelist must have been submitted by the same user and\n"
"	workspace which are used in the unsubmit command.\n"
"\n"
"	The files in the changelist must be the head revisions of those\n"
"	files in the repository. The files must not have been integrated\n"
"	into any other files in the repository. The files must not be open\n"
"	by any pending or shelved changelists. The files must not have been\n"
"	archived or purged. The files must not have associated attributes.\n"
"\n"
"	If the command specifies multiple files and/or multiple revisions,\n"
"	all the changelists which affected the specified revisions of the\n"
"	specified files are unsubmitted; each such change becomes its own\n"
"	separate shelf.\n"
"\n"
"	Fix records associated with the changelist are not modified. After\n"
"	unsubmitting a change which has associated jobs, you should review\n"
"	the job and fix status for accuracy.\n"
"\n"
"	The shelved changelists that are created do not fire any triggers\n"
"	of type shelve-submit or shelve-commit.\n"
"\n"
"	The -n flag performs all the correctness checks, but does not\n"
"	unsubmit any files.\n"
"\n"
"	The -r flag specifies a remote spec. The map in the remote spec is\n"
"	used to limit the files affected by the unsubmit command. Thus a\n"
"	command such as 'p4 unsubmit -r rmt @>=17' will affect only the\n"
"	files specified by the remote spec, not all files in the depot.\n"
"\n"
"	After all the specified changelists have been unsubmitted, the\n"
"	unsubmit command syncs the workspace to the head revision.\n"
"\n"
"	By default, a server does not allow the unsubmit command. To enable\n"
"	this command, an administrator must set server.allowrewrite=1.\n"
"\n"
"	In order to delete a shelf which was unsubmitted, you must specify\n"
"	-f to the shelve -d command.\n"
"\n"
"	The unsubmit command is not available on an Edge Server.\n"
"\n"
"	The unsubmit command requires admin permission granted by\n"
"	p4 protect.\n"
"\n"
};

ErrorId MsgHelp::HelpRemote   = { ErrorOf( ES_HELP, 179, E_INFO, EV_NONE, 0  ),
"\n"
"    remote -- Create, modify, or delete a remote specification\n"
"\n"
"    p4 remote [-f] remoteID\n"
"    p4 remote -d [-f] remoteID\n"
"    p4 remote -o remoteID\n"
"    p4 remote -i [-f] \n"
"\n"
"	A remote specification describes the high-level configuration\n"
"	and usage of a remote.\n"
"\n"
"	The 'remote' command puts the remote spec into a temporary file and\n"
"	invokes the editor configured by the environment variable $P4EDITOR.\n"
"	Saving the file creates or modifies the remote spec.\n"
"\n"
"	Remote specs are used by the fetch, push, and clone commands. For\n"
"	the fetch and push commands, the specified remote spec must be\n"
"	present on the server which initiates the fetch or push operation.\n"
"	For the clone command, the specified remote spec must be present on\n"
"	the server being cloned; the clone command copies the remote spec\n"
"	to the new personal repository and renames the spec to 'origin'.\n"
"\n"
"	The remote spec contains the following fields:\n"
"\n"
"	RemoteID:    The identifier of the remote\n"
"\n"
"	Address:     The P4PORT that is used by the server.\n"
"\n"
"	Owner:       The user who created this remote spec. Can be changed.\n"
"\n"
"	RemoteUser:  The username to use on the remote server (optional).\n"
"	             Can be changed.\n"
"\n"
"	Update:      The date this remote spec was last modified.\n"
"\n"
"	Access:      The last time this remote was used to fetch or push.\n"
"\n"
"	Description: A description of the remote spec (optional).\n"
"\n"
"	Options:     Flags to change the remote spec behavior. The defaults\n"
"		     are marked with *.\n"
"\n"
"	    locked       Permits only the owner to change the remote,\n"
"	    unlocked *   and prevents the remote spec from being deleted.\n"
"\n"
"	    compress     Compresses data sent between the local and\n"
"	    nocompress * remote server to speed up slow connections.\n"
"\n"
"	    copyrcs *    Transfers entire RCS archives when possible,\n"
"	    nocopyrcs    or never transfers entire RCS archives.\n"
"\n"
"	LastFetch: The last changelist that was fetched.\n"
"\n"
"	LastPush:  The last changelist that was pushed.\n"
"\n"
"	DepotMap:\n"
"	           Mapping between the local and remote files.\n"
"\n"
"	ArchiveLimits:\n"
"	           Limits on the number of files fetched (optional).\n"
"\n"
"	The filenames in the depot map must always be in depot syntax, but\n"
"	the local server's depot syntax may differ from the remote server's\n"
"	depot syntax in order to map the remote server's files into a\n"
"	alternate location in the local server. The left side of the map\n"
"	specifies the local server location; the right side of the map\n"
"	specifies the remote server location.\n"
"\n"
"	Any mapping of depot files may be specified in a remote spec, and\n"
"	will be used by the fetch and push commands to guide their operation.\n"
"	The clone command has certain restrictions on the DepotMap field,\n"
"	which are described in the next paragraph.\n"
"\n"
"	The clone command interprets the remote spec and uses it to guide\n"
"	the setup of the new personal repository. The left side of the map\n"
"	is used to determine the depot and stream(s) that will be created.\n"
"	The left side of the map must only specify mappings for a single\n"
"	depot, but the right side of the map may have locations in multiple\n"
"	depots of the server being cloned. The left side of the map may\n"
"	specify one or more stream names in the new personal repository. The\n"
"	stream name is the second level in the path name on the left side.\n"
"	The left side must specify at least one stream, or clone will fail.\n"
"	If multiple streams are specified on the left side of the map, each\n"
"	stream will be created by the clone command as a separate mainline,\n"
"	and the last stream in the map will be the current stream after the\n"
"	clone command has finished.\n"
"\n"
"	The -d flag deletes the named remote spec.\n"
"\n"
"	The -o flag writes the remote spec to standard output. The user's\n"
"	editor is not invoked.\n"
"\n"
"	The -i flag causes a remote spec to be read from the standard input.\n"
"	The user's editor is not invoked.\n"
"\n"
"	The -f flag enables a user with 'admin' privilege to delete the spec\n"
"	or set the 'last modified' date.  By default, specs can be deleted\n"
"	only by their owner.\n"
"\n"
};

ErrorId MsgHelp::HelpRemotes  = { ErrorOf( ES_HELP, 180, E_INFO, EV_NONE, 0  ),
"\n"
"    remotes -- Display list of remote specifications\n"
"\n"
"    p4 remotes [[-e|-E] nameFilter -m max]\n"
"\n"
"	Lists remote specifications. (See 'p4 help remote'.)\n"
"\n"
"	The -e nameFilter flag lists remote specs with a name that matches\n"
"	the nameFilter pattern, for example: -e 'svr-dev-rel*'. The -e flag\n"
"	uses the server's normal case-sensitivity rules. The -E flag makes\n"
"	the matching case-insensitive, even on a case-sensitive server.\n"
"\n"
"	The -m max flag limits output to the specified number of remote specs.\n"
"\n"
};

ErrorId MsgHelp::HelpFetch  = { ErrorOf( ES_HELP, 181, E_INFO, EV_NONE, 0  ),
"\n"
"    fetch -- copy files from a shared server to a personal server\n"
"\n"
"    p4 fetch [-r remotespec -m N -v -O flags -k -n -t] [-S stream | filespec]\n"
"    p4 fetch [-r remotespec -v -O flags -n] -s shelf\n"
"\n"
"	The fetch command copies the specified set of files, and the\n"
"	changelists which submitted those files, into this server from\n"
"	the specified remote server.\n"
"\n"
"	A fetch is only allowed if the files being fetched fit cleanly into\n"
"	this server, building precisely on a shared common history.\n"
"	If there are no conflicts, the files and their changelists become\n"
"	new submitted changelists in this server.\n"
"\n"
"	The second form of the command copies a shelved changelist, rather\n"
"	than one or more submitted changelists, in which case conflicts do\n"
"	not arise; the result is a new shelved change in the target server.\n"
"\n"
"	Conflict handling is enabled using the -t flag. If no conflict\n"
"	handling was specified, and there are any conflicts or gaps,\n"
"	the fetch is rejected.\n"
"\n"
"	After handling the conflicting changes, the remote work is then\n"
"	fetched. After the fetch completes, use 'p4 resubmit' to resubmit\n"
"	the conflicting local changes.\n"
"\n"
"	When the changelists are added to this server, they\n"
"	are given newly assigned change numbers but they retain the\n"
"	same description, user, date, type, workspace, and set of files.\n"
"\n"
"	When the files are added to this server, they are kept\n"
"	in their same changelists, as new revisions starting after the\n"
"	current head. The new revisions retain the same revision number,\n"
"	file type, action, date, timestamp, digest, and file size.\n"
"\n"
"	Although the changelists are new submitted changelists in this\n"
"	server, none of the submit triggers are run in this server.\n"
"\n"
"	Typically, the fetch command specifies a remote spec, and the\n"
"	DepotMap field in the remote spec specifies which files are to be\n"
"	fetched. The fetch command may also specify an argument to further\n"
"	restrict the files to be fetched.\n"
"\n"
"	The restriction argument may be either the name of a stream\n"
"	(e.g., '-S dev'), or it may be a filename pattern (e.g.,\n"
"	//stream/dev/...). You may not specify both types of restrictions\n"
"	in a single fetch command.\n"
"\n"
"	If a stream name or filespec is provided, and the remote spec uses\n"
"	differing patterns for the local and remote sides of the DepotMap,\n"
"	the stream name or filespec argument must specify the files using the\n"
"	local server's depot syntax. Note that the filespec must always be\n"
"	provided using depot syntax, not client syntax nor filesystem syntax.\n"
"\n"
"	If a particular changelist includes some files that match the\n"
"	restriction, and other files that do not, then only the matching\n"
"	files are included in the fetch. Note that if a remote spec is also\n"
"	provided, only the files that match the restriction and are mapped by\n"
"	the remote spec are included in the fetch.\n"
"\n"
"	In addition to the file revisions and the changelists, the fetch\n"
"	command also copies the archive content to this server.\n"
"	In the case of lazy copies, this server may already have the\n"
"	corresponding archive, in which case the lazy copy is adjusted\n"
"	to reference this server's existing archives.\n"
"\n"
"	The fetch command also copies all integration records which\n"
"	describe integrations to the files being fetched. These integration\n"
"	records are adjusted in this server to reflect the resulting\n"
"	changelist numbers and revision numbers of this server.\n"
"	Integration records are copied only if the integration source is\n"
"	mapped by the remote spec specified for the fetch.\n"
"\n"
"	The fetch command also copies all attributes which have been set on\n"
"	the files being fetched using 'p4 attribute', and copies all fixes\n"
"	which have been attached to the changelists being fetched, providing\n"
"	the jobs mentioned by those fixes exist in the destination server.\n"
"\n"
"	In order to fetch a set of files, you must have read access to those\n"
"	files in the remote repository, and you must have write access to\n"
"	those same files in this repository; your local userid is used as\n"
"	the userid at the target server and you must already be logged in\n"
"	to both servers prior to running the fetch command.\n"
"\n"
"	By default, changes cannot be fetched from server to server; in order\n"
"	to fetch changes from another server, an administrator of each server\n"
"	must enable fetching. Set server.allowfetch=1 on the server which\n"
"	initiates the fetch; set server.allowfetch=2 on the remote server.\n"
"\n"
"	The fetch command is atomic: either all the specified files\n"
"	are fetched, or none of them are fetched.\n"
"\n"
"	Files with the filetype modifier +S have some special considerations.\n"
"	When fetching files of type +S, old archives which exceed the\n"
"	specified limit are not purged by the fetch command.\n"
"\n"
"	The -r flag specifies a remote spec which contains the address of\n"
"	the target server, and a file mapping which is to be used to re-map\n"
"	the files when they are fetched from the target server. If -r is not\n"
"	specified, the default is -r origin. See also 'p4 help remote'.\n"
"\n"
"	The -m flag specifies to perform a shallow fetch; only the last N\n"
"	revisions of each file are fetched.\n"
"\n"
"	The -n flag performs all the correctness checks, but does not\n"
"	fetch any files or changelists from the target server.\n"
"\n"
"	The -s flag specifies a shelved changelist to be fetched, instead\n"
"	of fetching one or more submitted changelists.\n"
"\n"
"	The -S flag specifies a stream name to restrict the files to be\n"
"	included in the fetch.\n"
"\n"
"	The -t flag specifies that conflicting changes should be moved to\n"
"	a new tangent, as described earlier. The -t flag requires the -r\n"
"	flag. The -t flag also requires that an administrator has set\n"
"	server.allowrewrite=1. In order to use the -t flag, you must have\n"
"	admin access to the files to be fetched.\n"
"\n"
"	The -k flag specifies that the fetch command should not sync files.\n"
"	Normally, after fetching new work, the fetch command automatically\n"
"	syncs your workspace to the head revision. The -k flag prevents that\n"
"	automatic sync operation.\n"
"\n"
"	The -v flag specifies verbose mode.\n"
"\n"
"	The -O flag controls the output verbose mode, and has the format\n"
"	'-Ocfi'. If 'c' is specified, verbose mode includes information about\n"
"	each changelist; if 'f' is specified, verbose mode includes\n"
"	information about each file; if 'i' is specified, verbose mode\n"
"	includes information about each integration. The default is -Oc.\n"
"\n"
};

ErrorId MsgHelp::HelpDvcs  = { ErrorOf( ES_HELP, 182, E_INFO, EV_NONE, 0  ),
"\n"
"    Using Perforce as a decentralized version control system:\n"
"\n"
"	init       Create a new personal server\n"
"	clone      Clone a new personal server from a shared server\n"
"	switch     Switch to a new stream, optionally creating it\n"
"	remote     Define a connection to a shared server\n"
"	remotes    List the known shared servers\n"
"	fetch      Copy files from a shared server to a personal server\n"
"	push       Copy files from a personal server to a shared server\n"
"	unsubmit   Unsubmit a change, leaving the work in a shelf\n"
"	resubmit   Resubmit unsubmitted changes\n"
"	zip        Package a set of files for use by p4 unzip\n"
"	unzip      Import files from a p4 zip package file\n"
"\n"
"    Perforce can be used as either a centralized version control system,\n"
"    or as a decentralized version control system, or as a blend of both\n"
"    approaches, to accomplish the following:\n"
"\n"
"    - You can create a personal server that you can use to manage\n"
"      versioned content all by yourself, without interacting with\n"
"      any other Perforce server unless you want to.\n"
"\n"
"    - You can copy work between Perforce servers to implement\n"
"      various collaboration workflows.\n"
"\n"
"    - You can rewrite and revise history to discard unwanted\n"
"      intermediate information.\n"
"\n"
"    Use the 'p4 init' command to create a new personal repository,\n"
"    or use the 'p4 clone' command to create one with files from an\n"
"    existing server.  Use the 'p4 switch' command to create new\n"
"    streams, and to switch back and forth between existing streams.\n"
"\n"
"    Use the 'p4 fetch' and 'p4 push' commands to copy work back and\n"
"    forth between servers, either peer-to-peer or in a hub-and-spoke\n"
"    or hierarchical arrangement. The work that is copied is typically\n"
"    one or more submitted changelists, but can also be a shelved change.\n"
"    Pushing a shelved change can accomodate various code review workflows.\n"
"\n"
"    Use the 'p4 remote' and 'p4 remotes' commands to manage connections\n"
"    to multiple partner repositories.\n"
"\n"
"    Use the 'p4 unsubmit' and 'p4 resubmit' commands to rewrite and\n"
"    revise history prior to pushing that work to other servers.\n"
"\n"
"    The new fetch, push, and unsubmit functionality is disabled by\n"
"    default. To enable the new functionality, set the 'server.allowpush',\n"
"    'server.allowfetch', and/or 'server.allowrewrite' configurables\n"
"    to enable the desired level of operation.\n"
"\n"
"    The 'p4 zip' and 'p4 unzip' commands enable the equivalent of fetching\n"
"    and pushing files in scenarios where a simple authenticated network\n"
"    connection between the two servers cannot be established.\n"
"\n"
"    Files of type +l can be cooperatively locked across servers. The\n"
"    shared server must be configured as a Commit Server, and must also\n"
"    set server.allowRemoteLocking=1. Then individual personal servers\n"
"    can use the --remote flag on 'p4 edit' to manage exclusive file locks\n"
"    on the Commit Server; these locks are released when the files are\n"
"    pushed. See 'p4 help edit', 'p4 help push', and 'p4 help unlock'.\n"
};

ErrorId MsgHelp::HelpSwitch  = { ErrorOf( ES_HELP, 183, E_INFO, EV_NONE, 0  ), 
"\n"
"    switch -- Switch to a different stream, or create a new stream.\n"
"\n"
"    p4 switch [-c -m -v -P parent] [-Rx] [-r] stream\n"
"    p4 switch [-r -v] [-Rx] stream@change\n"
"    p4 switch -l -L\n"
"    p4 switch\n"
"\n"
"	The switch command switches to a different stream, optionally\n"
"	creating and populating that stream.\n"
"\n"
"	By specifying a stream with an optional change, the client will\n"
"	be switched to a stream specification that was available at the\n"
"	time of that change, also the workspace will be synced to that\n"
"	changelist.  This command variation is perfect for reproducing\n"
"	back-in-time view and revision synchronization.\n"
"\n"
"	The -c flag specifies that the new stream should be created and\n"
"	populated with a copy of all the files in the current stream.\n"
"	Local (dvcs) server only command.\n"
"\n"
"	The -m flag specifies that switch -c should create a new stream\n"
"	with no parent (an independent mainline). The new stream will be\n"
"	initially empty.\n"
"\n"
"	The -P flag specifies that switch -c should create a new stream\n"
"	with the specified stream as its parent, and thus the new stream\n"
"	will be populated with the files from the specified stream, rather\n"
"	than the files from the current stream.\n"
"\n"
"	The -l flag specifies that all known streams should be listed.\n"
"\n"
"	The -L flag specifies that all streams that were switched @change\n"
"	with files open in that stream should be listed.\n"
"\n"
"	The -r flag reopens files in the new mapped location of the specified\n"
"	stream. If you omit the -r flag, and you have opened files in the\n"
"	current stream, those files are shelved before switching to the new\n"
"	stream, and are unshelved subsequently when you switch back to this\n"
"	stream.\n"
"\n"
"	The -R option changes the way 'reconcile' is run when switching\n"
"	between streams:\n"
"\n"
"	        -Ra     reconcile files not currently under Perforce control,\n"
"	                (these files are opened for add).\n"
"	        -Re     reconcile files that have been modified,\n"
"	                (these files are opened for edit).\n"
"	        -Rd     reconcile files that have been removed,\n"
"	                (these files are opened for delete).\n"
"	        -Rn     reconcile does not run.\n"
"\n"
"	        Without this option, 'reconcile' runs as if all (-Raed)\n"
"	        options were set.\n"
"\n"
"	The -v flag gives verbose information.\n"
"\n"
"	With no arguments, the switch command displays the current stream.\n"
"\n"
"	When switching to a different stream, the switch command first runs\n"
"	'p4 reconcile' to determine which files have been modified in the\n"
"	current stream.\n"
"\n"
"	You cannot switch to a new stream if files are open in a numbered\n"
"	changelist. If files are open in the default changelist, they will\n"
"	be shelved and reverted prior to switching to the new stream, and\n"
"	will be automatically unshelved when switching back to this stream.\n"
"\n"
"	After switching to the new stream, switch syncs your workspace to\n"
"	the head of the new stream, and unshelves any files which were open\n"
"	in the default changelist the last time you used that stream.\n"
};

ErrorId MsgHelp::HelpInit  = { ErrorOf( ES_HELP, 184, E_INFO, EV_NONE, 0  ), 
"\n"
"    init -- Initialize a new Perforce repository.\n"
"\n"
"	p4 init is a client side command.  For detailed help run\n"
"	p4 init -h\n"
};

ErrorId MsgHelp::HelpClone = { ErrorOf( ES_HELP, 188, E_INFO, EV_NONE, 0  ), 
"\n"
"    clone -- Clone a new Perforce repository from an existing one.\n"
"\n"
"	p4 clone is a client side command.  For detailed help run\n"
"	p4 clone -h\n"
};

ErrorId MsgHelp::HelpResubmit = { ErrorOf( ES_HELP, 185, E_INFO, EV_NONE, 0  ), 
"\n"
"    resubmit -- resolve and resubmit some or all unsubmitted changes\n"
"\n"
"	p4 resubmit -l\n"
"	p4 resubmit [-R] -m\n"
"	p4 resubmit [-R] -e\n"
"	p4 resubmit [-R] -i [ [-r remote] file...]\n"
"\n"
"	The resubmit command resubmits changes which have been unsubmitted.\n"
"\n"
"	The resubmit command is typically used in one of two scenarios:\n"
"	- to resolve conflicting changes which were detected and\n"
"	  unsubmitted by running 'p4 fetch -t'.\n"
"	- to revise a set of changelists that you have submitted locally,\n"
"	  but have not pushed to any other server, and have unsubmitted.\n"
"\n"
"	If the -l flag is specified, resubmit lists all the unsubmitted\n"
"	changes but takes no action. This is useful as a way to preview\n"
"	the work that must be resubmitted.\n"
"\n"
"	There are three modes in which resubmit may run:\n"
"	- automatic\n"
"	- partially interactive\n"
"	- fully interactive\n"
"\n"
"	If the -m flag is specified, resubmit runs in automatic mode. The\n"
"	first thing resubmit -m does is to sync your workspace to #head.\n"
"	Then, resubmit -m processes each conflicting change, doing the\n"
"	following for each change:\n"
"	- sync\n"
"	- integrate tangent/...@=change dest/...\n"
"	- resolve -am\n"
"	- submit\n"
"\n"
"	If, for any change in the list, the 'resolve -am' processing detects\n"
"	merge conflicts in any file in that change, the resubmit command\n"
"	terminates at that point. All the files in that change which had\n"
"	merge conflicts are left unresolved. You must then run the resolve\n"
"	command to resolve the conflicts. Then run 'resubmit -R -m' to\n"
"	resume the resubmit process.\n"
"\n"
"	For all three resubmit modes, you can use the -R flag to resume the \n"
"	resubmit process once conflicts have been resolved. This flag causes \n"
"	resubmit to begin by submitting that fully-resolved change, after \n"
"	which it will proceed to the next unsubmitted change.\n"
"\n"
"	The -e flag runs resubmit in partially-interactive mode.\n"
"	The -e flag allows you to resolve each change, build and run tests,\n"
"	examine differences, etc., prior to submitting it,\n"
"	while the -i flag is a fully-interactive resubmission tool.\n"
"\n"
"	If the -e flag is specified, resubmit prepares the first (oldest)\n"
"	conflicting change, then exits. The files for the change are open\n"
"	in your workspace, but not resolved. You must then resolve the\n"
"	merges, reopen and modify already-resolved merges, or make any other\n"
"	necessary changes. You can additionally build and test the changes,\n"
"	inspect them, etc. When you are satisfied with this change, run \n"
"	'resubmit -R -e' to submit it and prepare the next conflicting change.\n"
"\n"
"	If the -i flag is specified, resubmit runs in fully interactive mode.\n"
"\n"
"	If a file path is also specified, interactive resubmit first\n"
"	unsubmits each change that modified a file in that path. If the -r\n"
"	flag is additionally specified, it names a remote spec. The mapping\n"
"	in the remote spec is then used to limit the files affected by the\n"
"	unsubmit operation. Thus a command such as 'p4 resubmit -r rmt @>=17'\n"
"	will affect only the files specified by the remote spec, not all\n"
"	files in the depot.\n"
"\n"
"	Resubmit -i then processes each conflicting change. For each change,\n"
"	resubmit displays summary information about the change, then\n"
"	offers the following prompts:\n"
"\n"
"	c		Modify the change description for this change\n"
"	m		Merge this change, then submit if no conflicts\n"
"	e		Merge this change, then exit for further editing\n"
"	r		Interactively resolve this change, then \n"
"	                submit if no conflicts\n"
"	a		Add (squash) this change into the next conflicting\n"
"	                change\n"
"	s		Skip this change and move on to the next\n"
"	d		Delete this change without submitting it\n"
"	b		Begin again from the earliest remaining change\n"
"	l		List the changes remaining to be processed\n"
"	v		View the current change in short form\n"
"	V		View the current change with full diffs\n"
"	R		Display the status of resolved and unresolved merges\n"
"	q		Quit the resubmit operation\n"
"	?		Display (short) help during the resubmit command.\n"
"\n"
"	After choosing either 'e' or 'q', you can subsequently continue\n"
"	interactive resubmit by running 'resubmit -R -i'.\n"
"\n"
"	The interactive resubmit command is very flexible: you can reorder\n"
"	changes, combine changes, discard changes, etc.\n"
"\n"
"	When multiple changes are resubmitted by the resubmit command, the\n"
"	command will automatically switch to the correct stream at the start\n"
"	of resubmitting each change. This means that, when the command\n"
"	completes, your current stream may have been switched. You should\n"
"	then run 'p4 switch' and 'p4 switch -l' if necessary, and switch\n"
"	back to the desired stream before resuming your work.\n"
"\n"
"	The SubmitOptions flags in the client spec have no effect on the\n"
"	changelists that are submitted by 'p4 resubmit'; this command always\n"
"	operates in 'submitunchanged' mode.\n"
"\n"
"	The resubmit command is not available on an Edge Server.\n"
"\n"
"	'p4 rebase' is an alias for 'p4 resubmit'.\n"
"\n"
};

ErrorId MsgHelp::HelpResubmitShort = { ErrorOf( ES_HELP, 186, E_INFO, EV_NONE, 0  ), 
"    The following actions are available:\n"
"	c		Modify the change description for this change\n"
"	m		Merge this change, then submit if no conflicts\n"
"	e		Merge this change, then exit for further editing\n"
"	r		Interactively resolve this change, then \n"
"	                submit if no conflicts\n"
"	a		Add (squash) this change into the next unsubmitted\n"
"	                change\n"
"	s		Skip this change and move on to the next\n"
"	d		Delete this change without submitting it\n"
"	b		Begin again from the earliest remaining change\n"
"	l		List the changes remaining to be processed\n"
"	v		View the current change in short form\n"
"	V		View the current change with full diffs\n"
"	R		Display the status of resolved and unresolved merges\n"
"	q		Quit the resubmit operation\n"
"	?		Display this help.\n"
};

ErrorId MsgHelp::HelpAliases = { ErrorOf( ES_HELP, 192, E_INFO, EV_NONE, 0 ),
"\n"
"    aliases -- Display the list of aliases from the P4ALIASES file.\n"
"\n"
"	The aliases file can be used to define command line aliases.\n"
"\n"
"	When using the p4 command line tool, each command you enter is\n"
"	transformed by any alias definitions in your aliases file prior\n"
"	to being sent to the server for execution.\n"
"\n"
"	Typical uses of aliases include: abbreviating complex commands;\n"
"	displaying command results in alternate output formats; automating\n"
"	simple multi-command sequences; and providing alternate syntax\n"
"	for commands you find hard to remember.\n"
"\n"
"	The name of the aliases file is ~/.p4aliases on non-Windows platforms\n"
"	and %%USERPROFILE%%\\p4aliases.txt on Windows platforms; this\n"
"	can be overridden using the P4ALIASES environment variable.\n"
"\n"
"	Your aliases file can contain as many aliases as you want, in any\n"
"	order, specified one per line in the format:\n"
"\n"
"	    alias = transformation\n"
"\n"
"	Your aliases file can also contain comments: if the first non-blank\n"
"	character on a line is '#', the entire line is treated as a comment.\n"
"\n"
"	When you issue a command which matches one of your aliases, the\n"
"	command is automatically modified by applying the transformation\n"
"	before issuing the command.\n"
"\n"
"	Alias matching is case-sensitive even on otherwise case-insensitive\n"
"	platforms.\n"
"\n"
"	The transformation can be a simple replacement:\n"
"\n"
"	    commit = submit\n"
"	    halt = admin shutdown\n"
"\n"
"	Certain characters in an alias definition have special meaning:\n"
"	    =      : separates the alias and its transformation\n"
"	    $(var) : denotes a named variable\n"
"	    &&     : separates two commands in a multi-command alias\n"
"	    >      : directs the output of a command to a variable\n"
"	    <      : directs the input of a command from a variable\n"
"	    \\      : indicates the transformation continues on the next line\n"
"\n"
"	The transformation can thus be more complex, and result in multiple\n"
"	commands issued to the server:\n"
"\n"
"	    show-status = monitor show && lockstat && changes -m 1\n"
"\n"
"	The transformation can include parameter substitutions:\n"
"\n"
"	    myChanges = changes -u $(P4USER)\n"
"\n"
"	The parameters can be arguments to the alias:\n"
"\n"
"	    my-recent-changes $(max) = changes -u $(P4USER) -m $(max)\n"
"\n"
"	The special built-in variables $(EQ), $(LT), and $(GT) expand\n"
"	to =, <, and >, respectively.\n"
"\n"
"	Complex aliases are possible, and often involve using the output\n"
"	of one command as input to another:\n"
"\n"
"	    show-last-change=-F \"%%change%%\" -ztag changes -m 1 \\\n"
"	                         -s submitted > $(chg) &&\n"
"	                     describe -s $(chg)\n"
"\n"
"	    reopenCL $(cl) = -F \"%%depotFile%%\" -ztag files @$(EQ)$(cl) \\\n"
"	                         > $(files) &&\n"
"	                     -x - edit < $(files)\n"
"\n"
};

// ErrorId graveyard: retired/deprecated ErrorIds.

ErrorId MsgHelp::HelpBrowse = { ErrorOf( ES_HELP, 107, E_INFO, EV_NONE, 0  ),
"\n"
"    browse -- Browse for a list of Zeroconf-registered Perforce servers.\n"
"\n"
"    p4 browse\n"
"\n"
"	'p4 browse' lists all the Perforce servers that have registered\n"
"	with Zeroconf.  Requires a 2008.2 or above client and local dynamic\n"
"	libraries and Zeroconf (Avahi or Bonjour) services.\n"
}; // DEPRECATED 2013.1 removed ZeroConf

ErrorId MsgHelp::HelpZeroConf = { ErrorOf( ES_HELP, 105, E_INFO, EV_NONE, 0  ), 
"\n"
"   Zeroconf service support\n"
"\n"
"   The following flags and environment variables configure both\n" 
"   server and proxy processes\n"
"\n"
"    p4d -0\n"
"	When the Perforce server is registered as a Zeroconf service, the\n"
"	service-type is 'p4', which is visible in DNS Service browse mode\n"
"	Discovery as '_p4._tcp'.  If mDNS is not available on the host,\n"
"	service registration fails and logs an error in the server log,\n"
"	after which server continues the startup process.\n"
"\n"
"	The -0 (digit zero) flag enables Zeroconf registry at server start time,\n"
"	overriding any value set for the $P4ZEROCONF environment variable.\n"
"	When using the environment variable, the presence of the variable\n"
"	in the environment enables the service registry.\n" 
"\n"
"	    The following identity flags can be used to configure Zeroconf\n"
"	    registry settings:\n"
"\n"
"	    p4d -In name\n"
"		Specifies a unique name for your server.  This name is\n"
"		displayed in 'p4 -ztag info' output and by DNS Service\n"
"		Discovery, if you register the process as a Zeroconf service.\n"
"		This flag overrides any value set for the $P4NAME environment\n"
"		variable.  If the name includes spaces, double-quote it.\n"
"		A valid name must contain at least one non-numeric character.\n"
"\n" 
"	    p4d -Id description\n"
"		Specifies a description of your server. This description is\n"
"		displayed in 'p4 -ztag info' output and by DNS Service\n"
"		Discovery, if you register the process as a Zeroconf service.\n"
"		This flag overrides any value set for the $P4DESCRIPTION\n"
"		environment variable.  If the description includes spaces,\n"
"		double-quote it.\n"
"\n"    
}; // DEPRECATED 2013.1 removed ZeroConf
# Change User Description Committed
#2 20494 Thomas Gray Update of p4 source code to 16.1/1429894.
#1 19472 Liz Lam Initial add of the 2016.1 p4/p4api source code.