6 messages in com.perforce.revml[revml] [ANNOUNCE] 0.04 - Major VCP::...
FromSent OnAttachments
Chri...@perforce.com18 Dec 2000 17:40 
barr...@slaysys.com18 Dec 2000 21:37 
Chri...@perforce.com19 Dec 2000 17:36 
Tony...@perforce.com20 Dec 2000 04:29 
barr...@slaysys.com20 Dec 2000 04:51 
Tony...@perforce.com20 Dec 2000 09:57 
Subject:[revml] [ANNOUNCE] 0.04 - Major VCP::Source::p4 improvements
From:barr...@slaysys.com (barr@slaysys.com)
Date:12/18/2000 09:37:58 PM
List:com.perforce.revml

On Mon, Dec 18, 2000 at 05:40:56PM -0800, Christopher Seiwald wrote:

The fact that you're running one command per invocation is a little slow, too, I'm afraid, but again there's no easy way short of using the API or using 'p4 -s files x y z' and relying on the 1 response per argument.

I'm using "p4 -s files //.../NotLkLy //...@label1 //.../NotLkLy //...@label2" with 50 parise of (invalid, valid) command line parameters to speed things up right now. The first, third, etc., generate error: lines that I use as separators between the lists of good ones. I may switch to something like //...@NotLkLy instead, since I can choose the string "NotLkLy" to never conflict with a label. Right now there's a minute chance of conflicting with a file name.

I'm also using a "p4 print //depot/file1#1 //depot/file2#1" with about 50 files. It's pretty darn fast, even made me have to tweak the VCP::Dest::cvs module to prevent two consecutive revisions of one file from having the same modification timestamp (CVS thinks they've not changed if the mod_time or size hasn't changed, I think). The first few commands issued by vcp are shown at the end of this message.

It's pretty fast. On a not-busy system behind a (theoretically) 640 kbps down, 90kbps up, no compression, I get:

barries@//jester~/src/vcp$ time bin/vcp p4://public/... revml:public.revml 32.43user 4.01system 1:32.40elapsed 39%CPU... ... barries@//jester~/src/vcp$ ls -l public.revml -rw-rw-r-- 1 barries 7007309 Dec 19 00:13 public.revml

barries@//jester~/src/vcp$ time bin/vcp p4://guest/... revml:guest.revml 134.75user 12.06system 8:44.94elapsed 27%CPU... ... barries@//jester~/src/vcp$ ls -l guest.revml -rw-rw-r-- 1 barries 37735319 Dec 19 00:31 guest.revml

See http://slaysys.com/src/revengine/ for the two .revml that generated, which are there raw and in .bz2 format. I apologise in advance for the slow link...

I think it would be a Good Thing(tm) for somebody to write Perl XS wrappers around the C API, giving it bindings that make it look like a perl module (or two). Writing XS wrappers is usually really easy unless you want to map data structures, and even then it's pretty easy. Seems like a possible thing to put on sourceXchange or similar, if there's funding available for it. If whoever writes it tries to be very perlish about it, you could get a *really* nice API (for perl hackers, anyway). I know Perforce is more of a Python shop, but, hey, Perl's not so bad, you know... ;-)

- Barrie

barries@//jester~/src/vcp$ bin/vcp -d=p4::p4 p4://guest/... revml:guest.revml Debugging /p4::p4/ vcp: running /usr/bin/p4 counter change vcp: running /usr/bin/p4 info vcp: running /usr/bin/p4 labels vcp: running /usr/bin/p4 -s files //.../NtLkly //...@P98.2 //.../NtLkly
//...@P99.1 //.../NtLkly //...@jam2-2-0 //.../NtLkly //...@jam2-2-4 //.../NtLkly
//...@vcp_00_02 //.../NtLkly //...@vcp_00_03 //.../NtLkly //...@vcp_00_04 vcp: running /usr/bin/p4 filelog -m 477 -l //guest/...@477 vcp: running /usr/bin/p4 -s print //guest/jeff_bowles/jab.html#1
//guest/laura_wingerd/perforce/faq/admin.html#1
//guest/laura_wingerd/perforce/faq/beginner.html#1
//guest/laura_wingerd/perforce/faq/build.html#1
//guest/laura_wingerd/perforce/utils/aegis/License.html#1
//guest/laura_wingerd/perforce/utils/aegis/Overview.html#1
//guest/laura_wingerd/perforce/utils/aegis/README#1
//guest/laura_wingerd/perforce/utils/aegis/lib/p4.pm#1
//guest/laura_wingerd/perforce/utils/aegis/lib/p4init#1
//guest/laura_wingerd/perforce/utils/aegis/p4dh#1
//guest/laura_wingerd/perforce/utils/aegis/p4dv#1
//guest/laura_wingerd/perforce/utils/aegis/p4fd#1
//guest/laura_wingerd/perforce/utils/aegis/p4fdiff#1
//guest/laura_wingerd/perforce/utils/aegis/p4fe#1
//guest/laura_wingerd/perforce/utils/aegis/p4fg#1
//guest/laura_wingerd/perforce/utils/aegis/p4fh#1
//guest/laura_wingerd/perforce/utils/aegis/p4fn#1
//guest/laura_wingerd/perforce/utils/aegis/p4fp#1
//guest/laura_wingerd/perforce/utils/aegis/p4fr#1
//guest/laura_wingerd/perforce/utils/aegis/p4fu#1
//guest/laura_wingerd/perforce/utils/aegis/p4funcs#1
//guest/laura_wingerd/perforce/utils/aegis/p4ib#1
//guest/laura_wingerd/perforce/utils/aegis/p4ibu#1
//guest/laura_wingerd/perforce/utils/aegis/p4ie#1
//guest/laura_wingerd/perforce/utils/aegis/p4iv#1
//guest/laura_wingerd/perforce/utils/aegis/p4jc#1
//guest/laura_wingerd/perforce/utils/aegis/p4jd#1
//guest/laura_wingerd/perforce/utils/aegis/p4je#1
//guest/laura_wingerd/perforce/utils/aegis/p4jf#1
//guest/laura_wingerd/perforce/utils/aegis/p4jh#1
//guest/laura_wingerd/perforce/utils/aegis/p4jl#1
//guest/laura_wingerd/perforce/utils/aegis/p4jn#1
//guest/laura_wingerd/perforce/utils/aegis/p4jnu#1
//guest/laura_wingerd/perforce/utils/aegis/p4ld#1
//guest/laura_wingerd/perforce/utils/aegis/p4ldu#1
//guest/laura_wingerd/perforce/utils/aegis/p4lf#1
//guest/laura_wingerd/perforce/utils/aegis/p4lj#1
//guest/laura_wingerd/perforce/utils/aegis/p4lju#1
//guest/laura_wingerd/perforce/utils/aegis/p4ll#1
//guest/laura_wingerd/perforce/utils/aegis/p4n 4rdiff#1 //guest/laura_wingerd/perforce/utils/aegis/p4rfail#1
//guest/laura_wingerd/perforce/utils/aegis/p4rpass#1
//guest/laura_wingerd/perforce/utils/aegis/p4uh#1
//guest/laura_wingerd/perforce/utils/aegis/p4ul#1
//guest/laura_wingerd/perforce/utils/aegis/p4vl#1
//guest/laura_wingerd/perforce/utils/aegis/p4wb#1
//guest/laura_wingerd/perforce/utils/aegis/p4wbu#1
//guest/laura_wingerd/perforce/utils/aegis/p4we#1
//guest/laura_wingerd/perforce/utils/aegis/p4weu#1