Major Enhancements

#616528 ** The new 'p4 integrate' engine made available in 2011.1 and refined in subsequent releases is now the default. Sites which are using streams, or which have set the dm.integ.engine configurable to an explicit value, will not see any difference in behavior. Sites which wish to continue using the old (2006.1) integration logic must set the dm.integ.engine configurable to '2'. Sites switching to the new engine should expect the following changes:

1) New types of resolve scheduled for differences other than content: filename, filetype, attribute, etc. Note that in order to resolve differences in filename, move/add and move/delete revisions must be integrated together in pairs; attempting to integrate only half of a moved file pair will by default result in an error.

2) Many situations which used to cause integrate to fail with an error and prompt for a flag in order to verify the user's intent will now instead result in a resolve. For example, files which have been deleted in the source and edited in the target may now be resolved such that the user can choose to accept or ignore the deletion.

3) Base selection now considers the individual edits made to each file in order to more accurately propagate changes.

#575959 (Bugs #58134, #59015, #60774) ** The 'p4 server' spec now allows the definition of two new types of Perforce server nodes: Commit Server, and Edge Server. An installation with exactly one Commit Server, one or more Edge Servers, and (optionally) other replicas, proxies, and brokers, supports Federated Server functionality. An Edge Server is a Forwarding Replica which independently supports local work in progress. A Commit Server is a master Perforce server which cooperates with each Edge Server to support submitting that work via the Edge Server. Most work which requires a client workspace is performed directly on the Edge Server, and is fully offloaded from the Commit Server. Most administrative work, including the commands which edit most spec objects, is performed on the Commit Server, and is automatically forwarded when a spec command ('p4 protect', 'p4 group', 'p4 stream', etc.) is issued against an Edge Server. Since Edge Servers support distinct sets of work in progress, they must be adequately provisioned, securely administered, and reliably backed up; please contact Perforce Technical Support if you need assistance in planning or deploying Edge Server instances in your environment.

Minor Enhancements

#716174 (Bug #68945) ** A Windows Commit Server might crash under heavy load.

#681927 (Bug #65134) ** 'p4 list' now accepts the '-C client' flag. This option limits the files to those mapped through the users client workspace.

#671247 (Bug #67318) ** 'p4 reviews' now accepts the '-C client' flag. This option limits the files to those opened in the specified clients workspace (can be used with -c).

#668192 (Bug #60133) ** The 'p4d -jd' and 'p4d -jr' commands now support '-k/-K' flags for table-level filtering. These flags are uncommon, and are generally used only by Perforce technical support.

#647654 (Bug #66372) ** The lbr.replication configurable for a replica now accepts the new setting 'cache'; see 'p4 help replication' for details. Also, the rpl.verify.cache configurable can be specified to instruct the replica to verify archive digests on every reference (this can be expensive). Some variants of 'shelve -r' and 'shelve -f' now write additional @dl@ journal records describing the archive files that are being replaced in the shelf.

#639050 (Bug #66099) ** 'p4 sizes' now accepts the '-A' flag to display file size information for files in the Archive depot.

#625219 (Bug #64412) ** 'p4 property -l -A' now includes the property sequence number in its output.

#623802 (Bug #2054, #65142) ** 'p4 diff' and 'p4 diff2' now support a '-Od' flag to limit their output to differing files only.

#623464 (Bug #64868) ** Set security=4 to specify that authenticated service users must be used for all replica server and remote depot connections to this server.

#618347 (Bug #61231) ** 'p4 unshelve' will now schedule a branch resolve when unshelving an edit to a file that has been deleted or that does not exist.

#616051 (Bug #52759) ** 'p4 sync' now defaults to the '-s' behavior for clients with 'allwrite' and 'noclobber' set.

#615297 (Bug #63617) ** 'p4 submit' will now record 'branch' and 'copy' resolve records that come from earlier revisions of the same file as permanent integration records. This makes it possible to record that an earlier revision was copied over a later one to roll it back.

#612073 (Bug #64526) * ** 'p4 reconcile' and 'p4 status' will now attempt to convert 'add' and 'delete' actions into paired 'move/add' and 'move/delete' actions by comparing the added client files to the depot versions of their missing counterparts.

#605110 (Bugs #63955,#66716) ** 'p4 revert' now accepts a '-w' flag to indicate that files which are open for add should be deleted (wiped) from the workspace.

