VCP-Source-cvs.stml #20

  • //
  • guest/
  • perforce_software/
  • revml/
  • ui_machines/
  • VCP-Source-cvs.stml
  • View
  • Commits
  • Open Download .zip Download (6 KB)
<!DOCTYPE author [
  <!ENTITY non_empty_re "qr/./" >
]>

<machine id="VCP::Source::cvs" xmlns="http://slaysys.com/StateML/1.0">

  <!-- ================ TRANSITIONS =================== -->

  <state id="source_cvs_cvsroot_prompt" class-ids="prompt_class">
    <name>Source CVSROOT</name>
    <description>

The CVSROOT to read revisions from.  Defaults to the CVSROOT
environment variable.

    </description>

    <entry-handler>
      if ( $ui->in_edit_mode ) {
        $default = $ui->source->repo_server;
        $is_current_value = 1;
      }
      else {
        $default = empty( $ENV{CVSROOT} ) ? undef : $ENV{CVSROOT};
      }  
    </entry-handler>

    <arc from="source_type_prompt" guard="'cvs'" >
      <description>cvs</description>
      <handler>
        $ui->new_source( $answer );
      </handler>
    </arc>

    <arc to="source_cvs_filespec_prompt" guard="&non_empty_re;">
      <description>cvsroot spec</description>
      <handler>
        $ui->source->repo_server( $answer )
            unless empty $answer;
      </handler>
    </arc>

  </state>


  <state id="source_cvs_filespec_prompt" class-ids="prompt_class">
    <name>Source CVS filespec</name>
    <description>

Enter the cvs filespec of the file(s) to copy.  This must start
with a CVS module name and end in a filename, directory
name, or "..." wildcard:

    module/...
    module/file
    module/path/to/subdir/...
    module/path/to/subdir/file

    </description>

    <entry-handler>
      if ( $ui->in_edit_mode ) {
        $default = $ui->source->repo_filespec;
        $is_current_value = 1;
      }
         
    </entry-handler>

    <arc to="source_cvs_working_directory_prompt" guard="&non_empty_re;">
      <description>module/filepath/...</description>
      <handler>
        $ui->source->repo_filespec( $answer );
      </handler>
    </arc>
  </state>


  <state id="source_cvs_working_directory_prompt" class-ids="prompt_class">
    <name>Source CVS working directory</name>
    <description>

Enter the CVS working directory (Optional). VCP::Source::cvs will cd
to this directory before calling cvs and won't initialize a CVS
workspace of its own.  Leave blank to allow VCP to use a
temporary directory.

    </description>

   <entry-handler>
   
     if ( $ui->in_edit_mode ) {
        $default = $ui->source->{CVS_WORK_DIR} ;
        $is_current_value = 1;
     }
        
   </entry-handler>

    <arc to="source_cvs_binary_checkout_prompt">
      <handler>
        $ui->source->ui_set_cvs_work_dir( $answer )
            unless empty $answer;
      </handler>
    </arc>

  </state>


  <state id="source_cvs_binary_checkout_prompt" class-ids="prompt_class">
    <name>Force binary checkout</name>
    <description>

Pass the -kb option to cvs, to force a binary checkout. This is useful
when you want a text file to be checked out with Unix linends, or if
you know that some files in the repository are not flagged as binary
files and should be.

    </description>
    
    <entry-handler>
      if ( $ui->in_edit_mode ) {
        $default = $ui->source->{CVS_K_OPTION} =~ /b/ ? "yes" : "no" ;
        $is_current_value = 1;
      }
      else {
        $default = "no";
      }
    </entry-handler>

    <arc to="source_cvs_use_cvs_prompt" guard="'yes'">
      <description>yes</description>
      <handler>$ui->source->{CVS_K_OPTION} = "b";</handler>
    </arc>

    <arc to="source_cvs_use_cvs_prompt" guard="'no'">
      <description>no</description>
    </arc>

  </state>


  <state id="source_cvs_use_cvs_prompt" class-ids="prompt_class">
    <name>Use cvs executable</name>
    <description>

