1.6028 Tue Sep 18 2007 Improve p4conf.rb to support AIX 5.3 - thanks to Robert Cowham 1.6012 Thu Aug 30 2007 Help P4Ruby build more cleanly on Windows with more recent Ruby's than my own. The host_os value on Windows can include the compiler version now i.e. mswin32_71 or mswin32_80, and that was causing p4conf.rb to get the -DOS_NT macro wrong (OS_NT_71), which caused builds to fail. No functional change. Thanks to Patrick Bennett. 1.5953 Mon Jun 18 2007 Bug fix: P4Ruby could crash attempting to parse a form when tagged mode is enabled, but form parsing was not. This only occurred when used against a 2005.2 or later server. 1.5944 Fri May 18 2007 Changes for building P4Ruby with 2007.2 API. This change also makes p4conf.rb check that the user is using an API version we can digest. In addition, I've widened some of the gcc/g++ pattern matches to catch some build problems recently observed on some Red Hat platforms. 1.5897 Tue Apr 24 2007 Remove ugly Darwin hack from P4Ruby distribution - no longer needed now that it works properly on OS X 10.4. 1.5896 Tue Apr 24 2007 Porting to OSX 10.4. Nothing we can do to fix 10.3, it was broken, but 10.4 has the fix P4Ruby needed, so this change makes it build cleanly on OSX 10.4. 1.5806 Wed Jan 03 2007 FreeBSD 6 porting changes. No functional change 1.5800 Tue Dec 19 2006 Bug fix: P4Ruby commands could segfault on garbage collection due to uninitialized values. This change initializes them. 1.5795 Fri Dec 08 2006 Back-ported change 1.5791 to Ruby 1.6. The prototype of rb_protect changed between 1.6 and 1.8 so it needs special handling. 1.5792 Fri Dec 08 2006 Update P4Ruby to support 2006.2 beta API. 1.5791 Fri Dec 08 2006 Add experimental support for passing a block to P4#run_resolve. The block is passed a P4::MergeData object encapsulating the context of each merge performed. The block should evaluate to a string indicating the desired result of the merge: 'ay', 'at', 'am', 's', etc. The P4::MergeData object contains information about the files involved in the merge and can invoke an external merge tool. This is still experimental at this stage so the interface may change as it evolves. 1.5768 Mon Nov 13 2006 Build system tweaks: sort the quoting out for Windows builds. No functional change 1.5339 Mon Feb 27 2006 Bug fix: A typo in change 5335 introduced a bug. This just corrects the typo. Thanks to Dean Wampler for spotting it. 1.5335 Thu Feb 23 2006 Bug fix: P4::Spec#[]= method didn't work properly when constructed without a fieldmap. In that case, the user might see this error: P4.rb:292:in `[]=': undefined method `[]' for nil:NilClass (NoMethodError) This change corrects the logic and the method now works properly. 1.5311 Tue Feb 07 2006 Add new P4#api= method to allow users to lock scripts to a particular API level. This helps when upgrading to new servers that extend support for tagged output to hitherto unsupported commands (2005.2 did a lot of that). See the C/C++ API Release Notes for the full details, but by way of example, to lock scripts to the 2005.1 interface use: p4.api = 57 1.5279 Thu Jan 19 2006 Bug fix: Change 5258 (changes for 2005.2 API), broke the creation of P4::Spec objects for parsed forms. This change reworks the logic for form parsing in a way that should be compatible with all server versions (from about 2000.1 onwards) 1.5258 Thu Jan 12 2006 Adapt P4Ruby for 2005.2 API changes. The 2005.2 API supplies forms ready-parsed in tagged mode and in general P4Ruby worked with it. The only issue was that P4Ruby wasn't caching the specdefs properly so conversions in the reverse direction were broken. This change ensures that we cache the specdef if we have it regardless of the API level. Squelched on a compiler warning too while I was there. 1.5222 Wed Nov 30 2005 Improve debug output in P4Ruby: p4.debug = 1 * Show commands being executed p4.debug = 2 * Show function calls p4.debug = 3 * Show data p4.debug = 4 * Show ruby garbage collection calls. Debug levels are cumulative as you'd expect. 1.5115 Wed Sep 14 2005 Yet another change to the build system. My guesswork on how it would work on AMD64 was wrong, and since I now have access to an Opteron box with Ruby on it, I've ported and tested it directly. Architecture detection works nicely now, and the const_char macro is correctly defined. Porting change only - no functional change 1.5114 Wed Sep 14 2005 Minor update to previous two changes. I originally opted to use CONFIG[ 'target_os' ] as it contained just what I was looking for, but it's not there in Ruby 1.6 so that was out. What is there in both 1.6 and 1.8 is 'host_os', but on Linux (and possibly others) it can contain a tuple value ('linux-gnu' instead of just 'linux'). This change splits the host_os field and takes only the first part so p4conf.rb should guess correctly in more cases (I think!). 1.5112 Tue Sep 13 2005 Port previous change to NT (and hopefully others). 1.5111 Tue Sep 13 2005 Make P4Ruby's build script support the const_char macro definition on those platforms that need it (Solaris >= 2.7 and Linux on AMD64 primarily). If we ever port P4Ruby to LinuxIA64 we'll need to add support for that too. With this change p4conf.rb tries harder to determine the O/S name and version, but it's unlikely to get it right all the time. So there's also a new '--apibuild' flag to p4conf.rb that allows the user to override the detected platform with an explicit configuration. Most people won't have to use it, but it'll be there for those that need it. I've also updated the README with the new build procedure, and added a FAQ document for the most common questions. 1.5105 Fri Sep 09 2005 Make P4Ruby include the text of any errors or warnings in exception messages. Previously the user had to call P4#errors() and/or P4#warnings() to display this information and if you didn't handle P4Exception specifically the message could look somewhat cryptic. This change hopefully makes it easier - particularly for newbies. Note that the text of warnings is not shown unless you're using exception level 2 (P4::RAISE_ALL). 1.4942 Thu May 05 2005 Add support for Unicode servers to P4Ruby. This change adds two new interfaces, P4#charset= and P4#charset? to set and get the charset respectively. 1.4940 Wed May 04 2005 Add (undoc'd) support for enabling/disabling tagged mode on a per-command basis. Also fixed a minor typo which was rendering an error message less useful than intended. 1.4870 Tue Mar 29 2005 Call ClientApi::SetProg() every time a command is run rather than only once. This makes the log entries correctly record the script name against every command that the script runs. 1.4841 Mon Mar 07 2005 Bug fix. Fix stupid uninitialized integer problem with MaxScanRows and MaxResults. 1.4840 Mon Mar 07 2005 Bug fix to P4Ruby's build script. On some Linux platforms, P4Ruby would still be linked with gcc rather than g++ causing problems for those using gcc 3.x. This change forces mkmf to generate a makefile where CC=g++ which does no harm to old environments but makes the link work on new environments. 1.4830 Wed Feb 09 2005 Add named constants for P4Ruby's exception levels. The valid levels are: P4::RAISE_NONE -- No exceptions P4::RAISE_ERRORS -- Exceptions on errors only P4::RAISE_ALL -- Exceptions on errors and warnings Also added P4#at_exception_level( level ) { ... } method to allow you to run a block of code at a different exception level and revert to the previous level when the block completes. Thanks to Johan Nilsson. Some doc tidying along with the docs for the features above. 1.4809 Fri Jan 21 2005 Add P4#maxresults= and P4#maxscanrows= methods to allow you to place explicit limits on the execution of individual commands. These limits remain in force for all subsequent commands until they are removed by setting them to zero. Port of new functionality from P4Perl. 1.4753 Tue Jan 11 2005 Add support for executing commands which prompt the user for input more than once during their execution. A perfect example is 'p4 password' which prompts the user three times. This works by allowing P4#input() to take an array argument. Each time Perforce prompts the user (by calling ClientUserRuby::Prompt()), the array is shifted by one and the first value in the array is passed to Perforce. Thus, to change your password a three-element array is needed comprising of your old password, and the new password twice. To make this a little easier on the eye, this change also includes a thin wrapper called P4#run_password() which takes simply the old password and the new password and constructs a suitable input array. This change also includes docs for the above, and docs for P4#run_filelog() which were found to be missing. 1.4680 Fri Dec 10 2004 Make P4Ruby return new P4::Spec objects instead of plain old hashes when parse_forms mode is in use. A P4::Spec object is derived from Hash so should be backwards compatible with previous code. P4::Spec provides limited fieldname validation on forms and accessor methods for quick and easy access to the fields in the form. The accessor methods are all prefixed with '_' to avoid colliding with methods from the Hash parent class. This is a little ugly, but deriving from hash is a big win, so it's worth it. This change also fixes a minor bug found along the way. Spec parsing and formatting wouldn't work with labels, branches, depots and groups unless you'd previously run a P4::fetch_label(