#604353 (Bugs #60118,#62068) ** The server spec for a replica server now contains a new optional field, named ArchiveDataFilter. This field can be used to specify the files which are to be immediately scheduled for transfer to the replica upon submit. Other files in the repository are still available to the replica users, but since they were not fetched immediately by the pull -u threads, there will be a delay when they are first referenced while they are transferred from the master.

#603759 (Bugs #64097, #64098) ** 'p4 -ztag info' now reports on the status of the client workspace lock, if called with a valid client. Also, administrators may set server.locks.sync=0 to specify that the sync command should not take the client workspace lock at all; at the default setting of 1, the client workspace lock is taken in shared mode as before.

#602564 (Bug #56252) ** 'p4 verify' now accepts the '-s' flag to indicate that, in addition to verifying the file's digest, the file's size should also be verified. 'p4 verify -t' no longer implies the '-s' flag; specify '-s' explicitly to cause 'verify -t' to verify the size.

#601710 (Bug #59275) ** Files that have been moved and are open for edit at an older revision may now be scheduled for a filename resolve by syncing to the move/delete revision. Accepting the new filename will move the open file, similar to 'p4 move -f', allowing the edit to be submitted under the new filename.

#599833 (Bug #59476) ** The 'p4 clients' and 'p4 labels' commands now take the -a and -s flags, which are useful when running in replicated configurations.

#597710 (Bug #21852) ** The configurable server.commandlimits can be set to a non-zero value to disable the use of command-line overrides for the MaxResults, MaxScanRows, and MaxLockTime limits defined in the group specs. Set server.commandlimits=1 to allow per-command flags to specify lower, but not higher, resource limits, and set it to the value 2 to quietly ignore command-line resource limits entirely.

#591780 (Bug #61585) ** Various improvements have been made to the 'p4 journaldbchecksums' command and to related tools for monitoring the integrity of replica servers in a multi-server installation. Administrators who have one or more replica servers deployed should: a) ensure they have an 'integrity.csv' log defined for all servers b) configure the new rpl.checksum.* configurables for the appropriate level of integrity checking c) routinely monitor the integrity.csv file for issues d) use the new features of the 'journaldbchecksums' command to investigate and resolve server integrity problems that arise.

#589668 (Bug #41143) * ** When connecting to unicode-enabled servers, a default value for the client's P4CHARSET will now be chosen based on the platform and code page if P4CHARSET is not set explicitly.

#588464 ** A server which has a non-empty serverid, but does not have a P4NAME specified, will now use the serverid as the P4NAME. We recommend that all servers should be configured with a serverid, and you should use the serverid in your 'p4 configure' commands to specify the configuration for that server. Specifying the P4NAME or -In value when starting the server is then no longer necessary.

#586875,#677508 (Bug #67550) ** Trigger definitions can now request the expansion of three new trigger variables: %servername% is set to the value of the server's P4NAME; %serverid% is set to the value of the server's server.id. In a distributed installation, %submitserverid% is set to the server.id of the Commit Server or Edge Server where the submit command was run.

#569772 (Bug #62259) * On Windows, 'p4 set -S <service>' will now issue an error message if there is no corresponding sub-key in the Windows registry.

Bug Fixes

#708462 (Bug #68808) ** Changing the spec.hashbuckets configurable no longer causes all existing autoreload labels to be empty.

#705600 (Bug #66770) ** A replica which used the ClientDataFilter or RevisionDataFilter options would stop replicating after the completion of a large 'p4 sync' command on the master server.

#700621 (Bug #68446) ** 'p4 unshelve -b' could previously carry resolve records from older revisions on the originating branch over to the destination branch, which in turn would create permanent integration history on submit. These records are now discarded during the unshelve.

#700115 (Bug #68342) ** 'p4 unshelve' was not permitting an ignored branch to be unshelved on top of a previously deleted depot file. This has been fixed.

#698342 (Bug #66972) ** 'p4 interchanges' on a virtual stream no longer requires the force (-F) flag to ignore the stream's expected flow.

#696998 (Bug #67954) ** 'p4 archive' will now refuse to archive a revision which is used as the source of a pending or shelved integration.

#694657 (Bug #68200) ** A rare case where 'p4 merge' could loop indefinitely when trying to track a renamed target file has been fixed.

