Major Enhancements

#383535 ** The new 'p4 populate' command performs the initial population of a stream with files as a single-step operation (no submit or client workspace is required). Note that populate will fire change-content and change-commit triggers, but not change-submit or any form triggers.

#372184,#373711,#389650 #423427 (Bugs #2493, #9875) *** ** * The Perforce client/server protocol now supports encrypted communication. SSL support has been added to perforce clients and server as well as the Perforce proxy and broker. In addition the downloadable client API can be compiled with OpenSSL if encrypted connections are required.

A server, proxy or broker accepting SSL client connections must define a P4SSLDIR variable. This directory holds the server's certificate and public key files. The files and directory must only be accessible by the effective UID under which the server runs.

Two new stand-alone command options can be run on any server, proxy or broker: -Gc generates credentials files in the P4SSLDIR. It will not overwrite the current contents. -Gf displays the fingerprint of the Public Key contained in the $P4SSLDIR/certificate.txt file.

P4PORT settings may now include the 'ssl:' prefix. In addition, the existing but undocumented 'tcp:' prefix is now fully documented and supported; it can be useful for cases where you desire to explicitly indicate that the connection is cleartext. The 'ssl:' prefix may be specified in P4PORT values to cause the client and server to use SSL encryption of network traffic. If this prefix is used, it must be used in both server and and client. An SSL-enabled server will only accept connections from SSL-enabled clients, and a server which does not specify the ssl: prefix will not accept connections from clients that do.

Upon first connecting to a new server using ssl the p4 client will fail if the fingerprint of the server's public key has not been accepted before. A new command "p4 trust" can be used to accept a previously unaccepted fingerprint.

NOTE: The server discovery feature 'zeroconf' which was added in 2008.2 will not work with SSL. Due to potential security issues (spoofing) when configuring servers with zeroconf this feature is being discontinued, this is the last release that it can be enabled. The beta clients for the 2012.1 release did not have the client trust check code. Please make sure you update all beta clients to ensure trust for SSL connections.

#367753 (Bug #68, #889, #989) ** * A new command 'p4 reconcile' allows users to reconcile client with offline work. The command either previews or opens files in a pending changelist that will bring the client up to date with changes made to the workspace outside of Perforce. The new command 'p4 status' is a synonym for 'p4 reconcile -n'. Also for convenience, 'p4 status -A' is a synonym for 'p4 reconcile -ade'.

#331092 ** A client of a properly-configured replica server can be specified to perform server-private storage of its db.have data. This separation of db.have data provides improved scalability for build-farm operations. The new 'p4 server', 'p4 servers', and 'p4 serverid' commands are used to specify this configuration. The new 'server.id' file in the server root directory should be backed up as part of routine server backups.

#325599 ** A replica server which has been configured to forward commands to its master server can be used in place of a traditional proxy server. This configuration will offload work from the master server and in most cases perform better for its remote users. On such a replica, the 'p4 login' and 'p4 logout' commands will automatically log the user in/out of both servers (replica and master).

#325315 (Bugs #3711, #8629, #11502, #12007, #18622, #19696, #19824, #24496, #29067, #29892, #29909, #33331, #33619, #37080, #37588, #37654, #38189, #41702, #42863, #43704, #45906, #45915) ** The server can now be configured to write log files in a structured format which contain more detail and are also easier to parse. The new log files are also easier to administer, with support for log file rotation and retention behaviors. The new commands for working with these logfiles are: logparse, logrotate, logschema, and logappend; the existing logstat and logtail commands are also enhanced.

Minor Enhancements

#454883 ** (Bug #53797) 'p4 group' now has a new flag, '-A', that allows 'admin' level users to create new groups.

#423427 * A new (client side only) command 'p4 trust' is required when connecting to secure servers with the P4PORT prefix "ssl:". See 'p4 trust -h' for more details.

#410530 ** (Bug #9028) 'p4 annotate' will now refuse to display diffs for binary files unless the new '-t' flag is provided.

#408858 ** (Bug #49801) A new optional field 'StreamAtChange' in the client spec allows the user to create a back-in-time stream client. See 'p4 help client' for more details.

