p4ruby 2014.1 → 2014.2.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
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.