[p4ruby] p4ruby problem acc. to integrate
tony at smee.org
Tue Oct 9 02:42:28 PDT 2007
> yes, adding "p4.api = 57" does help, which means my small test tool does
> report now
>.cpp#3 - sync/integrate from
> Do you know the cause of this behaviour?
Yes - using p4.api=57 causes the server to treat your client like a 2004.1
Perforce client and back then 'p4 integrate' didn't support tagged output. In
P4Ruby, this means that you get a string instead of a Hash.
> The disadvantage of this modification "p4.api = 57" is that the tool needs
> now 16 instead of 11 seconds...
That's just because someone else was likely locking the tables and slowed you
down (api=57 won't slow the server, or the client, down - if anything it
should be a fraction faster)
I noticed that your script uses:
output += x["startFromRev"].to_s
and I think that's the problem: startFromRev needs to be incremented to be
accurate as it's value is actually one less than the first revision in the
startFromRev = 1
endFromRev = 2
means #2,2 (or, as Perforce formats it, just #2)
So, in your script you should use x[ 'startFromRev' ] + 1.
Now, the next question is: why doesn't it work in your old environment? My
theory there is that your old P4Ruby build was built with the 2004.2 API
(i.e. api level 57), so it doesn't support tagged output on 'p4 integrate'.
This ties up with your version number as P4Ruby 1.4841 was released on Mon
Mar 07 2005, and 2004.2 was the current release at that time.
You can test this theory by removing the code that handles string output in
your script and running it in your old environment - if you get 'not handled
yet!' in your output (the message in your 'else' block), then you know that
the old P4Ruby environment was just getting a String from the server, and not
Let me know if you need any more information.
More information about the p4ruby