#397964 ** (Bug #43676) New stream type 'virtual' is a stream with no physical files branched to the stream. Files are pulled from, and submitted to the first, non-virtual parent stream - based on the view of the virtual stream. This can greatly reduce the number of files branched when working with streams. See 'p4 help streamintro' and 'p4 help stream' for details on streams and the virtual stream type.

#398705 ** 'p4 pull -l -j' now includes the last-modified-time of the replica statefile in its output.

#393549 ** (Bug #2165) 'p4 files' now supports a new flag '-e', which limits output to files that exist (i.e. have not been deleted, purged or archived).

#391471 ** Obliterate has three new performance related flags '-abh'. These flags have been present but undocumented since 2009.2. See 'p4 help obliterate' for more information.

#390676 ** 'p4 dbverify -U' and 'p4d -xvU' perform a fast validation of the database tables, checking only the table UnlockCount.

#389341 ** (Bug #29848) Using per-revision attributes is now supported. The 'p4 attribute' and various 'p4 fstat' options for setting and retrieving attributes has been present but undocumented since 2004.2.

#388781, #373493 * ** *** The version information returned by "p4 -V" now includes SSL license and version information if SSL is enabled: Perforce - The Fast Software Configuration Management System. Copyright 1995-2011 Perforce Software. All rights reserved. This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) Version of OpenSSL Libraries: OpenSSL 1.0.0e 6 Sep 2011 Rev. P4/DARWIN100X86_64/2012.1.main/318424 (2011/05/19)

#385958 (Bug #35709) * ** The new variable P4IGNORE names a file containing a list of expressions which can be used to match certain file patterns and exclude them from the repository. This mechanism is used by 'p4 add' and the new 'p4 reconcile' command.

#385719 (Bug #48795) ** 'p4 merge' will now schedule resolves for all added and deleted files, similar to 'p4 integrate -Rbd'.

#385458 (Bug #156, #14183, #17037) ** 'p4 integrate' will now automatically schedule baseless merges to be performed with an empty base file (forcing conflicts on any differences). The '-i' flag is still accepted but has been deprecated.

#385004 (Bug #50613) * 'p4 add' will now choose 'text+Cx' rather than 'text+x' as the default filetype for an executable text file larger than 10MB. Also, 'unicode+C' will be chosen instead of 'unicode' for a unicode file larger than 10MB, and 'utf16+C' rather than 'utf16'.

#378661 ** 'jnl.fix' files emitted by the server now include a @nx@ journal header note at the start to identify the journal file.

#374311 (Bug #41326) ** A new command 'p4 list' allows the user to build up a list of files in-memory that can be used in subsequent commands just like a label. The list is only available during the life of the connected session and therefore cannot be used across multiple calls to the perforce command line program 'p4'.

#369970 (Bug #29164) ** Form-in triggers can now be passed the %formname% variable.

#369400 * ** File type detection was only looking at the first 8192 bytes of a file which could be adjusted on the client with the filesys.binaryscan tunable. Now, this default value is 65536 bytes and if this value is changed on the server, it will be sent to client to allow setting a central default.

#368694 (Bug #33723) ** 'p4 verify' now accepts the '-X' flag to specify that files of filetype +X should not be verified.

#367359 (Bugs #3453, #31916) ** The 'p4 change' and 'p4 describe' commands now accept the '-O' flag to specify that the changelist number argument is the original number of a changelist that was renumbered on submit.

#363423 (Bugs #32055, #41995) ** The '-g', '-u', and '-o' flags to 'p4 groups' are now supported. The functionality has been present but undocumented since the 2009.2 release.

#360990 (Bugs #33080, #25377) ** Providing a typemap entry that maps some or all of a spec depot's revisions to filetypes 'text+CS<n>' or 'text+FS<n>' will now cause the server to purge edit revisions of those spec depot files appropriately.

#359100 (Bugs #15959, #24457, #31911, #36804) ** If the optional SpecMap field of the depot spec for a spec depot contains a mapping, only revisions that match that mapping will be stored in the spec depot.

#354289 ** On a replica server, 'p4 pull -l' will now include information about each pending revision's change number, revision date, and last-modified-time.

#353194 (Bugs #3512, #29036) ** Server trigger invocation lines may now use the new variables %clientprog% and %clientversion% to access the client's "prog" and "version" information, respectively.