This forces VCP to use the cvs executable rather than read local
CVSROOT directories directly.  This is slower, but may be used
to work around any limitations that might crop up in VCP's RCS
file parser.

    </description>
    <entry-handler>
      if ( $ui->in_edit_mode ) {
        $default = $ui->source->{CVS_USE_CVS} ? "yes" : "no" ;
        $is_current_value = 1;
      }
      else { 
        $default = "no";
      }
    </entry-handler>

    <arc to="dest_id_prompt" guard="'yes'">
      <description>yes</description>
      <handler>$ui->source->{CVS_USE_CVS} = 1;</handler>
    </arc>

    <arc to="dest_id_prompt" guard="'no'">
      <description>no</description>
      <handler>$ui->source->{CVS_USE_CVS} = 0;</handler>
    </arc>

  </state>


<!-- REMOVED FOR NOW, the -r and -d options are not supported in
raw RCS file scans and are problematic within the context of doing
a conversion, plus we want to keep the newbie UI simple.

  <state id="source_cvs_revision_prompt" class-ids="prompt_class">
    <name>Source cvs revision specification</name>
    <description>

Passed to "cvs log" as a "-r" revision specification. This corresponds
to the "-r" option for the rlog command, not either of the "-r"
options for the cvs command.  See rlog(1) man page for the format.

    </description>

    <entry-handler>
      if ( $ui->in_edit_mode ) {
        $default = $ui->source->rev_spec;
        $is_current_value = 1;
      }
    </entry-handler>

    <arc to="source_cvs_date_spec_prompt">
      <handler>
        unless( empty $answer ) {
            $ui->source->rev_spec( $answer );
            $ui->source->force_missing( defined $ui->source->rev_spec );
        }
      </handler>        
    </arc>

  </state>


  <state id="source_cvs_date_spec_prompt" class-ids="prompt_class">
    <name>Source cvs date specification</name>
    <description>

Passed to 'cvs log' as a "-d" date specification.  See rlog(1) man
page for the format.

    </description>

    <entry-handler>
      if ( $ui->in_edit_mode ) {
        $default = $ui->source->date_spec;
        $is_current_value = 1;
      }
    </entry-handler>

    <arc to="dest_id_prompt">
      <handler>
        $ui->source->date_spec( $answer )
            unless empty $answer;
      </handler>
    </arc>

  </state>

-->

</machine>
# Change User Description Committed
#22 5398 Barrie Slaymaker - Tweak source .stml files to re-enable a multiple
         choice listing.
#21 4581 Barrie Slaymaker - user prompts have been improved, but not tested
#20 4064 Barrie Slaymaker - RevML is no longer offered in the UI
- Sources and dests are given an id in the UI
- The .vcp file name defaulting now works
#19 4002 Barrie Slaymaker - Interactive UI no longer prompts for CVS -r and -d options
#18 3859 Barrie Slaymaker - New UI files
#17 3675 Barrie Slaymaker - More of a .vcp file is now editable
#16 3667 Barrie Slaymaker - VCP-Source-vss.stml now has atomic questions instead of
  asking for a command-line-like vss: spec
#15 3647 Barrie Slaymaker - All UI prompts & descriptions rewritten.
- Minor tweak to VCP::Dest::p4 P4USER defaulting
#14 3640 Barrie Slaymaker - xmllint no longer require to build UI
- UI now offers multiple choices where appropriate
#13 3547 John Fetkovich Added defaults to yes/no questions (no in all cases)
#12 3523 John Fetkovich more ui defaults and checks added
#11 3521 John Fetkovich default cvsroot from $ENV{CVSROOT}
#10 3502 John Fetkovich removed obsolete commented out (source,dest)->init calls in stml files
#9 3486 John Fetkovich moved (source or dest)->init calls to bin/vcp
#8 3403 John Fetkovich options given on all multiple choice prompts,
       and most free-form prompts where it makes sense
#7 3399 John Fetkovich ui fixes
#6 3395 John Fetkovich various ui refinements
#5 3390 John Fetkovich handlers for cvs ui
#4 3306 Barrie Slaymaker Add StateML namespace support
#3 3260 John Fetkovich Improve some help texts
#2 3254 Barrie Slaymaker Redo machine naminf convention.
#1 3248 John Fetkovich Created VCP-Source-cvs.stml.
Small changes VCP-Source-p4.stml.