p4ruby 2014.1 → 2014.2.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/P4/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ class P4
2
+ Version = VERSION = '2014.2.0.pre1'
3
+ end
@@ -0,0 +1,770 @@
1
+ Release Notes for
2
+ P4Ruby, Perforce's script API for Ruby
3
+
4
+ Version 2014.2
5
+
6
+ Introduction
7
+
8
+ This document lists all user-visible changes to P4Ruby
9
+ from release 2007.3, the first supported P4Ruby release.
10
+
11
+ Perforce numbers releases YYYY.R/CCCCC, e.g. 2002.1/30547.
12
+ YYYY is the year; R is the release of that year; CCCCC is the
13
+ bug fix change level. Each bug fix in these release notes is
14
+ marked by its change number. Any build includes (1) all bug fixes
15
+ of all previous releases and (2) all bug fixes of the current
16
+ release up to the bug fix change level.
17
+
18
+ P4Ruby is precompiled against a corresponding version of the Perforce
19
+ C++ API, e.g., P4Ruby 2014.2 will be compiled using a 2014.2 version
20
+ of the P4API. You can always install P4Ruby using a source-only
21
+ variation, selecting a specific version of the P4API.
22
+
23
+ To determine the version of your P4Ruby, and which version of the
24
+ P4API it has been built with, issue the following command:
25
+ ruby -rP4 -e "puts P4.identify"
26
+
27
+ --------------------------------------------------------------------------
28
+
29
+ Installing P4Ruby
30
+
31
+ The main command to install p4ruby is via gem or bundle.
32
+
33
+ gem install p4ruby
34
+
35
+ Or, in your Gemfile, specify
36
+
37
+ ruby
38
+ gem 'p4_web_api_client'
39
+
40
+ And then execute:
41
+
42
+ bundle
43
+
44
+ --------------------------------------------------------------------------
45
+
46
+ Building P4Ruby from Source
47
+
48
+ 1. Download the Perforce C++ API from the Perforce FTP site at
49
+ "ftp://ftp.perforce.com/perforce". The API archive is located
50
+ in release and platform-specific subdirectories and is named
51
+ "p4api.tgz".
52
+
53
+ IMPORTANT: Mac OS X users MUST use the 'darwin' variant
54
+ of the Perforce API. Using the 'macos' variant
55
+ does not work.
56
+
57
+ Windows users should get the API from the
58
+ "bin.mingwx86" platform directory for Ruby 1.8 or 1.9.
59
+
60
+ TODO - Document the correct directory for Ruby 2.0 and 2.1 on
61
+ Windows when it is made available.
62
+
63
+ Note: 32-bit builds of P4Ruby require a 32-bit version of the
64
+ C++ API and a 32-bit version of Ruby. 64-bit builds of
65
+ P4Ruby require a 64-bit version of the C++ API and a
66
+ 64-bit version of Ruby.
67
+
68
+ Unzip the archive into an empty directory.
69
+
70
+ 2. Extract the P4Ruby API archive into a new, empty directory.
71
+
72
+ 3. Execute the command:
73
+
74
+ rake compile --p4api_dir=<absolute path to Perforce C++ API>
75
+
76
+ 4. Test your distribution, which relies on a locally installed p4d,
77
+ easily made available via the p4util project:
78
+
79
+ gem install p4util
80
+ p4util download p4d
81
+ rake test
82
+
83
+ 5. To install P4Ruby, generate the gem:
84
+
85
+ gem build p4ruby.gemspec
86
+ gem install p4ruby-<version>.gem \
87
+ --with-p4api-dir=<absolute path to Perforce C++ API>
88
+
89
+ SSL support
90
+ -----------
91
+
92
+ Perforce Server 2012.1 and later supports SSL connections and the
93
+ C++ API has been compiled with this support. For applications that
94
+ do not requireSSL support the C++ API provides a stub library
95
+ (libp4sslstub.*) to satisfy the linker requirements.
96
+
97
+ If the P4Ruby build detects that OpenSSL is available, it will be
98
+ included by default. To disable, execute the gem command using
99
+ --without-ssllib. If you want to use libraries deployed to nonstandard
100
+ paths, you will have to alter ext/P4/extconf.rb and include the
101
+ dir_config() directives appropriate for your system.
102
+
103
+ --------------------------------------------------------------------------
104
+
105
+ Compatibility Statements
106
+
107
+ Server Compatibility
108
+
109
+ You can use any release of P4Ruby with any release of the
110
+ Perforce server later than 2001.1
111
+
112
+ API Compatibility
113
+
114
+ The 2014.2 release of P4Ruby supports the 2014.2 Perforce API.
115
+ Older releases might work but are not supported.
116
+
117
+ Ruby Compatibility
118
+
119
+ The 2014.2 release of P4Ruby is supported building from source
120
+ with Ruby 1.9, 2.0, and 2.1.
121
+
122
+ For detailed compatibility, please check the following table:
123
+
124
+ Ruby Release | P4Ruby Release
125
+ ===================================
126
+ 1.6 | up to 2009.2 (unsupported)
127
+ 1.8 | 2007.3 or later (unsupported)
128
+ 1.9 | 2011.1 or later
129
+ 2.0 | 2014.1 or later
130
+ 2.1 | 2014.2 or later
131
+
132
+ The 2014.1 P4Ruby Windows installer requires Ruby 1.8 and was
133
+ built with RubyInstaller 1.8 and MinGW 32-bit.
134
+
135
+ TODO When MinGW-w64 builds are available, indicate that the
136
+ P4Ruby 2014.2 builds do not need the windows installer.
137
+
138
+ OpenSSL Compatibility
139
+
140
+ To build P4Ruby with encrypted communication support, you must
141
+ use the version of OpenSSL that Perforce C/C++ API has been
142
+ built against. Running P4Ruby linked to an older library will
143
+ fail with the error:
144
+
145
+ "SSL library must be at least version 1.0.1."
146
+
147
+ The 2014.1 release of P4Ruby is supported with OpenSSL 1.0.1
148
+
149
+ For detailed compatibility, please check the following table:
150
+
151
+ Perforce C/C++ API Version | OpenSSL Release
152
+ ============================================
153
+ 2012.1 | 1.0.0
154
+ 2012.2 | 1.0.1g+
155
+ 2014.1 | 1.0.1g+
156
+ 2014.2 | 1.0.1i+
157
+
158
+ Platform Compatibility
159
+
160
+ While P4Ruby is generally portable, this release is certified
161
+ only on the following platforms:
162
+
163
+ Linux 2.6 Intel (x86, x86_64)
164
+ Windows XP SP2+, 2003, Vista, 7, 2008 Intel (x86)
165
+ Mac OS X 10.6, 10.7, 10.8 (x86_64), 10.9 (x86_64)
166
+
167
+ Note: As of 2012.1, a universal build of the Perforce C/C++
168
+ API is no longer available for Darwin. P4Ruby is now
169
+ a 64-bit only library on Darwin and must be built with
170
+ a 64-bit version of the Perforce C/C++ API for Darwin.
171
+ This has been tested with a universal build of Ruby and
172
+ is known to work.
173
+
174
+ Compiler Compatibility
175
+
176
+ To build P4Ruby from source, you must use a version of Ruby that
177
+ has been compiled with the same compiler used to build the
178
+ Perforce C++ API: for most platforms, use gcc/g++.
179
+
180
+ Attempting to use a different compiler or a different version
181
+ of the compiler causes linker errors due to differences in name
182
+ handling between compilers.
183
+
184
+ Compatibility with Previous Releases
185
+
186
+ Unless otherwise stated below, the 2014.1 release of P4Ruby is
187
+ compatible with previous releases from Perforce Software.
188
+
189
+ Known Limitations
190
+
191
+ The Perforce client-server protocol is not designed to support
192
+ multiple concurrent queries over the same connection. For this
193
+ reason, multi-threaded applications using the C++ API or the
194
+ script APIs (P4Perl, P4Ruby, etc.) should ensure that a
195
+ separate connection is used for each thread or that only one
196
+ thread may use a shared connection at a time.
197
+
198
+ Compatibility with P4Ruby from the Public Depot
199
+
200
+ Perforce P4Ruby is significantly different from the P4Ruby in
201
+ the Perforce Public Depot. It contains several improvements and
202
+ interface changes intended to make P4Ruby consistent with the
203
+ other scripting interfaces, and with Ruby in general.
204
+
205
+ If you are migrating from Public Depot P4Ruby, edit your
206
+ scripts to ensure that they comply with the new interface.
207
+ The differences are detailed below.
208
+
209
+ Deleted Methods
210
+ ---------------
211
+ The following methods have been deleted from the P4 class and
212
+ are no longer available:
213
+
214
+ output The output is returned by the run* methods
215
+ parse_forms Form parsing is now always on
216
+ tagged See tagged? and tagged= below.
217
+
218
+ Public Depot P4Ruby also contained compatibility interfaces
219
+ for the following methods, all of which have been removed. In
220
+ these cases, the method on the right-hand side has also been in
221
+ Public Depot P4Ruby for some time, and most scripts use
222
+ that form already.
223
+
224
+ Public Depot Method Perforce P4Ruby Method
225
+ ------------------- ----------------------
226
+ cwd cwd=
227
+ client client=
228
+ host host=
229
+ port port=
230
+ user user=
231
+ debug debug=
232
+ exception_level exception_level=
233
+
234
+ NOTE: Some of these method names have been re-used as
235
+ attribute readers (instead of writers). See the following
236
+ list of new methods.
237
+
238
+ New Methods
239
+ -----------
240
+ The following methods are new to Perforce P4Ruby:
241
+
242
+ api_level Returns the API compatibility level
243
+ connected? Returns true if the client is connected
244
+ maxresults Returns the current maxresults limit
245
+ maxscanrows Returns the current maxscanrows limit
246
+ maxlocktime Returns the current maxlocktime limit
247
+ maxlocktime= Sets the current maxlocktime limit
248
+ p4config_file Returns the path of the P4CONFIG file
249
+ prog Returns the name of the program (if set)
250
+ server_level Returns the (numeric) level of the server
251
+ tagged? Returns true if tagged mode is enabled
252
+ tagged= Enable or disable tagged mode
253
+ ticket_file Returns the path to the current ticket file
254
+ ticket_file= Sets the path to the current ticket file
255
+ version Returns the version of the script
256
+ version= Sets the version of the script
257
+
258
+ Renamed Methods
259
+ ---------------
260
+ In Public Depot P4Ruby, many methods were assigned names
261
+ that end in a question mark (?), but the convention in
262
+ Ruby is that only methods that return booleans have names
263
+ ending with a question mark. Perforce P4Ruby follows this
264
+ convention, so the following methods in Public Depot
265
+ P4Ruby have been renamed according to the table below:
266
+
267
+ Public Depot Method Perforce P4Ruby Method
268
+ ------------------- ----------------------
269
+ charset? charset
270
+ client? client
271
+ cwd? cwd
272
+ exception_level? exception_level
273
+ host? host
274
+ password? password
275
+ port? port
276
+ user? user
277
+
278
+ In addition, the following methods have been renamed for clarity
279
+ and consistency across the Perforce scripting interfaces:
280
+
281
+ Old name New name
282
+ -------- --------
283
+ api= api_level=
284
+ submit_spec run_submit
285
+
286
+ Tagged Mode and Form Parsing
287
+ ----------------------------
288
+ In Public Depot P4Ruby, tagged output and form parsing mode were
289
+ off by default, but most scripts turned them on immediately. In
290
+ Perforce P4Ruby, both form parsing and tagged output are on by
291
+ default.
292
+
293
+ Form parsing cannot be explicitly disabled, but tagged output can
294
+ be turned on and off by setting p4.tagged as follows:
295
+
296
+ p4.tagged = false # Disabled
297
+ p4.tagged = true # Enabled
298
+
299
+ Because form parsing does not work when tagged output is disabled,
300
+ this method can be used to disable form parsing if necessary.
301
+
302
+ --------------------------------------------------------------------------
303
+
304
+ Key to symbols used in change notes below.
305
+
306
+ * -- requires new P4Ruby
307
+ ** -- requires P4Ruby built with new P4API
308
+ *** -- requires new p4d server program
309
+
310
+ --------------------------------------------------------------------------
311
+
312
+ New functionality in 2014.2
313
+
314
+ # (SIR#28879 / P4RUBY-25)
315
+ Release P4Ruby as Gem. Until this point, the gems available
316
+ on rubygems.org were unofficial builds, and prone to fail in
317
+ non-interactive environments like bundler.
318
+
319
+ New functionality in 2014.1
320
+
321
+ # 807216 (SIR#70070) * ***
322
+ P4Ruby now supports the P4IGNORE file feature introduced
323
+ in the 2013.2 server. Three new methods have been added
324
+ to support this functionality:
325
+
326
+ P4#ignore_file - Report current file
327
+ P4#ignore_file= - Set ignore file
328
+ P4#ignored?( <file> ) - Test if <file> is
329
+ ignored
330
+
331
+ # 807216, 750979 (SIR#70093) *
332
+ P4Ruby now supports the Ruby 2.0 series of rubies.
333
+
334
+ Bugs fixed in 2013.1
335
+
336
+ #733921 (Bug#63887) *
337
+ P4Ruby no longer crashes when an exception is raised from
338
+ the block passed to P4#run_resolve.
339
+
340
+ New functionality in 2012.2
341
+
342
+ #525301 (Bug #59803) *
343
+ P4Ruby now supports Apple Mountain Lion (10.8).
344
+
345
+ #509253 (Bug #56480) *
346
+ Added P4#run_tickets() method to list local tickets.
347
+ Note that P4.run('tickets') still gives the old error
348
+ message "Must upgrade to 2004.2 p4 to access tickets."
349
+
350
+ #505980 (Bug #56514) * ** ***
351
+ Support for the new progress indicator API. P4Ruby
352
+ supplies a new progress attribute, which can take an
353
+ instance of P4::Progress class or subclass. Progress
354
+ information is currently only supported for submits and
355
+ 'sync -q'. Details can be found in the documentation.
356
+
357
+ #499586 (Bug #56520) *
358
+ New convenience method P4#each_<specs>() that allows
359
+ easy iteration through some or all spec objects such as
360
+ clients or changes. Details can be found in the documentation.
361
+
362
+ Bugs fixed in 2012.2
363
+
364
+ #525097 (Bug #59786) *
365
+ Building P4Ruby with MinGW could generate the link error.
366
+
367
+ g++: unrecognized option '-static-libstdc++'
368
+
369
+ This has been fixed.
370
+
371
+ #505548 (Bug #58649) *
372
+ P4#parse_client could raise the exception "Unknown field name
373
+ 'StreamAtChange'." when parsing a stream client workspace.
374
+ Internal spec definition has been updated to resolve this.
375
+
376
+ --------------------------------------------------------------------------
377
+ --------------------------------------------------------------------------
378
+
379
+ New functionality in 2012.1
380
+
381
+ #419591 (Bug #51895) * ** ***
382
+ P4Ruby supports SSL connections if compiled with SSL support.
383
+ Instructions on how to compile with SSL support can be found
384
+ at the top of this document under "Building P4Ruby from Source"
385
+ and in the documentation.
386
+
387
+ P4.identify will report the version of the OpenSSL library
388
+ used to build the Perforce C++ API (not the version P4Ruby
389
+ is linked against).
390
+
391
+ #415643 *
392
+ P4Ruby will now only build a 64-bit version of the library
393
+ on Darwin.
394
+
395
+ #413362 (Bug #51899) * **
396
+ Enable "action resolve" to support resolves of branches,
397
+ deletes and file types. The existing P4::MergeData class
398
+ has been extended and the additional attributes will be
399
+ populated for an 'action resolve'. Details of the
400
+ additional attributes can be found in the documentation.
401
+
402
+ Bugs fixed in 2012.1
403
+
404
+ #420839 (Bug #52952) *
405
+ Accessing the base_name attribute of a P4::MergeData
406
+ object resulted in a segmentation fault when resolving
407
+ binary files. This has now been fixed and all empty
408
+ fields will return Nil.
409
+
410
+ #410916
411
+ #410702 (Bug #52320) *
412
+ Exceptions thrown during P4.run_resolve are now raised
413
+ up to the user. If an exception is encountered during the
414
+ block's execution, P4Ruby will skip the remaining files.
415
+
416
+ --------------------------------------------------------------------------
417
+ --------------------------------------------------------------------------
418
+
419
+ New functionality in 2011.1
420
+
421
+ #405913 *
422
+ New method P4#messages() returns all messages from the
423
+ server as objects. Script writers can test the severity
424
+ of the messages to know if they are output messages (E_INFO),
425
+ warnings (E_WARN), or errors (E_FAILED/E_FATAL).
426
+
427
+ P4#errors() and P4#warnings still return the errors and
428
+ warnings as strings for backwards compatibility.
429
+
430
+ P4::Message objects have the following methods:
431
+
432
+ P4::Message#severity - Returns the severity of the
433
+ message, which may be one of the
434
+ following values:
435
+
436
+ E_EMPTY # nothing yet
437
+ E_INFO # something good happened
438
+ E_WARN # something not good happened
439
+ E_FAILED # user did something wrong
440
+ E_FATAL # system broken -- nothing can continue
441
+
442
+ P4::Message#generic - Returns the generic class of
443
+ the error, which may be one
444
+ of the following values:
445
+
446
+ EV_NONE # misc
447
+ EV_USAGE # request not consistent with dox
448
+ EV_UNKNOWN # using unknown entity
449
+ EV_CONTEXT # using entity in wrong context
450
+ EV_ILLEGAL # trying to do something you can't
451
+ EV_NOTYET # something must be corrected first
452
+ EV_PROTECT # protections prevented operation
453
+ EV_EMPTY # action returned empty results
454
+ EV_FAULT # inexplicable program fault
455
+ EV_CLIENT # client side program errors
456
+ EV_ADMIN # server administrative action required
457
+ EV_CONFIG # client configuration inadequate
458
+ EV_UPGRADE # client or server too old to interact
459
+ EV_COMM # communications error
460
+ EV_TOOBIG # not even Perforce can handle this much
461
+
462
+ P4::Message#msgid - Return the unique ID of the
463
+ message.
464
+
465
+ P4::Message#to_s - Convert the object to a string
466
+
467
+ P4::Message#inspect - Debugging support
468
+
469
+
470
+ #338410 (Bug #47374) *
471
+ P4Ruby supports setting values in the registry (on those
472
+ platforms that support it).
473
+ The command P4#set_env( var, val ) will set a registry
474
+ variable on platforms that support this action or raise
475
+ a P4Exception for those that don't.
476
+ The command P4#set_env( var, "" ) unsets a registry variable.
477
+
478
+ #333292 (Bug #36121) *
479
+ P4Ruby now supports Ruby 1.9
480
+
481
+ #331384 *
482
+ P4Ruby can now be compiled with the Mingw compiler using
483
+ the MinGW P4Api build.
484
+
485
+ #328203 (Bug #45861) * **
486
+ Enable streams in P4Ruby by default. With this change,
487
+ streams specific specs such as streams depots are listed.
488
+ Disable the listing of streams specific specs by either
489
+ setting the api_level to a value below 70 or by disabling
490
+ stream handling explicitly through the P4.streams attribute:
491
+
492
+ p4.streams = false
493
+
494
+ #322353 (Bug #42250) *
495
+ P4Ruby supports a callback interface by providing a
496
+ P4#handler attribute. Set P4#handler to an instance of a
497
+ subclass of P4::OutputHandler to enable callbacks.
498
+ When a handler is defined, P4Ruby will invoke the handler
499
+ for every response it receives from the Perforce Server
500
+ immediately instead of collecting all results together in
501
+ an array first. This can be used to make applications more
502
+ scalable and more responsive if large results are expected.
503
+ See the documentation for details on the OutputHandler class.
504
+
505
+ Bugs fixed in 2011.1
506
+
507
+ #405913 (Bug #43426) *
508
+ Running 'print' on a file that started with '---' would
509
+ cause an exception in Ruby. This is now fixed.
510
+ There is still an oddity when p4.track = 1 and a user runs
511
+ p4.run_print() on a file that only has lines starting with
512
+ '--- '. In that case, the output of the print is lost.
513
+ Disable tracking by setting p4.track = 0 (the default) will
514
+ solve this problem.
515
+
516
+ #405913 (Bug #41350) *
517
+ Info messages now shown in P4#Messages.
518
+
519
+ #385159 (Bug #49324) **
520
+ On Windows Vista, Windows 7, or Windows 2008, a client running as
521
+ Administrator would fail to properly process file names in
522
+ non-ASCII character sets (such as Shift-JIS).
523
+
524
+ #338903 (Bug #44589) *
525
+ Extra dot at the end of the extracted directory path has been
526
+ removed.
527
+
528
+ #338437 (Bug #39580) *
529
+ P4#identify() reports the platform on AMD64 as X86_64
530
+ in line with all other Perforce products.
531
+
532
+ #332453 *
533
+ Updated the stored spec templates for client, change, group,
534
+ spec and user. Added spec template for new spec type
535
+ streams. These are required, for example, for form-triggers
536
+ that do not connect to the server first.
537
+
538
+ #329351 (Bug #41271) *
539
+ Include 'extraTag' fields in P4::Spec objects
540
+
541
+ #328578 (Bug #39264) *
542
+ P4#identify() now reports P4Ruby as P4RUBY in line with all
543
+ other Perforce products. It will also include the build
544
+ number of the Perforce C/C++ API that it is built with.
545
+
546
+ --------------------------------------------------------------------------
547
+ --------------------------------------------------------------------------
548
+
549
+ New functionality in 2010.2
550
+
551
+ #260859 *
552
+ Added new SetTrack() and GetTrack() methods.
553
+ For more details about server performance tracking see:
554
+ http://kb.perforce.com/article/883
555
+
556
+ #255945 *
557
+ #255949 *
558
+ #269012 *
559
+ New method P4#messages() returns all messages from the
560
+ server as objects. Script writers can test the severity
561
+ of the messages to know if they are output messages (E_INFO),
562
+ warnings (E_WARN), or errors (E_FAILED/E_FATAL).
563
+
564
+ P4#errors() and P4#warnings still return the errors and
565
+ warnings as strings for backwards compatibility.
566
+
567
+ P4::Message objects have the following methods:
568
+
569
+ P4::Message#severity - Returns the severity of the
570
+ message, which may be one of the
571
+ following values:
572
+
573
+ E_EMPTY # nothing yet
574
+ E_INFO # something good happened
575
+ E_WARN # something not good happened
576
+ E_FAILED # user did something wrong
577
+ E_FATAL # system broken -- nothing can continue
578
+
579
+ P4::Message#generic - Returns the generic class of
580
+ the error, which may be one
581
+ of the following values:
582
+
583
+ EV_NONE # misc
584
+ EV_USAGE # request not consistent with dox
585
+ EV_UNKNOWN # using unknown entity
586
+ EV_CONTEXT # using entity in wrong context
587
+ EV_ILLEGAL # trying to do something you can't
588
+ EV_NOTYET # something must be corrected first
589
+ EV_PROTECT # protections prevented operation
590
+ EV_EMPTY # action returned empty results
591
+ EV_FAULT # inexplicable program fault
592
+ EV_CLIENT # client side program errors
593
+ EV_ADMIN # server administrative action required
594
+ EV_CONFIG # client configuration inadequate
595
+ EV_UPGRADE # client or server too old to interact
596
+ EV_COMM # communications error
597
+ EV_TOOBIG # not even Perforce can handle this much
598
+
599
+ P4::Message#msgid - Return the unique ID of the
600
+ message.
601
+
602
+ P4::Message#to_s - Convert the object to a string
603
+
604
+ P4::Message#inspect - Debugging support
605
+
606
+ Bugs fixed in 2010.2
607
+
608
+ #287185 (Bug #43426)
609
+ Running 'print' on a file that started with '---' would
610
+ cause an exception in Ruby. This is now fixed.
611
+ There is still an oddity when p4.track = 1 and a user runs
612
+ p4.run_print() on a file that only has lines starting with
613
+ '--- '. In that case, the output of the print is lost.
614
+ Disable tracking by setting p4.track = 0 (the default) will
615
+ solve this problem.
616
+
617
+ --------------------------------------------------------------------------
618
+ --------------------------------------------------------------------------
619
+
620
+ New functionality in 2010.1
621
+
622
+ #232984 *
623
+ Removed old Ruby 1.6 compatibility code that was no longer
624
+ required. This paves the way for Ruby 1.9 compatibility.
625
+
626
+ #230644 *
627
+ It's now unnecessary to run a command before calling the
628
+ following methods:
629
+
630
+ P4#server_level
631
+ P4#server_case_sensitive?
632
+ P4#server_unicode?
633
+
634
+ If no command has been run, P4Ruby will automatically run a
635
+ 'p4 info' in order to gather the required information.
636
+
637
+ #230191 *
638
+ Added new P4#server_unicode? method that allows script
639
+ writers to test whether or not a Perforce Server is in
640
+ internationalized (unicode) mode. At least one Perforce
641
+ command must have been executed against the server before
642
+ this method can be called.
643
+
644
+ #230190 *
645
+ Added new P4::VERSION, P4::OS, and P4::PATCHLEVEL constants
646
+ so that script writers can test the installation of P4Ruby
647
+ without having to parse the output of P4::Identify()
648
+
649
+ Bugs fixed in 2010.1
650
+
651
+ (none)
652
+
653
+ --------------------------------------------------------------------------
654
+ --------------------------------------------------------------------------
655
+
656
+ New functionality in 2009.2
657
+
658
+ #214454 (Bug #32916) *
659
+ P4#port= now raises a P4Exception if called after P4#connect().
660
+
661
+ #214449 (Bug #35416) *
662
+ Added a P4#server_case_sensitive? method that enables scripts
663
+ to detect whether the server is case-sensitive. Cannot be
664
+ called until a command has been issued to the server.
665
+
666
+ Bugs fixed in 2009.2
667
+
668
+ #214445,214999 (Bug #35410) *
669
+ P4Ruby now correctly tracks disconnects from the server.
670
+
671
+ #222727 (Bug #36568) *
672
+ The Map class removed '-' and '+' from the path if the
673
+ form Map.insert(lhs, rhs) was used, even if these characters
674
+ did not appear at the beginning of the path.
675
+ Now dashes and pluses are preserved within the path.
676
+
677
+ --------------------------------------------------------------------------
678
+ --------------------------------------------------------------------------
679
+
680
+ New functionality in 2009.1
681
+
682
+ #191900 (Bug #26729) *
683
+ A new method:
684
+
685
+ P4#tagged( aBool ) { block }
686
+
687
+ has been added to the P4 class. This method temporarily
688
+ toggles the use of tagged output for the duration of
689
+ the block and resets it when the block terminates.
690
+
691
+ Bugs fixed in 2009.1
692
+
693
+ #191889 (Bug #29911) *
694
+ Calling P4#run_resolve() or P4#run( 'resolve' ) without
695
+ a block or a previous call to P4#input no longer causes an
696
+ infinite loop.
697
+
698
+ #191623,191627 (Bug #32918) *
699
+ P4Ruby now correctly parses jobs when the jobspec contains
700
+ field names ending in numbers.
701
+
702
+ --------------------------------------------------------------------------
703
+ --------------------------------------------------------------------------
704
+
705
+ New functionality in 2008.2
706
+
707
+ #162422 (Bug #30364) *
708
+ #166158 *
709
+ A new class, P4::Map, enables users to
710
+ create and use Perforce mappings without requiring
711
+ a connection to a server. Methods in the P4::Map class are:
712
+
713
+ P4::Map.new Constructor
714
+ P4::Map.join Join two maps to create a third
715
+ P4::Map#clear Empty a map
716
+ P4::Map#count Return the number of entries
717
+ P4::Map#empty? Tests whether a map object is empty
718
+ P4::Map#insert Inserts an entry into the map
719
+ P4::Map#translate Translate a string through a map
720
+ P4::Map#includes? Tests whether a path is mapped
721
+ P4::Map#reverse Swap left and right sides of the mapping
722
+ P4::Map#lhs Returns the left side as an array
723
+ P4::Map#rhs Returns the right side as an array
724
+ P4::Map#to_a Returns the map as an array
725
+
726
+ Bugs fixed in 2008.2
727
+
728
+ #169159 (Bug #29935, Bug #31096) *
729
+ #165338 *
730
+ P4Ruby now correctly loads the value of P4CHARSET from the
731
+ environment.
732
+
733
+ --------------------------------------------------------------------------
734
+ --------------------------------------------------------------------------
735
+
736
+ New functionality in 2008.1
737
+
738
+ #152356 (Bug #29022) *
739
+ A new method 'P4#env( var )' method has been added to
740
+ the P4 class. This instance method enables the caller
741
+ to interrogate the Perforce environment, including
742
+ reading Perforce variables from P4CONFIG files and,
743
+ on Windows, the registry. P4#cwd= now loads any
744
+ P4CONFIG file settings that are appropriate to the
745
+ new working directory.
746
+
747
+ #153005 (Bug #29308) *
748
+ P4Ruby now supports Mac OS X 10.5.
749
+
750
+ --------------------------------------------------------------------------
751
+ --------------------------------------------------------------------------
752
+
753
+ Bugs fixed in 2007.3
754
+
755
+ #151167 (Bug #28774) *
756
+ The Makefile generated on some Linux platforms (notably
757
+ Ubuntu 7.10) was not correct, and attempted to link P4Ruby
758
+ using 'cc' instead of 'c++', causing an 'undefined symbol'
759
+ error (typically '_ZTVN10__cxxabiv120__si_class_type_infoE') ,
760
+ when attempting to use P4Ruby. This problem has been corrected.
761
+
762
+ #150577 (Bug #28704) *
763
+ The presence of deleted revisions in a file's history
764
+ might lead to incorrect fileSize and digest
765
+ attributes for other revisions in the output of
766
+ P4#run_filelog. This problem has been corrected.
767
+
768
+ #150576 (Bug #28773) *
769
+ P4::Revision#filesize() always returned nil. This
770
+ problem has been corrected.