#353068 (Bug #48562) ** The 'p4 obliterate' command now ignores archived files by default; to instruct the command to process archived files you must pass the -A flag.

#353068 (Bug #48598) ** The 'p4 print' command now accepts the -A flag, to print a file in an archive depot.

#351058 ** The new table db.view.rp stores view mapping lines for clients bound to a single server.

#350377 (Bug #44455) ** If the '-e' flag to 'p4 clients', 'p4 branches', or 'p4 labels' specifies a literal string with no wildcards, the server will now use the index in the search and avoid scanning db.domain.

#345318 ** Running 'p4 sync' with no file pattern on a client with no opened files will now automatically remove un-needed havemap entries from the client's view. #340478 ** 'p4 dbverify' and 'p4d -xv' will now specifically report problems with overflow data items, these are metadata records which are too large to fit on a single database page. Also, spelling corrections to these reports and a new note that some problems are only warnings.

#340413 (Bug #47282) ** Replica server re-configurations which affect background pull thread behaviors no longer require a server restart to take effect.

#338798 (Bug #46363) ** The 'p4 verify' command on a replica server will no longer attempt to transfer missing or damaged files from the master server itself.

#336044 ** The 'p4 pull' command now supports the '-T' and '-F' flags. These flags have the same syntax and meaning as they do for 'p4 export'.

#329784 (Bugs #26031, #42006) ** The new command 'p4 dbverify' can be run by a super user or operator to perform low-level verification checks on the database tables. This is the same level of checking as is performed by the 'p4d -xv' command, which is now documented.

#321637 (Bug #23109) ** The command 'p4d -jd dump.file db.tablename' can now be used to checkpoint just a single named table into the named dump file.

#321561 (Bug #20259) ** 'p4d -xv' and 'p4d -xr' will now set the operating system exit code to a non-zero value if problems were found in one or more tables. A summary message with the count of the problem tables will also be printed in this case.

#320029 (Bug #40288) ** 'p4 groups -v -i <user>' now supports combining both '-v' and '-i' flags to display both indirect group membership and group resource limits in a single command.

Bug Fixes

