-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRELNOTES.txt
868 lines (619 loc) · 29.1 KB
/
RELNOTES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
Release Notes for
P4Perl, Perforce's script API for Perl
Version 2024.2
Introduction
This document lists all user-visible changes to P4Perl
from release 2007.3, the first supported P4Perl release.
Perforce numbers releases YYYY.R/CCCCC, e.g. 2002.1/30547.
YYYY is the year; R is the release of that year; CCCCC is the
bug fix change level. Each bug fix in these release notes is
marked by its change number. Any build includes (1) all bug fixes
of all previous releases and (2) all bug fixes of the current
release up to the bug fix change level.
To determine the version of your P4Perl, issue the following
command:
perl -MP4 -e "print P4::Identify()"
--------------------------------------------------------------------------
Installing P4Perl
Windows users can download an installer containing pre-built
packages for P4Perl from the Perforce FTP site at
https://ftp.perforce.com/perforce for this release for Strawberry Perl
5.38. Users on other platforms (including ActiveState Perl) must build
from source, as detailed below.
--------------------------------------------------------------------------
Building P4Perl from Source
1. Download the Perforce C++ API from the Perforce FTP site at
"https://ftp.perforce.com/perforce". The API archive is located in
release and platform-specific subdirectories and is named "p4api.zip"
for Windows and "p4api.tgz" for non-Windows platforms.
For Windows platforms using Strawberry Perl you will need to use the
MinGW builds of the P4API under the bin.mingw* directories. Older
versions of ActiveState Perl used Visual Studio, so under the bin.ntx*
directories you will need "p4api_vs2017_dyn_openssl1.1.1.zip" or similar.
Note: 64-bit builds of P4Perl require a 64-bit version of the C++ API
and a 64-bit version of Perl.
2. Unzip the archive into an empty directory.
3. Extract the P4Perl API archive into an empty directory.
4. Locate the SSL libraries for your Perl install, for example Strawberry
Perl's location is 'C:\Strawberry\c\lib\' (libcrypto.a and libssl.a).
5. To build P4Perl, run the following commands:
On Unix platforms:
perl Makefile.PL --apidir=<absolute path to Perforce C++ API> \
--ssl=<absolute path to SSL libraries>
make
On Windows platforms (with Strawberry Perl built with MinGW):
perl Makefile.PL --apidir=<absolute path to Perforce C++ API> \
--ssl=<absolute path to SSL libraries>
gmake
On Windows platforms (with Perl built with Visual Studio):
perl Makefile.PL --apidir=<absolute path to Perforce C++ API> \
--ssl=<absolute path to SSL libraries>
nmake
On Windows platforms (with ActiveState Perl built with MinGW):
ppm install MinGW
ppm install dmake
perl Makefile.PL -make=dmake \
--apidir=<absolute path to Perforce C++ API> \
--ssl=<absolute path to SSL libraries>
dmake
dmake install
Note: to reinstall cleanly P4Perl, remove the directory created
in step 2, then re-extract the archive.
6. To test your P4Perl build, run the following command:
<make> test
(where <make> is the appropriate make for your platform)
Note: on certain Windows platforms and versions of Perl,
the manifest file is not automatically applied to P4.dll,
so it must be done manually. This is known to happen
on 64-bit Perl 5.8.9. Tests failing with
"Can't load ... P4.dll" are a symptom of this.
The two commands to run are:
mt -nologo -manifest blib\arch\auto\P4\P4.dll.manifest \
-outputresource:blib\arch\auto\P4\P4.dll;2
del blib\arch\auto\P4\P4.dll.manifest
Note: the test harness requires the Perforce server executable
p4d and Perforce command line executable p4 to be
installed and in the PATH.
5. To install P4Perl, run the following command:
<make> install
(where <make> is the appropriate make for your platform)
Note: on Unix platforms, the installation must be performed
as the root user
SSL support
-----------
Perforce Server 2012.1 and later supports SSL connections and the
C++ API has been compiled with this support. For applications that
do not require SSL support the C++ API provides a stub library
(libp4sslstub.*) to satisfy the linker requirements.
P4Perl will build with the stub library by default. To enable
SSL support, provide the switch --ssl [librarypath] to the build.
Without [librarypath] the linker will use the default ssl libraries
provided by the operating system. If a library path is provided,
the linker will be instructed to look there first.
--------------------------------------------------------------------------
Compatibility Statements
Server Compatibility
This release of P4Perl officially supports Helix Core Server 2024.2.
API Compatibility
This release of P4Perl is built against the 2024.2 (2024.2/2675662)
Perforce API. Older releases of the Perforce API may work but are no
longer supported.
Perl Compatibility
While Perl is usually backward compatible, we have tested this release of
P4Perl to support building from source with Perl versions 5.26, 5.30,
5.34 and 5.38
The P4Perl 64-bit Windows installer requires Perl 5.38 64-bit.
OpenSSL Compatibility
To build P4Perl with encrypted communication support, you must
use the version of OpenSSL that Perforce C/C++ API has been
built against. Running P4Perl linked to an older library will
fail with the error:
"SSL library must be at least version 1.1.1"
This release of P4Perl is supported with OpenSSL 1.1.1 and 3.0.8.
Platform Compatibility
While P4Perl is generally portable, this release is certified
only on the following platforms:
Linux kernel 2.6+ for Intel(x86_64)
Ubuntu 20.04, 22.04, 24.04
Rocky Linux 8, 9
Linux kernel 2.6+ for ARM(aarch64)
Ubuntu 20.04, 22.04, 24.04
Rocky Linux 9
Windows for Intel(ntx64)
Server 2016, 2019, 2022
Windows 10, 11
Compiler Compatibility
To build P4Perl from source, you must use a version of Perl that
has been compiled with the same compiler used to build the
Perforce C++ API. For most platforms, use gcc/g++.
Attempting to use a different compiler or a different version
of the compiler can cause linker errors due to differences in
name handling between compilers.
The Windows installer was built with Strawberry Perl 5.38
Compatibility with Previous Releases
This release of P4Perl is backwards-compatible with all previous releases
from Perforce Software.
Known Limitations
The Perforce client-server protocol is not designed to support
multiple concurrent queries over the same connection. For this
reason, multi-threaded applications using the C++ API or the
script APIs (P4Perl, P4Ruby, etc.) should ensure that a
separate connection is used for each thread or that only one
thread may use a shared connection at a time.
P4Perl does not support the P4VFS sync functionality due to compiler
inconsistencies with the P4API builds
Deleted Methods
---------------
The following methods have been deleted from the P4 class and
are no longer available.
Dropped() Use IsConnected()
Final() Use Disconnect()
Init() Use Connect()
IsParseForms() Form parsing is now always on
Login() Use RunLogin()
MergeErrors() Errors and warnings are now separate
ParseForms() Form parsing is now always on
Tag() Tagged mode is on by default [see Tagged()]
New Methods
-----------
The following methods are new to P4Perl.
GetApiLevel() Returns the API compatibility level
P4ConfigFile() Returns the path of the P4CONFIG file
IsConnected() Returns true if the client is connected
Debug() Sets the debug level
GetMaxResults() Returns the current maxresults limit
GetMaxScanRows() Returns the current maxscanrows limit
GetMaxLockTime() Returns the current maxlocktime limit
SetMaxLockTime() Sets the current maxlocktime limit
GetProg() Returns the name of the program (if set)
ServerLevel() Returns the (numeric) level of the server
GetTicketFile() Returns the path to the current ticket file
SetTicketFile() Sets the path to the current ticket file
GetVersion() Returns the version of the script
SetVersion() Sets the version of the script
ClearHandler() Clears the active results handler
GetHandler() Returns the results handler object
SetHandler() Sets the results handler object
Renamed Methods
---------------
In the Public Depot version of P4Perl, unknown methods are assumed
to be Perforce command and are executed accordingly. For example,
you can issue a "p4 info" command as follows:
$p4->Info();
This approach causes problems with keywords like "client," which
is both a command and a setting in the client environment
(P4CLIENT). To resolve this ambiguity and to make P4Perl
consistent with other Perforce scripting interfaces, this
convention has been changed. In Perforce P4Perl, methods with
names prefixed with "Run" are interpreted as Perforce commands.
For example:
$p4->RunInfo();
Tagged Mode and Form Parsing
----------------------------
In the Public Depot version of P4Perl, tagged output and
form parsing mode are off by default but most scripts
turn them on immediately. In Perforce P4Perl, both form
parsing and tagged output are on by default.
Form parsing cannot be explicitly disabled, but tagged output may
be turned on and off by using the following calls:
$p4->Tagged( 0 ); # Disabled
$p4->Tagged( 1 ); # Enabled
Because form parsing does not work when tagged output is disabled,
this method can be used to disable form parsing.
Calling Tagged() without a parameter is no longer supported.
Most users can simply delete any old calls to Tagged()
from their scripts. Previously it was not possible to
disable tagged output after enabling it.
--------------------------------------------------------------------------
Key to symbols used in change notes below.
* -- requires new P4Perl
** -- requires P4Perl built with new P4API
*** -- requires new p4d server program
--------------------------------------------------------------------------
New functionality in 2024.2 (2024.2/2682743) (2024/11/15)
#2678431 (Job #122588 ) * ** ***
This release of P4Perl supports the 2024.2 Perforce API (2024.2/2675662)
#2669611 (Job #122593 ) * **
Added the support and installer for perl 5.38.
#2655061 (Job #121113 ) * **
Added the support for Linux ARM64/AARCH64 architecture.
--------------------------------------------------------------------------
New functionality in 2024.1 (2024.1/2601332) (2024/05/22)
#2599289 (Job #120166 ) * ** ***
This release of P4Perl supports the 2024.1 Perforce API (2024.1/2596294)
--------------------------------------------------------------------------
New functionality in 2023.2 (2023.2/2548066) (2024/01/26)
#2545342 (Job #119080) * ** ***
This release of P4Perl supports the 2023.2 Perforce API (2023.2/2519561)
--------------------------------------------------------------------------
New functionality in 2023.1 Patch 1 (2023.1/2541326) (2024/01/12)
(Job #118833) * **
This release is built against P4API (2023.1/2513900),
to address possible vulnerability: CVE-2023-5759.
--------------------------------------------------------------------------
New functionality in 2023.1 (2023.1/2468503) (2023/07/26)
#2460330, #2460406 (Job #116146) * ** ***
This release of P4Perl supports the 2023.1 Perforce API (2023.1/2442900)
--------------------------------------------------------------------------
New functionality in 2022.2 Patch 1 (2022.2/2541315) (2024/01/12)
(Job #118833) * **
This release is built against P4API (2022.2/2531894),
to address possible vulnerability: CVE-2023-5759.
--------------------------------------------------------------------------
New functionality in 2022.2
#2402303 (Job #113794, #113795) * ** ***
This release of P4Perl supports the 2022.2 Perforce API which includes
OpenSSL 3 support
--------------------------------------------------------------------------
New functionality in 2021.1 Patch 2
Important security note
This version addresses vulnerabilities in OpenSSL (CVE-2023-0286,
CVE-2023-0215, CVE-2022-4450, CVE-2022-4304) by linking in version
1.1.1t of the library.
--------------------------------------------------------------------------
New functionality in 2021.1 Patch 1
(Job #109914 ) * ***
Windows and Mac builds have updated version of OpenSSL(1.1.1n),
to address possible vulnerability: CVE-2022-0778.
Linux builds are not affected.
--------------------------------------------------------------------------
New functionality in 2021.1
#2181291 (Job #107857) * ** ***
The 2021.1 release of P4Perl supports the 2021.1 Perforce API.
Bugs fixed in 2021.1
#218212 (Job #107789) * **
Fixed linking errors when building with p4api-glibc2.12 Perforce API.
#2182927 (Job #080871) *
Fixed P4::Tagged( bool, coderef ), it will now return results.
--------------------------------------------------------------------------
New functionality in 2020.1 Patch 1
(Job #104857) * ***
Windows builds have updated version of OpenSSL(1.1.1i),
to address possible vulnerability: CVE-2015-0288.
Linux builds are not affected.
--------------------------------------------------------------------------
New functionality in 2020.1
#2000936 (Job #103626) * ** ***
The 2020.1 release of P4Perl supports the 2020.1 Perforce API.
#2008976 * **
Perl Compatibility: The 2020.1 release of P4Perl is supported
building from source with Perl 5.32 and versions back to 5.28
Bugs fixed in 2020.1
#2003429 (Job #103318) * **
Class Map was generating leading "+&" for overlay "+" mapping.
#2004414 (Job #94112) * **
When paring spec with comments, a invalid spec would fail silently.
P4Perl will now raise exception when parsing invalid spec.
--------------------------------------------------------------------------
New functionality in 2019.1
#1842023
The 2019.1 release of P4Perl supports the 2019.1 Perforce API.
Perl Compatibility: The 2019.1 release of P4Perl is supported
building from source with Perl 5.28 and versions back to 5.14
--------------------------------------------------------------------------
New functionality in 2018.2
#1733778 (Job #90750)
The 2018.2 release of P4Perl supports the 2018.2 Perforce API.
Perl Compatibility: The 2018.2 release of P4Perl is supported
building from source with Perl 5.28 and versions back to 5.14
--------------------------------------------------------------------------
New functionality in 2016.1
#1385451 ***
Added 'progress' monitoring for DVCS Clone operations.
#1385422, #1384893, #1383825 ***
Added Init and Clone methods for DVCS support. Including test case 65-dvcs.
#1381249 ***
Added SetEnvrioFile( file ) and GetEnviroFile()
#1381228 ***
Added $p4->DefineSpec( type, spec ) to make use of then new %specdef%.
Includes a new test case 60-define-spec.
Bugs fixed in 2016.1
#1381221 *
Missing CMS_EDIT edit case for Resolve.
#1381218 *
Added '&' mapping to the MapMaker output. This also quells the compiler
warning about the missing case: in the two switch statements. Change to
unreleased feature (ditto mappings), to be documented in the release notes.
#1381212 (Job workshop:job000204) ***
Reenabled Progress support. Now the server sends a summary of files synced
in quiet mode.
#1381211 (Job workshop:job000325) ***
Support P4CHARSET=none
--------------------------------------------------------------------------
New functionality in 2014.1
#761858 (Job #59274) *
Added the ability for P4Perl to preserve comments in forms.
Comments are stored as a 'comment' key in the spec hash and
are accessible. For example:
my $spec = $p4->ParseGroup( 'my_group' );
print $spec->{'comment'};
Bugs fixed in 2014.1
#806054 (Job #65251) *
FetchXxx() methods were not returning data due to a
missing method: perlclientuser::OutputInfo()
--------------------------------------------------------------------------
New functionality in 2012.2
#507841 (Job #56481) *
Added RunTickets() method to list local tickets.
Note that $p4->Run("tickets") still gives the old error
message "Must upgrade to 2004.2 p4 to access tickets."
#509303 (Job #56513) * ** ***
Support for the new progress indicator API. P4Perl
supplies a new progress attribute, which can take an
instance of P4::Progress class or subclass. Progress
information is currently only supported for submits and
'sync -q'. Details can be found in the documentation.
(perldoc P4::Progress)
#499606 (Job #56518) *
New convenience method P4::IterateSpec that allows
easy iteration through some or all spec objects such as
clients or changes. The P4Perl implementation provides
two methods next() and hasNext(). Details can be found
in the documentation.
(perldoc P4::IterateSpec)
Bugs fixed in 2012.2
#513154 (Job #59168) *
Added abstract class P4::OutputHandler and renamed the methods
introduced in 2011.1 to match case consistence used P4Perl.
Change also includes the addition of perldoc for P4::OutputHandler.
(perldoc P4::OutputHandler)
Deprecated Method New Method
---------------------- ----------------------
outputMessage() OutputMessage()
outputText() OutputText()
outputInfo() OutputInfo()
outputBinary() OutputBinary()
outputStat() OutputStat()
#509755 (Job #58125) *
Correction to perldoc for P4::Message and P4 to identify a return
type of string when calling $p4->Errors or $p4->Warnings and a
return type of P4::Message object for $p4->Messages.
#504636 (Job #57507) **
API change to allow P4Perl on Windows to call '$p4->GetEnv()'
after setting 'use P4;' to fetch environment variables.
#501503 (Job #58484) *
Added missing 'StreamAtChange' field to cached specs.
#498724 (Job #58284) *
Specs returning results with arrays of hashed elements are now
null padded. Enabling the alignment of values when indexed into
the hash.
--------------------------------------------------------------------------
New functionality in 2012.1
#400839 (Job #51850) * ** ***
Enable "action resolve" to support resolves of branches,
deletes and file types. The existing P4::Resolver class has
been extended with a new method ActionResolve() that will be
invoked if an "action resolve" is required.
Details can be found in the documentation.
#414329 (Job #51634) * ** ***
P4Perl supports SSL connections if compiled with SSL support.
Instructions on how to compile with SSL support can be found
at the top of this document under "Building P4Python from
Source" and in the documentation.
P4.identify() will then report the version of the OpenSSL
library used.
Library used for building the Perforce C++ API (not the
version P4Python is linked against).
Bugs fixed in 2012.1
#446673 (Job #54196, #55063) *
Fixed action-resolve test hardness after server change of
the default integration algorithm
#421813 (Job #51749) *
Fixed unreferenced scalar reported when attempting to free
P4Results array.
#424055 (Job #51637) *
Minor fix to version string when building distribution.
Separated Makefile version parsing into a new class
Build::Version
#421820 (Job #51752) *
When using a UTF16 or UTF32 charset P4Perl would attempt to
format the command output messages in the same format. Fixed
to format client messages in UTF8.
#420702 (Job #51758) *
Perl would crash with a segmentation fault if a custom
Resolver object was used to resolve binary files. Fixed.
--------------------------------------------------------------------------
New functionality in 2011.1
#338403 (Job #47451) *
Added a SetEnv() method to set P4 environment variables in the
host's registry (available on Windows and OS X).
#328168 (Job #45860) * **
Enabled streams output as the default where the API level is
greater than 69.
#319432 (Job #42249) *
Added new callback handler for processing results.
P4::Spec results can now be processed individually using a set
of method callbacks from a user defined object. The user
defined object is set with the new method call SetHandler()
and must implement the following methods:
outputMessage()
outputText()
outputInfo()
outputBinary()
outputStat()
Bugs fixed in 2011.1
#406719 (Job #43424) *
Running 'print' on a file that started with '---' won't
output its content as it is interpreted as track output
even if track output is not enabled. This is now fixed.
There is still an oddity when p4.track = 1 and a user runs
p4.run_print() on a file that only has lines starting with
'--- '. In that case, the output of the print is lost.
Disable tracking by setting p4.track = 0 (the default) will
solve this problem.
#385159 (Job #49324) **
On Windows Vista, Windows 7, or Windows 2008, a client running as
Administrator would fail to properly process file names in
non-ASCII character sets (such as Shift-JIS).
#328944 (Job #41272) ***
Find ExtraTag fields such as 'firmerThanParent' and includes
them in the returned hash. Including additional tests
in 16-streams.
#328563 (Job #42097) *
Change order of P4API version string, now formatted as below:
(2011.1/308885 API)
#328186 (Job #42097) *
Updated the reported version strings for P4Perl and P4API.
#319431 (Job #43791) **
Bug fix for regression test 11-login.t
--------------------------------------------------------------------------
New functionality in 2010.2
#261035 *
Added new track option.
For more details about server performance tracking see:
http://kb.perforce.com/article/883
#244195 *
New P4::Messages() method returns an array of P4::Message()
objects, one for each message (info, warning or error) sent
by the server. The methods of this class allow script writers
to test the severity of the error and the generic reason for
the error as well as accessing the error message itself.
Bugs fixed in 2010.2
#291396 (Job #43424) *
Running 'print' on a file that started with '---' won't
output its content as it is interpreted as track output
even if track output is not enabled. This is now fixed.
There is still an oddity when p4.track = 1 and a user runs
p4.run_print() on a file that only has lines starting with
'--- '. In that case, the output of the print is lost.
Disable tracking by setting p4.track = 0 (the default) will
solve this problem.
--------------------------------------------------------------------------
New functionality in 2010.1
#23152 *
Added new ServerUnicode() method that allows script
writers to test whether or not a Perforce Server is in
internationalized (unicode) mode.
#231550 *
It's no longer necessary to execute a command against the
server before calling ServerLevel(), or
ServerCaseSensitive(). If no command has been run, then
P4Perl will automatically run a 'p4 info' in order to
gather the required information.
#230105 *
Three new class constants have been added to the P4 class:
$P4::VERSION = The P4Perl version string
$P4::PATCHLEVEL = The P4Perl patch level
$P4::OS = The OS name as P4Perl sees it
Bugs fixed in 2010.1
(none)
--------------------------------------------------------------------------
New functionality in 2009.2
#215001 (Job #35415)
A new method, P4::ServerCaseSensitive(), enables scripts to
detect whether a server is case-sensitive. Detection can only
be done after a command has been executed on the connection.
#214996 (Job #32915)
P4::SetPort() no longer permits the user to change the port
after the client has connected.
Bugs fixed since first release (228098)
#243114 (Job 38769#) *
P4Perl no longer crashes when attempting to parse the jobspec.
Bugs fixed in 2009.2
#215000 (Job #35411) *
P4Perl now correctly tracks disconnects from the server.
#222728 (Job #36569) *
The Map class removed '-' and '+' from the path if the form
Map::Insert(lhs, rhs) was used, even if these characters did
not appear at the beginning of the path. Now dashes and pluses
are preserved within the path.
--------------------------------------------------------------------------
New functionality in 2009.1
#193914 (Job #26730) *
The P4::Tagged() method now accepts an optional code reference
as well as a boolean, which enables you to run a subroutine
with the tagged status of the session temporarily toggled. For
example:
my $GetChangeCounter = sub{ $p4->RunCounter('change')->[ 0 ] };
my $changeno = $p4->Tagged( 0, $GetChangeCounter );
#191642 *
The P4::Spec class has a new method, PermittedFields,
which lists the field names that are permitted in specs of
that type.
Bugs fixed in 2009.1
#192044 (Job #30071) *
P4::RunLogin() now supports all valid arguments to "p4 login".
#192043 (Job# 32966) *
P4::RunPassword() can now handle the case when the user has
not previously set a password. For old password, specify an
empty string. For example:
$p4->RunPassword( $p4->GetPassword(), "newpassword" );
work regardless of whether a current password is set.
#192035 (Job# 31437) *
P4Perl now builds correctly when the API directory is
specified using a relative path.
#191643 (Job #28646) *
P4Perl now correctly parses jobs when the jobspec contained a
field with a name ending in a number.
--------------------------------------------------------------------------
New functionality in 2008.2
#165187 (Job #30362) *
A new class, P4::Map, exposes the Perforce mapping logic to
P4Perl users. This class enables script writers
to create and manipulate Perforce mappings within scripts.
The following methods are available in the P4::Map class:
Class Methods:
new() Constructor
Join() Join two maps returning a third
Instance Methods:
Clear() Empty a map
Count() Return the number of entries
IsEmpty() Tests whether a map object is empty
Insert() Inserts an entry into the map
Includes() Tests whether a path is mapped
Reverse() Swap left and right sides of the mapping
Translate() Translate a string through a map
Lhs() Returns the left side as an array
rhs() Returns the right side as an array
AsArray() Returns the map as an array
Bugs fixed in 2008.2
#169807 (Job #31110) *
P4Perl no longer crashes when RunResolve() is passed a
P4::Resolver object and a file path.
--------------------------------------------------------------------------
New functionality in 2008.1
#158238 (Job #27433) *
P4::RunResolve() now supports interactive resolves through two
new classes: P4::Resolver, and P4::MergeData. P4::Resolver is
a base class intended to be subclassed by users; simply
override the Resolve() method to implement the required merge
behavior. P4::Resolver::Resolve() is passed a P4::MergeData
object when it is called; this object contains the information
about the names and locations of the files in the merge, and
the hint from Perforce's built-in merge algorithm.
#152357 (Job #25063) *
The 'P4::GetEnv( $var )' method has been added to the
P4 class. This instance method enables the caller to
interrogate the Perforce environment, including reading
Perforce variables from P4CONFIG files and, on Windows, the
registry. P4::SetCwd() now loads any P4CONFIG file settings
that are appropriate to the new working directory.
#151525 *
P4Perl now returns P4::Spec objects from all methods
that parse Perforce forms. A P4::Spec object is a
blessed hash reference, so most existing code is
unaffected. Code that iterates over all members of
the hash must skip the new '_fields_' member. This
member variable is used to store a list of field names
that are valid in forms of that type. This approach
enables accessor methods for the fields in the form.
Simply call a method with the name of the field you
want to get or set prefixed with an underscore (_).
For example:
$client->_Root(); # Get client root
$client->_Root( $newroot ); # Set client root
Updating the hash directly is still supported and is
equivalent to using the method-based interface.
#158308 (Job #29309) *
P4Perl now supports Mac OS X 10.5.
Bugs fixed in 2008.1
#158323 (Job #29953) *
The P4::GetApiLevel() was missing; it has now been
implemented.
#150578 (Job #28760) *
The presence of deleted revisions in a file's history
might cause the fileSize and digest attributes to be
incorrect for other revisions in the output of
P4::RunFilelog(). This problem occurred because a
digest and file size were allocated to the deleted
revision. This problem has been corrected.