TODO #1

  • //
  • guest/
  • sean_mccune/
  • revml/
  • TODO
  • View
  • Commits
  • Open Download .zip Download (2 KB)
TODO for VCP

*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.

- Bugfixes
  - Prevent keyword expansion on all checkouts.  Found by
    Thomas Quinot <[email protected]>
  - Check for p4 >= 99.2 at runtime, since filelog -m is needed
  - Carry executable bit through (Nick Ing-Simmons)
  - Make <rev_root> and <name> 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).

- 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 <char code=0x00 repeat=34234> (david d zuhn
    <[email protected]>)
  - 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 <[email protected]>
  - Add a link checker to vcp html

- Efficiency
  - The cvs drivers can be made faster
  - VCP::Source::revml should only reconstitute what it needs in order
    to conserve disk space.

- 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.
# Change User Description Committed
#1 1375 Sean McCune Creating my own branch for work on vcp.
//guest/perforce_software/revml/TODO
#9 1367 Barrie Slaymaker lots of docco updates
#8 1358 Barrie Slaymaker Win32 changes
#7 1330 Barrie Slaymaker Ignore cvs lock mgmt warnings in VCP::Source::cvs.
#6 824 Barrie Slaymaker Fix p4 backfilling path math to not mangle paths.
#5 719 Barrie Slaymaker vcp 0.221
#4 695 Barrie Slaymaker Cleaned up support for binary files in VCP::Dest::revml and
altered test suite to deal with it better.  Added some thoughts
to the TODO file.
#3 628 Barrie Slaymaker Cleaned up POD in bin/vcp, added BSD-style license.
#2 620 Barrie Slaymaker Underscorify CVS tags, only warn about undeleted files if
debugging.
#1 478 Barrie Slaymaker 0.05 Mon Dec 18 07:27:53 EST 2000
   - Use `p4 labels //...@label` command as per Rober Cowham's suggestion, with
     the '-s' flag recommended by Christopher Siewald and
     [email protected].  Though it's actually something like

       vcp: running /usr/bin/p4 -u safari -c safari -p localhost:5666 -s files
       //.../NtLkly //...@compiler_a3 //.../NtLkly //...@compiler_may3

     and so //on //for 50 parameters to get the speed up.  I use the
     //.../NtLkly "file" as //a separator between the lists of files in various
     //revisions.  Hope nobody has any files named that :-).  What I should do
     is choose a random label that doesn't occur in the labels list, I guess.
   - VCP::Source::revml and VCP::Dest::revml are now binary, control code, and
     "hibit ASCII" (I know, that's an oxymoron) clean.  The <comment>, <delta>,
     and <content> elements now escape anything other than tab, line feed,
     space, or printable chars (32 <= c <= ASCII 126) using a tag like '<char
     code="0x09">'.  The test suite tests all this.  Filenames should also
     be escaped this way, but I didn't get to that.
   - The decision whether to do deltas or encode the content in base64 is now
     based on how many characters would need to be escaped.
   - We now depend on the users' diff program to have a "-a" option to force it
     to diff even if the files look binary to it.  I need to use Diff.pm and
     adapt it for use on binary data.
   - VCP::Dest::cvs now makes sure that no two consecutive revisions of the
     same file have the same mod_time.  VCP::Source::p4 got so fast at pulling
     revisions from the repositories the test suite sets up that CVS was not
     noticing that files had changed.
   - VCP::Plugin now allows you to set a list of acceptable result codes, since
     we now use p4 in ways that make it return non-zero result codes.
   - VCP::Revs now croaks if you try to add two entries of the same VCP::Rev
     (ie matching filename and rev_id).
   - The <type> tag is now limited to "text" or "binary", and is meant to
     pass that level of info between foreign repositories.
   - The <p4_info> on each file now carries the one line p4 description of
     the file so that p4->p4 transferes can pick out the more detailed
     info.  VCP::Source::p4, VCP::Dest::p4 do this.
   - VCP::{Source,Dest}::{p4,cvs} now set binaryness on added files properly,
     I think.  For p4->p4, the native p4 type is preserved.  For CVS sources,
     seeing the keyword substitution flag 'o' or 'b' implies binaryness, for
     p4, seeing a filetype like qr/u?x?binary/ or qr/x?tempobj/ or "resource"
     implies binaryness (to non-p4 destinations).  NOTE: Seeing a 'o' or 'b'
     in a CVS source only ends up setting the 'b' option on the destination.
     That should be ok for most uses, but we can make it smarter for cvs->cvs
     transfers if need be.