(Bug #73265) ** This version addresses the SSL/TLS MITM CVE-2014-0224 vulnerability in OpenSSL by linking in version 1.0.1h

#744802 (Bug #69776) ** A server with security=3 which uses a P4AUTH server that has an auth-check trigger defined will no longer perform password strength checking, since the external authentication system is responsible for enforcing password strength requirements.

#598303 (Bug #63987) ** A memory leak in replica on-demand file transfer is fixed.

#565785 (Bug #62127) ** Fixed a rare server crash involving complex combinations of exclusions in protections, branch view, and client view in integrate.

#547463 (Bugs #53165,#60056) ** *** A Windows virus scanner will no longer block access to the logfile and cause multiple concurrent threads to hang.

#547239 (Bug #61205) ** Fixed a timing problem impacting forwarding replica reliability on Windows servers.

#535187 (Bug #60277) ** Server crash caused by malicious connection. Fixed.

#515167 (Bug #59192) ** A memory leak in the client workspace lock feature is fixed.

#513635 (Bug #58700) ** 'p4 integrate' could open files with an unset haveRev when the client mapping was complex. This has been fixed.

#507528 (Bug #58819) ** 'p4 interchanges' now defaults to the '-3' behavior when run with a stream argument, in order to more closely follow 'p4 integrate'.

#505914 (Bug #58769) ** 'p4 shelve' no longer fails with a 'missing from the rev table' error when shelving files that have been moved by 'p4 resolve'.

#504825 (Bug #58325) ** 'p4 counter -i monitor' no longer fails with a locking error on the db.config table.

#502049 (Bugs #57862, #58199) ** 'p4 sync -f' could flag a file as 'corrupted during transfer' if the immediately preceding file was deleted from the client due to being not present in the label being sync'd, and if those two files had differing file types (e.g., one was binary, one ktext).

#499273 (Bug #58256) ** 'p4 filelog -i' will now correctly show branch history when a revision range is specified for the initial file.

#368980,#498941 (Bugs #28397, #28753, #29835, #43984, #57961) ** 'p4 login' would issue tickets without client address restrictions if that command was submitted through a proxy, or a broker or if P4AUTH was in use, this has been fixed. 'p4 info' reported the proxy or broker address as the client address if one of those were in use. Now, 'p4 info' reports both a PeerAddress and a ClientAddress. The ClientAddress omits the port. The old 'p4 info' format is avaliable for api <= 70.

#497791 (Bug #58255) ** "p4 merge" will now correctly recognize moved source files when they have been deleted and re-added after being moved.

#496304 (Bug #58193) ** "p4 copy" and "p4 integrate -t" will now copy all attributes (including those not set to be propagating) when opening files for "branch".

#486432 (Bug #56773) ** On Server shutdown client commands are now prevented from running during the final stages of process termination.

#486047 (Bug #55422) ** Non fatal depot respository librarian errors are now reported in the Server logfile.

#486009 (Bug #57488) ** It was possible to output the generated branch view of a -S stream with a -P parent when the stream and parent were not of the same depot lineage. This is now disallowed.

#484326 (Bug #57370) ** Validation of a stream specification form failed to reject spec Path fields containing leading wildcards ( *, ... ) causing client and branch views to be incorrectly generated. Existing streams containing such leading wildcards in Path fields will invoke an error the next time they are attempted to be saved. Correct these errors by removing leading wildcards.

#482580 (Bug #56339) ** 'p4 copy' with both (-S) stream and (-s) fromFile could falsely report "CopyNeedsMergeFirst" error when no merge exists. This has been fixed.

#482438 (Bug #18060) ** 'p4 add' will now fail if the file is slated as exclusive open in the typemap, and the file is already opened by someone else.

#481968 (Bug #56430) ** 'p4 group -a' was returning an "illegal command usage" error on some platforms. This has been fixed.

#479612 (Bug #56607) ** 'p4d -xx' and 'p4d -xv' were mistakenly printing non-error messages to stderr. Those messages are now printed to stdout, and only actual errors are printed to stderr.

#479503 (Bug #54048) ** The 'archive' and 'restore' commands now copy compressed binary files between the local depot and the archive depot in their compressed format (i.e., without uncompressing, then recompressing).

#478740 (Bug #55738) ** 'p4 reconcile' ignored typemap entries. This has been fixed.

#478690 (Bug #56331) * On Windows, the p4 client would mistakenly attempt to create a directory when that directory already existed as a symbolic link created via 'mklink /d'.

#472861 (Bug #56416) ** Performance degradation from excessive scans of db.resolve with the 'p4 shelve' command has been fixed.

#470383 (Bugs #53678,#56359) ** On Windows an external application will no longer cause sporadic loss of the RCS archive head-1 revision.

#471479 (Bugs #56347,#56421) ** On Windows, 'p4d -jd' would skip tables larger than 4GB, and 'p4d -jc' would fail to truncate journals larger than 4GB.

#471096 (Bug #56243) ** Added 'p4 help legal' to include the full OpenSSL license text with appropriate acknowledgements.

#467304 (Bug #56226) ** Server now detects if broker closes connection as a result of client control-C.

#462189 (Bug #55748) ** Resolve records in 'p4 fstat' output will no longer have gaps in their numbering.

#458325 (Bug #44399) * Syncing an apple (resource filetype) file would fail with network transfer errors. This has been fixed.

#454430 (Bug #54729) ** Police that private key is of type RSA. Prevent loading of DSA private keys.

#453549 (Bug #55540) ** 'p4 counter -i' race condition removed.

#445556 (bug #53950) ** If a stream and the stream parent have any identical 'Ignored' fields, there is a redundant exclude entry in the generated branch view. This has been fixed.

#443907 (bug #54921) ** *** p4d, p4p, p4broker run as service on NT could not see P4SSLDIR value in registry.

#440267 (Bug #54213) ** 'p4 client -s' to switch client views could fail to report any informational message regarding the outcome of the command.

#440231 (Bug #54176) ** If a form type had a form-save trigger defined, but did not have a form-in trigger defined, the form-save trigger was called with an empty formfile.

#436410 (Bug #53679) ** 'p4 integrate' could fail if the only depot for the source was a remote depot and a change range was specified. The error 'Relock failed in Position()' would be reported under this scenario.

#436206 (Bug #53742) ** A Super user logged in via a ticket trying to login another user through a proxy did not work. Fixed. Also applies to Auth server use.

#435729 (Bug #53366) ** 'p4 move' will now open files at the correct depot revision when the target of the move is an existing (deleted) file. Previously the file would be opened for move/add at revision #1, which could lead sync to schedule spurious resolves.

#435626 (Bug #53776) * 'p4 set P4WEBSERVICEFLAGS=<value>' works again.

#432300 (Bug #53529) ** Files that have been opened with 'p4 copy -v' and then synced while open will now be transferred to the workspace when reverted.

#431728 (Bug #53461) ** Resolving a move could in rare circumstances result in the file being opened in a workspace location that it was formerly mapped to rather than the currently mapped location. (When this happened, a subsequent sync would correct the issue.) This has been fixed.

#431614 (Bug #53456) ** Resolving a move would fail if the target of the move was already opened for add on another client. This has been fixed.

#429428 (Bug #51965) ** When replicating a server which was initially created prior to 2008.2, and has not yet been reloaded from a checkpoint to enable the database checksums feature, 'p4 journaldbchecksums' will no longer report 'table checksums DIFFER' in the replica log but will instead report 'table checksums unknown (master)'.

#427158 (Bug #53155) ** This change significantly improves performance of <filespec>@label, when filespec contains no wildcards and is not from a remote depot.

#426213 (Bug #53180) ** 'p4 resolve' could fail with a "can't resolve: (shelved change was deleted) error if the file was shelved in multiple places and the file to be resolved was from an older shelved change. This has been fixed.

#425360 (Bug #47395) ** 'p4 shelve' could fail with a "missing rev" error if a file to be shelved has resolve records to its head revision and also to a shelved file revision. This has been fixed.

#424140 (Bug #53126) ** Attribute resolves now combine correctly with branch resolves.

#423257 (Bug #52484) ** 'p4 copy' no longer deletes target files in a parent stream when those files are entered in the Ignored: path of the donor stream.

#422968 (Bug #52995) ** 'p4 populate' will no longer permit target files to be overwritten when a revision specifier is provided on the second file argument.

#421165 (Bug #52959) ** Using the deprecated '-d' flag to 'p4 integrate' will now propagate move/delete revisions as plain deletes, rather than skipping them entirely.

#419958 (Bug #52820) ** The replica was incorrectly reporting a digest mismatch for a file which was retyped using 'p4 retype -t text+k'. #418980 ** The 'p4 istat' command is no longer allowed on a read-only replica.

#417685 (Bug #52442) * A client command may now pass up to 256 command-line flags.

#414070 (Bug #52521) ** A file that is moved back and forth between the same names in two codelines will now correctly propagate the most recent filename when integrated and resolved automatically.

#412671 (Bug #52372) ** Replica server 'p4 pull' commands now use the server disk space configurables and will check for sufficient disk space periodically.

#412338 (Bug #52231) ** Replica servers were incorrectly treating 'p4 counter -i' as a read-only command.

#411861 (Bug #51623) ** The 'p4 verify -z' command now automatically disables file batching, and it is no longer necessary to specify '-b 0' when running 'p4 verify -z' in order to get acceptable performance..

#410909 (Bug #52181) ** When using 'p4 copy -S -P' or 'p4 merge -S -P' to copy or merge changes by reparenting on the fly, directional flow and copy/merge rules are no longer enforced. In the case of 'copy' however, a check for merged down changes is still performed.

#408930 (Bug #52147) ** Using 'p4 client -s -S' to switch a non-stream client into a stream client will now issue a warning about destroying the clients static view.

#405701 (Bug #52069) ** Files that have been opened for move from an old revision will now produce the correct base file (the origin of the move) when synced.

#397922 (Bug #51656) ** 'p4 monitor pause' no longer erases the application name, host address, and workspace name fields.

#393714 (Bug #51180) ** 'p4 users -m N <pattern>' could display fewer than N users matching the pattern, if some service users or operators also matched.

#393526 (Bug #51292) ** A Remapped stream path disallowed files starting with a single dot, interpreting the file to be starting with a wildcard.

#393175 (Bug #51183) ** It is once again possible to create, edit, and delete a client spec which contains a back-slash (\) character, when the server is on a Windows platform.

#390961 (Bug #17878) ** A job name beginning with a hyphen is now disallowed.

#387667 (Bug #50828) ** Reverting a file that has been synced after being opened by 'p4 delete -v' will now correctly sync the file to the workspace.

#386216 * In some cases, a Windows client trying to delete a symbolic link to a directory could fail with the error message: "unlink: <symlink-name>: Access is denied.".

#384441 (Bug #50644) * The '-d' flag, which specifies the current directory, is now in effect for the 'p4 set' and 'p4 tickets' commands.

#379943 (Bug #50375) ** A replica server with rpl.pull.position set might echo journal state information to the log excessively following a 'p4 monitor resume' command resuming the replica's pull thread.

#379327 (Bug #50311) ** 'p4 verify -t' will now schedule an archive transfer of a missing or damaged file which is a lazy copy.

#369361 (Bug #26775) ** 'p4 admin updatespecdepot -a' now includes protect, triggers, jobspec, and license forms in its list of form types to process.

#367474 (Bug #49092) ** It is once again possible to submit a file whose name contains a single double quotation mark character using 'p4 submit -d', although only if the server has neither a form-in trigger of type 'change' nor a form-save trigger of type 'change'.

#366680 (Bug #49557) ** 'p4 -ztag diff -sb' could report invalid data for the 'depotFile' and 'rev' tags for open branched files that had been modified.

#366184 (Bugs #42854, #49383) ** The MD5 digest file which is created for a compressed checkpoint contains the digest of the uncompressed checkpoint data, so the filename has been changed to omit '.gz'.

#361586 (Bug #48744) ** Updating a shelf such that a previously-shelved edit is changed to a lazy copy of a different archived file will no longer result in a revision that the replica server is unable to transfer.

#352567 (Bug #47699) ** The '-h' flag on 'p4 login' is no longer restricted to super users.

#349544 (Bugs #42492, #46051) ** A 'p4 retype' command which finds that no files need retyping will now issue a warning message describing that fact.

#349470 (Bug #43904) ** An invalid form type for the 'p4 admin updatespecdepot -s' command will now generate a message warning about the unknown type.

#348775 (Bug #48125) ** On a replica server, 'p4 license -i' will no longer update the spec depot entry for the license.

#348308 (Bug #48242) * When the assumed type of a newly-added missing file is modified by a partially-wild typemap spec, the message about the assumed file type now reflects the typemap information.

#345397 (Bug #48150) ** A 'p4 cstat' command which retrieves no records due to exceeding map.joinmax1 will now display an appropriate message.

#341691 (Bug #33799) ** A typemap entry which defines an invalid filetype for spec depot data is quietly ignored, and the spec depot files are stored in the default (text+C) type.

#340854 (Bug #34226) ** A 'p4 obliterate' command which obliterates both local-depot files and spec-depot files with a single filename pattern will no longer leave a single extra row in either db.revdx or db.revhx.

#338261 (Bug #47013) * A 'p4 sync' operation which fails due to P4CLIENTPATH will no longer issue the message: "Fatal client error; disconnecting!"

#337986 (Bug #47021) * ** Specifying an out-of-range port number now results in an error message, rather than interpreting the port number modulo 65536.

#337170 (Bug #21657) ** Attempting to open a spec depot file for edit or delete no longer produces the message "File isn't in revisions table!"

#324724 (Bug #46254) ** 'p4 fstat -F' filter expressions are now evaluated properly when the arguments are larger than 2^32-1.

#321510 (Bug #36807) ** The standard trigger variables (%client%, %user%, etc.) are now available to archive triggers.

#321281 (Bug #33612) ** Submitting a file of type +X via the proxy no longer crashes the proxy.

#320613 (Bugs #16997, #18719, #29781, #32950) ** Triggers of type "fix-*", "form-*", and "auth-*" now validate their path value more thoroughly.

#320243 (Bug #14434) ** An improved error message is now issued for a 'p4 add' command of a file name containing the ellipsis wildcard (...)

#320100 (Bug #42051) ** Invalid regular expression patterns in a 'p4 fstat' command now issue a syntax error message instead of quietly failing to match.

#319627 (Bug #45848) ** Normal termination of a Unix server will now once again display a log message for each child connection that was running at the time of the shutdown.

#318993 (Bug #24639) ** 'p4 opened' now displays '*exclusive*' for opened files of type +l.