#693514 (Bug #67698) ** Integrating and resolving a moved file would sometimes suggest ignoring the move when it had been copied over by another file. This has been corrected.

#693503 (Bug #67951) ** A rare case where ignore credit could be lost in the process of overwriting a change via copy has been corrected.

#693346 (Bug #68018) ** Change numbers recorded in the db.template index are based on the previous change committed +1. To reduce the chance of missing pending changes at time a stream spec is modified, the template index will now reflect the greater value between 'commmitted change +1' and 'change counter'.

#691799 (Bug #67611) * ** Reconcile mangled paths when called from a root directory (ie. '/' or 'C:\') This has been fixed.

#869231 (Bug #66849) ** Police maximum date range for SSL Certificate creation so that the date does not exceed the precision of the underlying int. Issue error indicating maximum number of days that can be specified.

#688624, 690969 (Bug #67981, 68100) ** A file that was overwritten by a copy and then moved was previously not joined with its parent/child file when merged back. This has been fixed.

#688064 (Bug #67680) ** 'p4 user' will not fail when noautocreate is set to 1 and the security level of the server is > 0 due to the password not being set.

#686560 (Bug #66854) ** The server consistency checker 'p4d -xx' would report depot inconsistencies during the 'db.integed vs db.rev' check should a file within a task stream be integrated to a target within the same task stream. This has been fixed.

#682378 (Bug #66785) ** The error message raised when a server connects to a remote depot server via an SSL connection and the trust check fails has changed to ServiceNoTrust which requires an administrator to correct the trust problem. The previous error messages wrongly implied that the end client user could correct the problem.

#680865 (Bug #67203) ** P4TRUST value was not honored for Windows Service settings ie. p4 set -S <service> Fixed. Also can be set via p4 configure.

#671142 (Bug #53464) ** The network-related performance of a 'p4 sync -f', 'p4 sync -p', or 'p4 print' command issued via a proxy over a long-haul network is improved by performing fewer network duplex flush operations. The new behavior, if problematic, may be disabled using the undocumented tunable 'rpc.deliver.duplex=1'.

#670223 (Bugs #52464,#54911,#66981) ** The server no longer allows a Build Farm workspace to be edited on the master server. Build Farm workspace definitions should be created and edited by issuing the 'p4 client' command directly to the Build Farm replica, not to the master server. It is still possible to delete a Build Farm workspace directly from the master server, but this requires the -f flag to be passed on the 'p4 client -d' command by an administrator; it is preferable to delete Build Farm workspaces by issuing the 'p4 client -d' command directly to the Build Farm replica.

#668938 (Bugs #34426,#65796) ** Accessing a file of type +X could cause the server to crash.

#668764 (Bug #67156) ** A Build Farm replica now refuses the 'client -d' command if it specifies a workspace not bound to that Build Farm replica.

#666659 (Bugs #67081,#67375) ** A 'p4 sync' command issued via a forwarding replica which accesses a file that is not in the replica's cache and for which the replica fails to retrieve the file from the master server would incorrectly be recorded as sync'd in the client's have list. This also caused incorrect file delivery when the forwarding replica was accessed via a proxy.

#661948 (Bug #66666) ** On Windows if the Server log file is made busy by another application, an error is placed in the Windows Application Event log.

#658282 (Bug #66768) ** 'p4 annotate -i' will no longer attempt to follow history from remote depots.

#656862 ** 'p4 copy' could fail to propagate a change in filetype or attribute when the target revision was already recorded as a direct copy of the source. This has been fixed.

#652978 (Bug #66630) ** It is no longer necessary to restart a Unix server following a 'p4 configure unset' of a configurable value.

#652052 (Bug #66384) ** A Windows replica server will now dynamically recognize when a 'p4 configure unset' command is replicated.

#651403 (Bug #66597) ** 'p4 interchanges' with a revision range could produce different results from the equivalent 'p4 integrate' command in some cases. This has been fixed.

#651019 (Bug #65773) ** If the client is terminated or the network is disrupted during the execution of a 'p4 sync' command, the server now notices the disruption more quickly and cleans up its own state (including the client workspace lock) more rapidly, thus avoiding situations in which the client workspace lock remained held by a 'p4 sync' that was no longer actively connected to its client.

