/*
* Copyright 1995, 2000 Perforce Software. All rights reserved.
*
* This file is part of Perforce - the FAST SCM System.
*/
/*
* msgspec.cc - definitions of errors for info subsystem.
*
* Note:
*
* Never re-use an error code value, these may have already been
* translated, so using it for a different error is not OK.
*
* ErrorIds which are no longer used should be moved to the bottom
* of the list, with a trailing comment like this: // DEPRECATED.
* We keep these to maintain compatibility between newer api clients
* and older servers which send old ErrorIds.
*
* 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 MsgSpec error code is: 17
*/
# include <error.h>
# include <errornum.h>
# include "msgspec.h"
ErrorId MsgSpec::SpecBranch = { ErrorOf( ES_SPEC, 1, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Branch'% Specification.\n"
"#\n"
"# %'Branch'%: The branch name.\n"
"# %'Update'%: The date this specification was last modified.\n"
"# %'Access'%: The date of the last '%'integrate'%' using this branch.\n"
"# %'Owner'%: The user who created this branch.\n"
"# %'Description'%: A short description of the branch (optional).\n"
"# %'Options'%: Branch update options: %'[un]locked'%.\n"
"# %'View'%: Lines to map source depot files to target depot files.\n"
"#\n"
"# Use '%'p4 help branch'%' to see more about branch views.\n" };
ErrorId MsgSpec::SpecClient = { ErrorOf( ES_SPEC, 2, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Client'% Specification.\n"
"#\n"
"# %'Client'%: The client name.\n"
"# %'Update'%: The date this specification was last modified.\n"
"# %'Access'%: The date this client was last used in any way.\n"
"# %'Owner'%: The %'Perforce'% user name of the user who owns the client\n"
"# workspace. The default is the user who created the\n"
"# client workspace.\n"
"# %'Host'%: If set, restricts access to the named host.\n"
"# %'Description'%: A short description of the client (optional).\n"
"# %'Root'%: The base directory of the client workspace.\n"
"# %'AltRoots'%: Up to two alternate client workspace roots.\n"
"# %'Options'%: Client options:\n"
"# %'[no]allwrite [no]clobber [no]compress'%\n"
"# %'[un]locked [no]modtime [no]rmdir'%\n"
"# %'SubmitOptions'%:\n"
"# %'submitunchanged/submitunchanged+reopen'%\n"
"# %'revertunchanged/revertunchanged+reopen'%\n"
"# %'leaveunchanged/leaveunchanged+reopen'%\n"
"# %'LineEnd'%: Text file line endings on client: %'local/unix/mac/win/share'%.\n"
"# %'ServerID'%: If set, restricts access to the named server.\n"
"# %'View'%: Lines to map depot files into the client workspace.\n"
"# %'ChangeView'%: Lines to restrict depot files to specific changelists.\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"
"# %'StreamAtChange'%: A changelist number that sets a back-in-time view of a\n"
"# stream ( %'Stream'% field is required ).\n"
"# Changes cannot be submitted when this field is set.\n"
"#\n"
"# Use '%'p4 help client'%' to see more about client views and options.\n" };
ErrorId MsgSpec::SpecStream = { ErrorOf( ES_SPEC, 14, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Stream'% Specification.\n"
"#\n"
"# %'Stream'%: The %'stream'% field is unique and specifies the depot path.\n"
"# %'Update'%: The date the specification was last changed.\n"
"# %'Access'%: The date the specification was originally created.\n"
"# %'Owner'%: The user who created this stream.\n"
"# %'Name'%: A short title which may be updated.\n"
"# %'Parent'%: The parent of this stream, or '%'none'%' if %'Type'% is mainline.\n"
"# %'Type'%: Type of stream provides clues for commands run\n"
"# between stream and parent. Five types include '%'mainline'%',\n"
"# '%'release'%', '%'development'%' (default), '%'virtual'%' and '%'task'%'.\n"
"# %'Description'%: A short description of the stream (optional).\n"
"# %'Options'%: Stream Options:\n"
"# %'allsubmit/ownersubmit [un]locked'%\n"
"# %'[no]toparent [no]fromparent mergedown/mergeany'%\n"
"# %'Paths'%: Identify paths in the stream and how they are to be\n"
"# generated in resulting clients of this stream.\n"
"# Path types are %'share/isolate/import/import+/exclude'%.\n"
"# %'Remapped'%: Remap a stream path in the resulting client view.\n"
"# %'Ignored'%: Ignore a stream path in the resulting client view.\n"
"#\n"
"# Use '%'p4 help stream'%' to see more about stream specifications and command.\n" };
ErrorId MsgSpec::SpecLabel = { ErrorOf( ES_SPEC, 3, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Label'% Specification.\n"
"#\n"
"# %'Label'%: The label name.\n"
"# %'Update'%: The date this specification was last modified.\n"
"# %'Access'%: The date of the last '%'labelsync'%' on this label.\n"
"# %'Owner'%: The user who created this label.\n"
"# %'Description'%: A short description of the label (optional).\n"
"# %'Options'%: Label update options: %'[un]locked, [no]autoreload'%.\n"
"# %'Revision'%: Optional revision specification to make an automatic label.\n"
"# %'ServerID'%: If set, restricts access to the named server.\n"
"# %'View'%: Lines to select depot files for the label.\n"
"#\n"
"# Use '%'p4 help label'%' to see more about label views.\n" };
ErrorId MsgSpec::SpecLdap = { ErrorOf( ES_SPEC, 16, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Ldap'% Configuration Specification.\n"
"#\n"
"# %'Name'%: The %'LDAP'% configuration name.\n"
"# %'Host'%: The %'FQDN'% of the directory server.\n"
"# %'Port'%: The port number on which to connect to the directory server.\n"
"# %'Encryption'%: The encryption method to use when connecting to the\n"
"# directory server. Options are: '%'none'%', '%'ssl'%' and '%'tls'%'.\n"
"# %'BindMethod'%: The bind method to use with this directory. Options are:\n"
"# '%'simple'%', '%'search'%' and '%'sasl'%'.\n"
"#\n"
"# The following field only applies to the '%'simple'%' bind method.\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.\n"
"#\n"
"# The following fields only apply to the '%'search'%' bind method.\n"
"#\n"
"# %'SearchBaseDN'%: The %'DN'% from which to start the search for the user object.\n"
"# %'SearchFilter'%: The %'LDAP'% query filter to use to identify the user object\n"
"# which will be used to bind against. The %%%'user'%%% placeholder\n"
"# will be replaced with the user's userId.\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"
"# %'SearchBindDN'%: The %'DN'% to bind against in order to search the directory.\n"
"# %'SearchPasswd'%: The password for the %'BindDN'% record.\n"
"#\n"
"# The following field only applies to the '%'sasl'%' bind method.\n"
"#\n"
"# %'SaslRealm'%: The optional realm to use when authenticating the user via %'SASL'%.\n"
"#\n"
"# The following fields only need to be set if users must also belong to a\n"
"# group within the directory.\n"
"#\n"
"# %'GroupSearchFilter'%: The filter to use for the group search.\n"
"# %'GroupBaseDN'%: The search base for performing the group search. If unset\n"
"# this will default to the %'SearchBaseDN'%.\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" };
ErrorId MsgSpec::SpecLicense = { ErrorOf( ES_SPEC, 13, E_INFO, EV_NONE, 0 ),
"# A %'Perforce License'% Specification.\n"
"#\n"
"# %'License'%: The license key.\n"
"# %'License-Expires'%: Date at which the license expires.\n"
"# %'Support-Expires'%: Date at which support expires.\n"
"# %'Customer'%: Customer to whom this license is granted.\n"
"# %'Application'%: Application that can use this license.\n"
"# %'IPAddress'%: %'IP/Port'% address for license.\n"
"# %'Platform'%: Platform.\n"
"# %'Clients'%: Number of supported clients.\n"
"# %'Users'%: Number of supported users.\n"
"#\n"
"# Use '%'p4 help license'%' to see more about license specification.\n" };
ErrorId MsgSpec::SpecChange = { ErrorOf( ES_SPEC, 4, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Change'% Specification.\n"
"#\n"
"# %'Change'%: The change number. '%'new'%' on a new changelist.\n"
"# %'Date'%: The date this specification was last modified.\n"
"# %'Client'%: The client on which the changelist was created. Read-only.\n"
"# %'User'%: The user who created the changelist.\n"
"# %'Status'%: Either '%'pending'%' or '%'submitted'%'. Read-only.\n"
"# %'Type'%: Either '%'public'%' or '%'restricted'%'. Default is '%'public'%'.\n"
"# %'Description'%: Comments about the changelist. Required.\n"
"# %'Jobs'%: What opened jobs are to be closed by this changelist.\n"
"# You may delete jobs from this list. (New changelists only.)\n"
"# %'Files'%: What opened files from the default changelist are to be added\n"
"# to this changelist. You may delete files from this list.\n"
"# (New changelists only.)\n" };
ErrorId MsgSpec::SpecDepot = { ErrorOf( ES_SPEC, 5, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Depot'% Specification.\n"
"#\n"
"# %'Depot'%: The name of the depot.\n"
"# %'Owner'%: The user who created this depot.\n"
"# %'Date'%: The date this specification was last modified.\n"
"# %'Description'%: A short description of the depot (optional).\n"
"# %'Type'%: Whether the depot is '%'local'%', '%'remote'%', '%'spec'%', '%'archive'%',\n"
"# '%'stream'%', or '%'unload'%'. Default is '%'local'%'.\n"
"# %'Address'%: Connection address (remote depots only).\n"
"# %'Suffix'%: Suffix for all saved specs (spec depot only).\n"
"# %'Map'%: Path translation information (must have %'...'% in it).\n"
"# %'SpecMap'%: For %'spec'% depot, which specs should be recorded (optional).\n"
"#\n"
"# Use '%'p4 help depot'%' to see more about depot forms.\n" };
ErrorId MsgSpec::SpecGroup = { ErrorOf( ES_SPEC, 6, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Group'% Specification.\n"
"#\n"
"# %'Group'%: The name of the group.\n"
"# %'MaxResults'%: Limits the rows (unless '%'unlimited'%' or '%'unset'%') any one\n"
"# operation can return to the client.\n"
"# See '%'p4 help maxresults'%'.\n"
"# %'MaxScanRows'%: Limits the rows (unless '%'unlimited'%' or '%'unset'%') any one\n"
"# operation can scan from any one database table.\n"
"# See '%'p4 help maxresults'%'.\n"
"# %'MaxLockTime'%: Limits the time (in milliseconds, unless '%'unlimited'%' or\n"
"# '%'unset'%') any one operation can lock any database table when\n"
"# scanning data. See '%'p4 help maxresults'%'.\n"
"# %'Timeout'%: A time (in seconds, unless '%'unlimited'%' or '%'unset'%')\n"
"# which determines how long a '%'p4 login'%'\n"
"# session ticket remains valid (default is 12 hours).\n"
"# %'PasswordTimeout'%:\n"
"# A time (in seconds, unless '%'unlimited'%' or '%'unset'%')\n"
"# which determines how long a '%'p4 password'%'\n"
"# password remains valid (default is unset).\n"
"# %'LdapConfig'%: The LDAP configuration to use when populating the group's\n"
"# user list from an LDAP query. See '%'p4 help ldap'%'.\n"
"# %'LdapSearchQuery'%:\n"
"# The LDAP query used to identify the members of the group.\n"
"# %'LdapUserAttribute'%:\n"
"# The LDAP attribute that represents the user's username.\n"
"# %'Subgroups'%: Other groups automatically included in this group.\n"
"# %'Owners'%: Users allowed to change this group without requiring super\n"
"# access permission.\n"
"# %'Users'%: The users in the group. One per line.\n" };
ErrorId MsgSpec::SpecProtect = { ErrorOf( ES_SPEC, 7, E_INFO, EV_NONE, 0 ),
"# %'Perforce Protections'% Specification.\n"
"#\n"
"# Each line contains a protection mode, a group/user indicator, the\n"
"# group/user name, client host id and a depot file path pattern.\n"
"# A user gets the highest privilege granted on any line.\n"
"#\n"
"# %'Mode'%: The permission level or right being granted or denied. Each\n"
"# permission level includes all the permissions above it,\n"
"# except for '%'review'%'. Each permission right only includes\n"
"# the specific right and not all the lesser rights. Modes\n"
"# preceded by '=' are rights; all other modes are levels.\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 %'add'%, %'edit'%, %'delete'%, and %'integrate'% files\n"
"#\n"
"# %'write'% - users can %'submit'% open files\n"
"#\n"
"# %'admin'% - permits those administrative commands and command\n"
"# options that don't affect the server's security\n"
"#\n"
"# %'super'% - allows access to the '%'p4 protect'%' command\n"
"#\n"
"# %'review'% - allows access to the '%'p4 review'%' command; implies\n"
"# read access\n"
"#\n"
"# %'=read'% - if this right is denied, users cannot sync, diff,\n"
"# or print files\n"
"#\n"
"# %'=branch'% - if this right is denied, users are not permitted\n"
"# to use files as a source for '%'p4 integrate'%'\n"
"#\n"
"# %'=open'% - if this right is denied, users cannot open files\n"
"# (%'add'%, %'edit'%, %'delete'%, %'integrate'%)\n"
"#\n"
"# %'=write'% - if this right is denied, users cannot submit open\n"
"# files\n"
"#\n"
"# %'Group/User'% indicator: either '%'group'%' or '%'user'%'.\n"
"#\n"
"# %'Name'%: A %'Perforce'% group or user name; may be wildcarded.\n"
"#\n"
"# %'Host'%: The %'IP'% address of a client host; may be wildcarded, or\n"
"# may instead use %'CIDR'% syntax, e.g. %'172.16.0.0/16'% would match\n"
"# all %'IPv4'% addresses which start with %'172.16'%.\n"
"#\n"
"# %'Path'%: The part of the depot being granted access.\n" };
ErrorId MsgSpec::SpecServer = { ErrorOf( ES_SPEC, 15, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Server'% Specification.\n"
"#\n"
"# %'ServerID'%: The server identifier.\n"
"# %'Type'%: The server type: %'server'%/%'broker'%/%'proxy'%.\n"
"# %'Name'%: The %'P4NAME'% used by this server (optional).\n"
"# %'Address'%: The %'P4PORT'% used by this server (optional).\n"
"# %'ExternalAddress'%:\n"
"# For an edge server, this optional field contains its\n"
"# external address for connections from the commit server.\n"
"# This field is required for distributed parallel submit.\n"
"# %'Description'%: A short description of the server (optional).\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"
"# %'User'%: The service user which will be used by this server\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"
"# %'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 files\n"
"# listed in submitted changelists.\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"
"# Use '%'p4 help server'%' to see more about server ids and services.\n" };
ErrorId MsgSpec::SpecTrigger = { ErrorOf( ES_SPEC, 8, E_INFO, EV_NONE, 0 ),
"# %'Perforce Submit'% and Form Validating Trigger Specifications.\n"
"#\n"
"# %'Triggers'%: a list of triggers; one per line. Each trigger line must be\n"
"# indented with spaces or tabs in the form. Each line has four\n"
"# elements:\n"
"#\n"
"# %'Name'%: The name of the trigger.\n"
"#\n"
"# %'Type'%: '%'archive'%' external archive access triggers\n"
"# '%'auth-check'%' check authentication trigger\n"
"# '%'auth-check-sso'%' sso check authentication trigger\n"
"# '%'auth-set'%' set authentication trigger\n"
"# '%'change-submit'%' pre-submit triggers\n"
"# '%'change-content'%' modify content submit triggers\n"
"# '%'change-commit'%' post-submit triggers\n"
"# '%'change-failed'%' submit failure fires these triggers\n"
"# '%'command'%' pre/post user command triggers\n"
"# '%'edge-submit'%' Edge Server pre-submit\n"
"# '%'edge-content'%' Edge Server content submit\n"
"# '%'fix-add'%' pre-add fix triggers\n"
"# '%'fix-delete'%' pre-delete fix triggers\n"
"# '%'form-in'%' modify form in triggers\n"
"# '%'form-out'%' modify form out triggers\n"
"# '%'form-save'%' pre-save form triggers\n"
"# '%'form-commit'%' post-save form triggers\n"
"# '%'form-delete'%' pre-delete form triggers\n"
"# '%'service-check'%' check auth trigger (service users)\n"
"# '%'shelve-submit'%' pre-shelve triggers\n"
"# '%'shelve-commit'%' post-shelve triggers\n"
"# '%'shelve-delete'%' pre-delete shelve triggers\n"
"#\n"
"# %'Path'%: For %'change-*'%, %'edge-*'%, or %'shelve-*'% triggers, a pattern\n"
"# to match files in the changelist.\n"
"#\n"
"# For %'form-*'% triggers, the type of form: e.g. '%'branch'%'\n"
"# '%'client'%', etc.\n"
"#\n"
"# For %'fix-*'% triggers use '%'fix'%'.\n"
"#\n"
"# For %'auth-*'% triggers use '%'auth'%'.\n"
"#\n"
"# For archive triggers, a file pattern to match the\n"
"# file name being accessed.\n"
"#\n"
"# For command triggers, the client command to match.\n"
"# Must be in the form \"%'(pre|post)-user-$command'%\",\n"
"# e.g. \"%'pre-user-tag'%\". The command name is a regular\n"
"# expression. See \"p4 help grep\" for details on\n"
"# syntax.\n"
"#\n"
"# %'Command'%: The %'OS'% command to run for validation. If the\n"
"# command contains spaces, the whole command must\n"
"# be quoted. See '%'p4 help triggers'%' for a list of\n"
"# variables that can be expanded in the command\n"
"# string.\n"
"#\n"
"# For example,\n"
"#\n"
"# %'Triggers'%:\n"
"# %'cscheck change-submit //depot/... \"cmd '%%%%'changelist'%%%%'\"'%\n"
"# %'no-oblits command pre-user-obliterate fail'%\n"
"# %'mkspec form-out client \"'%%%%'quote'%%%%'//trig/scr.pl'%%%%'quote'%%%%'\"'%\n"
"#\n"
"# See '%'p4 help triggers'%' for more information about triggers.\n" };
ErrorId MsgSpec::SpecTypeMap = { ErrorOf( ES_SPEC, 9, E_INFO, EV_NONE, 0 ),
"# %'Perforce File Type'% Mapping Specifications.\n"
"#\n"
"# %'TypeMap'%: a list of filetype mappings; one per line.\n"
"# Each line has two elements:\n"
"#\n"
"# %'Filetype'%: The filetype to use on '%'p4 add'%'.\n"
"#\n"
"# %'Path'%: File pattern which will use this filetype.\n"
"#\n"
"# See '%'p4 help typemap'%' for more information.\n" };
ErrorId MsgSpec::SpecUser = { ErrorOf( ES_SPEC, 10, E_INFO, EV_NONE, 0 ),
"# A %'Perforce User'% Specification.\n"
"#\n"
"# %'User'%: The user's user name.\n"
"# %'Type'%: Either '%'service'%', '%'operator'%', or '%'standard'%'.\n"
"# Default: '%'standard'%'. Read only.\n"
"# %'Email'%: The user's email address; for email review.\n"
"# %'Update'%: The date this specification was last modified.\n"
"# %'Access'%: The date this user was last active. Read only.\n"
"# %'FullName'%: The user's real name.\n"
"# %'JobView'%: Selects jobs for inclusion during changelist creation.\n"
"# %'Password'%: If set, user must have matching %'$P4PASSWD'% on client.\n"
"# %'AuthMethod'%: '%'perforce'%' if using standard authentication or '%'ldap'%' if\n"
"# this user should use native %'LDAP'% authentication.\n"
"# %'Reviews'%: Listing of depot files to be reviewed by user.\n" };
ErrorId MsgSpec::SpecJob = { ErrorOf( ES_SPEC, 11, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Job'% Specification.\n"
"#\n"
"# %'Job'%: The job name. '%'new'%' generates a sequenced job number.\n"
"# %'Status'%: Either '%'open'%', '%'closed'%', or '%'suspended'%'. Can be changed.\n"
"# %'User'%: The user who created the job. Can be changed.\n"
"# %'Date'%: The date this specification was last modified.\n"
"# %'Description'%: Comments about the job. Required.\n" };
ErrorId MsgSpec::SpecEditSpec = { ErrorOf( ES_SPEC, 12, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Spec'% Specification.\n"
"#\n"
"# Updating this form can be dangerous!\n"
"# To update the job spec, see '%'p4 help jobspec'%' for proper directions.\n"
"# Otherwise, see '%'p4 help spec'%'.\n" };
ErrorId MsgSpec::SpecRemote = { ErrorOf( ES_SPEC, 17, E_INFO, EV_NONE, 0 ),
"# A %'Perforce Remote'% Specification.\n"
"#\n"
"# %'RemoteID'%: The remote identifier.\n"
"# %'Address'%: The %'P4PORT'% used by the remote server.\n"
"# %'Owner'%: The user who created this remote.\n"
"# %'Options'%: Remote options: %'[un]locked, [no]compress'%.\n"
"# %'Update'%: The date this specification was last modified.\n"
"# %'Access'%: The date of the last '%'push/fetch'%' on this remote.\n"
"# %'Description'%: A short description of the remote server (optional).\n"
"# %'LastFetch'%: The last changelist that was fetched.\n"
"# %'LastPush'%: The last changelist that was pushed.\n"
"# %'DepotMap'%: Lines to map local files to remote files.\n"
"#\n"
"# See 'p4 help remote' for detailed information.\n" };
// ErrorId graveyard: retired/deprecated ErrorIds.