Johannes Winkelmann wrote:
Hi there,
I found something which could probably be combined with Jukka's script into a cool ports backend: http://perlrsync.sourceforge.net/info.html
It's an rsync-client implementation in Perl; there's a module called File::RsyncP::FileList which seems to contain the files to be synced, which could be used to generate a client-side .checkout file without any special settings/action (rsync-repgen) on the server. If this works, it would have really nice properties: - efficient (cpu, network load and hd space wise) - pure rsyncd on the server - output can be adjusted to mimick cvsup's
If anyone has the time to verify my impression, that would be great :-). I'd rather delay the switch to a new backend if this proves to be the viable solution.
Looks like this could work although it will require some additional work. Coincidentally I have found a way to generate a .checkouts file without server side intervention. The updated rsync driver is in the same old location: http://www.karsikkopuu.net/crux/misc/rsync I've changed it to output cvsup-like messages--it even differentiates between updates and initial checkouts, just like cvsup. Here's an example from its output: $ sudo ports -u jheino-test Updating file list from jh.ton.tut.fi::jheino Updating collection jheino Edit coolmagic/ Edit coolmagic/.footprint Edit coolmagic/.md5sum Edit coolmagic/Pkgfile Edit sdlquake/Pkgfile Delete ngircd/.footprint Delete ngircd/.md5sum Delete ngircd/Pkgfile Delete ngircd/ngircd.conf Delete ngircd/ngircd.rc Delete ngircd Finished successfully It's still plain Perl calling rsync. Although it's still missing some things, like proper error reporting in case of an error, I'd say it's working pretty nicely. I don't personally see the need for File::RsyncP, since it would introduce unnecessary complexity (and it looks like the module hasn't been updated in a while, either). // Jukka