#649135 (Bug #66256) ** Labels using the 'autoreload' option were being incorrectly updated by a 'labelsync' command which specified filespec argument(s) but did not specify the -a or -d flags. Files present in the label which did not match the filespec argument were lost from the label.

#648350 (Bug #66349) ** Certain server-to-server network messages (e.g., 'rmt-Journal') specify the workspace name as a string of length zero. The server log, monitor table, audit log, and structured server logs will now log these network messages with a workspace name of: "unknown".

#648013 (Bug #66251) ** 'p4 diff #head' will now correctly pair up files that are open for move.

#644053 (Bug #66309) ** 'p4 unload' will now refuse to unload a client which has one or more files of type +l opened. Such files must be explicitly reverted prior to unloading the client.

#643157 (Bug #63668) ** 'p4 integrate' now has more sophisticated logic in place to select a target from among multiple renamed variants of a file that all share common history with the source.

#641784 (Bug #66176) ** When 'p4 verify -t' on a replica server reported a BAD! file and scheduled the file to be re-transferred from the master server, the re-transfer request was quietly ignored by the 'pull -u' thread.

#638593 (Bug #66011) ** 'p4 shelve' will no longer fail with a 'missing from rev table' error when shelving a file that is open for branch and has a scheduled resolve from a remote depot.

#638364 (Bug #66081) ** Replica servers now treat 'logger -c N -t X' as an update command, instead of executing it locally on the replica server.

#635226 (Bug #65955) ** Replica servers now treat 'obliterate' as a read-only command if it does not specify the '-y' flag, thus executing the read-only obliterate command on the replica.

#634123 (Bug #65912) ** 'p4 integrate' will now recognize when a previously deleted change has been explicitly reinstated in the source, and permit it to override a deletion in the target when that is the case.

#630677 (Bug #65579) ** 'p4 submit -e' is now supported for use with task streams.

#621164 (Bugs #65121, #65124) ** Fixed a memory leak in 'p4 attribute' in replica servers.

#619878 (Bug #64650) ** The server no longer maintains the 'last access time' for service users.

#617921 (Bug #64944) ** Trying to connect a replica to a server which has journaling disabled now results in an error message, not a server crash.

#616323 (Bug #61797) ** 'p4 diff2 -q' would sometimes not give the 'no differing files' message when all files were identical. Fixed.

#614102 (Bug #64703) ** Partial information about an unloaded task stream can now be displayed using the command 'p4 -ztag stream -o <task-stream>'.

#614086 (Bug #64744) ** On a replica server, 'p4 verify -t' now allows the '-z' option.

#613774 (Bug #64781) ** The server now refuses to allow a client's ServerID field to be set to a non-existent server identifier.

#608529 (Bug #60612) ** 'p4 fstat -mN -Ru' now correctly limits the results based on the number of unresolved files, not the number of open files.

#607046 (Bug #64413) ** 'p4 property' now detects out-of-range values for the -s flag.

#605852 (Bug #64354) ** The replica server's journal pull thread was keeping the rdb.lbr file open even when it wasn't actively using it.

#603339 (Bug #64177) ** 'p4 fstat' was omitting the otherOpen tags for a deleted revision.

#598622 (Bug #63963) ** 'p4 resolve -at' of a file opened for edit will no longer produce 'corrupted during transfer' errors when keyword expansion differs between the depot and client files.

#598401 (Bug #63986) ** When an autoreload label is deleted, its server.locks lock file is now deleted as well.

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

#596612 (Bug #63873) ** 'p4d -jd /dev/null' was issuing a confusing message about being unable to write to /dev/null.md5.

#591150 (Bug #63488) ** It is no longer possible to submit a move/add revision without a corresponding 'moved from' integration record.

#587922 (Bugs #52464, #56428) ** When a client workspace is created on a Build Farm replica, the client name is also now created on the central server, resolving a race condition in which a client by that same name might be simultaneously created on another Build Farm server, or on the central server itself.

#587664 (Bug #60715) ** A replica configuration which accidentally specifies multiple metadata pull threads no longer causes multiple threads to run. The extra metadata pull threads now block on a lock and are idle.

#585006 (Bug #62994) ** The 'submit -e' command now deletes the shelf database records using a single database transaction.

#577771 (Bug #62637) ** The 'p4 merge' command was not correctly checking that move operations were propagated atomically (per change 465399). This has been fixed.