TODO for VCP Sorting: - use "num" as the type , upgrade to "double" if /./. - tweak metrics to wipe out intermittent fields *NOTE* Doing a `grep -r TODO lib bin` will find lots of small things and future feature ideas. This file will grow to include the more important of those. - Handle differentlt localized timestamps - Enable an "--append-revs" flag to allow a bootstrap file to be added. This is dangerous (there's no checking to be sure that the first new version is the first version after the existing version in the repository) but useful. - Review cvs2p4 and (in the guest depot) vss2p4 for gotchas they catch that we should. - PERHAPS checksum all non-binary files line by line, removing all \r's - Bugfixes - Prevent keyword expansion on all checkouts. Found by Thomas Quinot - Check for p4 >= 99.2 at runtime, since filelog -m is needed - Carry executable bit through (Nick Ing-Simmons) - Make and escape their characters - VCP::Dest::cvs needs to set the binary mode properly on files it creates and checks in - VCP::Source::cvs needs to deduce binary modes correctly - Make test suite use an alternate port for p4d so multiple make test instances can be run in parallel - Make test suite skip cvs tests if cvs is not present (like it skips p4 tests if p4 is not present). - Set CVS_PASSFILE for all cvs invocations to prevent mucking with the users' current .cvspass - Use ptys to handle CVS login, if available. Recomend installing IO::Pty if needed but not installed. This all must wait until IPC::Run deals better with IO::Pty - id= values should be the entire path-to-file, not relative to rev_root. - Feature Adds - Need to make the transfers more transactional, so we can recover from where we left off when something fails. - Need to save some sort of state as to where the last export ended so the next one can start from there. - Offer compressed output for revml files a la tar's "z" option. - Consider offering (david d zuhn ) - Perhaps allow keyword expansion, but convert the expanded texts so that they are no longer seens as RCS style keywords. This would allow imported files to have a "stamp of origin" in them. Would also need an option to leave the keywords in place in this case, since the user might presumably want expansion to work correctly in the new repository too. Suggested by Thomas Quinot . - Add a link checker to vcp html - An option to not bring over deleted files Steve James - A report destination that offers a preview of what a transfer will do, with summary and long views. - An option to prefix all labels with some user-defined string Steve James - Limit the number of NtLkLy queries per command to prevent server lockup. Steve James (possibly URGENT, need to test). - Efficiency - The cvs drivers can be made faster - VCP::Source::revml should only keep on hand the versions it needs at each moment in order to conserve disk space. The problem with this is that the RevML may be coming from a non-seek()able byte stream, like STDIN, so we need to patch as we go. One alternative is to cache the revml off to the side and rescan it if this happens. Another is to only patch- as-you-go if the input is non-seek()able. - Once a version has been used, it should be cleaned up out of the source directory unless it will be needed again. This used to be the way things were done, but it has been changed to support branching. STATUS: partially implemented. Revs now refer directly to their ancestor revs, and thus revs may be freed willy-nilly and needed revs won't disappear. TODO: Have each ::Dest do $r->previous( undef ) as aggressively as possible so that older revs will be garbage collected as needed. - Tests - rerooting revml->p4 to someplace deep in the p4 tree, to make sure that VCP is configuring p4 to map the files to the right place. - Cleanup - Where command_stderr_filter is used to save/restore the filter, use stderr_filter => instead. - Do same for command_ok_result_codes(); - create an init() phase after new() so new() can give immediate feedback on bogus command line options. As it is, sourcing a CVS pserver causes a password prompt before the dest even gets a crack at the options.