Changeset 233

Show
Ignore:
Timestamp:
05/29/2006 09:41:40 AM
Author:
luedi
Message:
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/Dirk/pin_handler/Vss2Svn/ActionHandler.pm

    r228 r233  
    499499#    } 
    500500 
    501     # recover the parent 
     501    # recover this item within the current parent 
    502502    my $parentinfo = $physinfo->{parents}->{$row->{parentphys}}; 
    503503    if (undef $parentinfo->{deleted}) { 
     
    519519        $self->_get_valid_path ($physname, $row->{parentphys}, $row->{version}); 
    520520    $self->{itempaths} = [$itempath]; 
    521     $self->{version} = $physinfo->{last_version}; 
     521     
     522    # We only set the version number, if this item is a file item. If it is a 
     523    # project item, we must recover from the last known revision, which is 
     524    # determined in the dumpfile handler 
     525    if ($row->{itemtype} == 1) { 
     526        $self->{version} = $physinfo->{last_version}; 
     527    } 
    522528 
    523529    return 1; 
     
    581587     
    582588    $self->{itempaths} = $itempaths; 
     589    $self->{info} = $row->{label}; 
     590     
    583591    return 1; 
    584592}  #  End _label_handler 
  • branches/Dirk/pin_handler/Vss2Svn/Dumpfile.pm

    r232 r233  
    22 
    33use Vss2Svn::Dumpfile::Node; 
     4use Vss2Svn::Dumpfile::SanityChecker; 
    45use Encode qw(from_to); 
    56 
     
    3940         revision => 0, 
    4041         errors => [], 
    41 #         modified_cache => {}, 
    4242         deleted_cache => {}, 
    4343         version_cache => [], 
    44          svn_items => {}, 
    45          junk_itempaths => {}, 
    46          need_junkdir => 0, 
    47          need_missing_dirs => [], 
     44         repository => Vss2Svn::Dumpfile::SanityChecker->new(), 
    4845        }; 
    4946 
     
    122119 
    123120    $self->{is_primary} = 1; 
    124 #    $self->{modified_cache} = {}; 
    125121    $self->{deleted_cache} = {}; 
    126122    $self->{version_cache} = []; 
     
    131127        $this_action = $action; 
    132128 
    133         if(defined($itempath)) { 
    134 #            ($this_action, $itempath) = 
    135 #                $self->_action_path_sanity_check($this_action, $itempath, $data); 
    136  
    137             return 0 unless defined($itempath); 
    138  
    139         } else { 
    140             # if the item's path isn't defined, its real name was corrupted in 
    141             # vss, so we'll check it in to the junk drawer as an add 
    142             if (defined $main::gCfg{junkdir}) { 
    143                 $itempath = $self->_get_junk_itempath($main::gCfg{junkdir}, 
    144                     join('.', @$data{ qw(physname version revision_id) })); 
    145  
    146                 $self->add_error("Using filename '$itempath' for item with " 
    147                     . "unrecoverable name at revision $data->{revision_id}"); 
    148  
    149                 $this_action = 'ADD'; 
    150             } else { 
    151                 return 0; 
    152             } 
     129#        $this_action = $self->sanity_checker->check ($data, $itempath, $nodes); 
     130#        if (!defined ($this_action)) { 
     131#            return 0; 
     132#        } 
     133             
     134        $handler = $gHandlers{$this_action}; 
     135 
     136        my $thisnodes = []; 
     137        $self->$handler($itempath, $thisnodes, $data, $expdir); 
     138 
     139        # we need to apply all local changes to our repository directly: if we 
     140        # have an action that operates on multiple items, e.g labeling, the 
     141        # necessary missing directories are created for the first item 
     142        foreach my $node (@$thisnodes) { 
     143            $self->{repository}->load($node); 
     144            push @$nodes, $node; 
    153145        } 
    154  
    155         # if need_junkdir = 1, the first item is just about to be added to the 
    156         # junk drawer, so create the dumpfile node to add this directory 
    157         if ($self->{need_junkdir} == 1) { 
    158             $self->_add_svn_dir($nodes, $main::gCfg{junkdir}); 
    159             $self->{need_junkdir} = -1; 
    160         } 
    161  
    162         foreach my $dir (@{ $self->{need_missing_dirs} }) { 
    163             $self->_add_svn_dir($nodes, $dir); 
    164             $self->add_error("Creating missing directory '$dir' for item " 
    165                 . "'$itempath' at revision $data->{revision_id}"); 
    166         } 
    167  
    168         $handler = $gHandlers{$this_action}; 
    169  
    170         $self->$handler($itempath, $nodes, $data, $expdir); 
     146         
    171147        $self->{is_primary} = 0; 
    172148    } 
     
    177153 
    178154    my($physname, $cache); 
    179 #    while(($physname, $cache) = each %{ $self->{modified_cache} }) { 
    180 #        $gModified{$physname} = $cache; 
    181 #    } 
    182155  
    183156    my ($parentphys, $physnames); 
     
    196169}  #  End do_action 
    197170 
    198 ############################################################################### 
    199 #  _get_junk_itempath 
    200 ############################################################################### 
    201 sub _get_junk_itempath { 
    202     my($self, $dir, $base) = @_; 
    203  
    204     $base =~ s:.*/::; 
    205     my $itempath = "$dir/$base"; 
    206     my $count = 1; 
    207  
    208     if($self->{need_junkdir} == 0) { 
    209         $self->{need_junkdir} = 1; 
    210     } 
    211  
    212     if(!defined($self->{junk_itempaths}->{$itempath})) { 
    213         $self->{junk_itempaths}->{$itempath} = 1; 
    214         return $itempath; 
    215     } 
    216  
    217     my($file, $ext); 
    218  
    219     if($base =~ m/^(.*)\.(.*)/) { 
    220         ($file, $ext) = ($1, ".$2"); 
    221     } else { 
    222         ($file, $ext) = ($base, ''); 
    223     } 
    224  
    225     while(defined($self->{junk_itempaths}->{$itempath})) { 
    226         $itempath = "$dir/$file.$count$ext"; 
    227         $count++; 
    228     } 
    229  
    230     return $itempath; 
    231 }  #  End _get_junk_itempath 
    232  
    233 ############################################################################### 
    234 #  _action_path_sanity_check 
    235 ############################################################################### 
    236 sub _action_path_sanity_check { 
    237     my($self, $action, $itempath, $data) = @_; 
    238  
    239     my($itemtype, $revision_id) = @{ $data }{qw(itemtype revision_id)}; 
    240  
    241     return($action, $itempath) if ($itempath eq '' || $itempath eq '/'); 
    242  
    243     my($newaction, $newpath) = ($action, $itempath); 
    244     my $success; 
    245  
    246     $self->{need_missing_dirs} = []; 
    247  
    248     if($action eq 'ADD' || $action eq 'SHARE' || $action eq 'RECOVER') { 
    249         $success = $self->_add_svn_struct_item($itempath, $itemtype); 
    250  
    251         if(!defined($success)) { 
    252             $newpath = undef; 
    253             $self->add_error("Path consistency failure while trying to add " 
    254                 . "item '$itempath' at revision $revision_id; skipping"); 
    255  
    256         } elsif($success == 0) { 
    257             # trying to re-add existing item; if file, change it to a commit 
    258             if ($itemtype == 1) { 
    259  
    260                 $newpath = undef; 
    261                 $self->add_error("Attempt to re-add directory '$itempath' at " 
    262                 . "revision $revision_id; possibly missing delete"); 
    263  
    264             } else { 
    265  
    266                 $newaction = 'COMMIT'; 
    267                 $self->add_error("Attempt to re-add file '$itempath' at " 
    268                     . "revision $revision_id, changing to modify; possibly " 
    269                     . "missing delete"); 
    270  
    271             } 
     171 
     172############################################################################### 
     173#  _add_handler 
     174############################################################################### 
     175sub _add_handler { 
     176    my($self, $itempath, $nodes, $data, $expdir) = @_; 
     177 
     178    if ($self->{repository}->exists ($itempath)) { 
     179        if ($data->{itemtype} == 2) { 
     180            $self->add_error("Attempt to re-add file '$itempath' at " 
     181                . "revision $data->{revision_id}, changing to modify; possibly " 
     182                . "missing delete"); 
     183            return $self->_commit_handler ($itempath, $nodes, $data, $expdir); 
    272184        } 
    273  
    274     } elsif ($action eq 'DELETE') { 
    275         $success = $self->_delete_svn_struct_item($itempath, $itemtype); 
    276  
    277         if(!$success) { 
    278             $newpath = undef; 
    279             $self->add_error("Attempt to delete non-existent item '$itempath' " 
    280                 . "at revision $revision_id; skipping..."); 
     185        else { 
     186            $self->add_error("Attempt to re-add directory '$itempath' at " 
     187                . "revision $data->{revision_id}, skipping action: possibly " 
     188                . "missing delete"); 
     189            return 0; 
    281190        } 
    282  
    283     } elsif ($action eq 'RENAME') { 
    284         $success = $self->_rename_svn_struct_item($itempath, $itemtype, 
    285             $data->{info}); 
    286  
    287         if(!$success) { 
    288             $newpath = undef; 
    289             $self->add_error("Attempt to rename non-existent item '$itempath' " 
    290                 . "at revision $revision_id; skipping..."); 
    291         } 
    292     } elsif ($action eq 'MOVE') { 
    293         my ($ref, $item) = $self->_get_svn_struct_ref_for_move($itempath); 
    294  
    295         if(!$ref) { 
    296             $newpath = undef; 
    297             $self->add_error("Attempt to move non-existent directory '$itempath' " 
    298                 . "at revision $revision_id; skipping..."); 
    299         } 
    300  
    301         $success = $self->_add_svn_struct_item($data->{info}, 1, $ref->{$item}); 
    302  
    303         if(!$success) { 
    304             $newpath = undef; 
    305             $self->add_error("Error while attempting to move directory '$itempath' " 
    306                 . "at revision $revision_id; skipping..."); 
    307         } 
    308  
    309         delete $ref->{$item}; 
    310     } 
    311  
    312     return($newaction, $newpath); 
    313  
    314 }  #  End _action_path_sanity_check 
    315  
    316 ############################################################################### 
    317 #  _add_svn_struct_item 
    318 ############################################################################### 
    319 sub _add_svn_struct_item { 
    320     my($self, $itempath, $itemtype, $newref) = @_; 
    321  
    322     $itempath =~ s:^/::; 
    323     my @subdirs = split '/', $itempath; 
    324  
    325     my $item = pop(@subdirs); 
    326     my $ref = $self->{svn_items}; 
    327  
    328     my $thispath = ''; 
    329  
    330     foreach my $subdir (@subdirs) { 
    331         $thispath .= "$subdir/"; 
    332  
    333         if(ref($ref) ne 'HASH') { 
    334             return undef; 
    335         } 
    336         if(!defined($ref->{$subdir})) { 
    337             # parent directory doesn't exist; add it to list of missing dirs 
    338             # to build up 
    339             push @{ $self->{need_missing_dirs} }, $thispath; 
    340  
    341             $ref->{$subdir} = {}; 
    342         } 
    343  
    344         $ref = $ref->{$subdir}; 
    345     } 
    346  
    347     if(ref($ref) ne 'HASH') { 
    348         # parent "directory" is actually a file 
    349         return undef; 
    350     } 
    351  
    352     if(defined($ref->{$item})) { 
    353         # item already exists; can't add it 
    354         return 0; 
    355     } 
    356  
    357     if(defined($newref)) { 
    358         $ref->{$item} = $newref; 
    359     } else { 
    360         $ref->{$item} = ($itemtype == 1)? {} : 1; 
    361     } 
    362  
    363     return 1; 
    364  
    365 }  #  End _add_svn_struct_item 
    366  
    367 ############################################################################### 
    368 #  _delete_svn_struct_item 
    369 ############################################################################### 
    370 sub _delete_svn_struct_item { 
    371     my($self, $itempath, $itemtype) = @_; 
    372  
    373     return $self->_delete_rename_svn_struct_item($itempath, $itemtype); 
    374 }  #  End _delete_svn_struct_item 
    375  
    376 ############################################################################### 
    377 #  _rename_svn_struct_item 
    378 ############################################################################### 
    379 sub _rename_svn_struct_item { 
    380     my($self, $itempath, $itemtype, $newname) = @_; 
    381  
    382     return $self->_delete_rename_svn_struct_item($itempath, $itemtype, $newname); 
    383 }  #  End _rename_svn_struct_item 
    384  
    385 ############################################################################### 
    386 #  _delete_rename_svn_struct_item 
    387 ############################################################################### 
    388 sub _delete_rename_svn_struct_item { 
    389     my($self, $itempath, $itemtype, $newname, $movedref) = @_; 
    390  
    391     $itempath =~ s:^/::; 
    392     $newname =~ s:/$:: if defined($newname); 
    393     my @subdirs = split '/', $itempath; 
    394  
    395     my $item = pop(@subdirs); 
    396     my $ref = $self->{svn_items}; 
    397  
    398     foreach my $subdir (@subdirs) { 
    399         if(!(ref($ref) eq 'HASH') || !defined($ref->{$subdir})) { 
    400             # can't get to item because a parent directory doesn't exist; give up 
    401             return undef; 
    402         } 
    403  
    404         $ref = $ref->{$subdir}; 
    405     } 
    406  
    407     if((ref($ref) ne 'HASH') || !defined($ref->{$item})) { 
    408         # item doesn't exist; can't delete/rename it 
    409         return 0; 
    410     } 
    411  
    412     if(defined $newname) { 
    413         $ref->{$newname} = $ref->{$item}; 
    414     } 
    415  
    416     delete $ref->{$item}; 
    417  
    418     return 1; 
    419  
    420 }  #  End _delete_rename_svn_struct_item 
    421  
    422 ############################################################################### 
    423 #  _get_svn_struct_ref_for_move 
    424 ############################################################################### 
    425 sub _get_svn_struct_ref_for_move { 
    426     my($self, $itempath) = @_; 
    427  
    428     $itempath =~ s:^/::; 
    429     my @subdirs = split '/', $itempath; 
    430  
    431     my $item = pop(@subdirs); 
    432     my $ref = $self->{svn_items}; 
    433  
    434     my $thispath = ''; 
    435  
    436     foreach my $subdir (@subdirs) { 
    437         $thispath .= "$subdir/"; 
    438  
    439         if(ref($ref) ne 'HASH') { 
    440             return undef; 
    441         } 
    442         if(!defined($ref->{$subdir})) { 
    443             return undef; 
    444         } 
    445  
    446         $ref = $ref->{$subdir}; 
    447     } 
    448  
    449     if((ref($ref) ne 'HASH') || !defined($ref->{$item}) || 
    450        (ref($ref->{$item} ne 'HASH'))) { 
    451         return undef; 
    452     } 
    453  
    454     return ($ref, $item); 
    455  
    456 }  #  End _get_svn_struct_ref_for_move 
    457  
    458 ############################################################################### 
    459 #  _add_svn_dir 
    460 ############################################################################### 
    461 sub _add_svn_dir { 
    462     my($self, $nodes, $dir) = @_; 
    463  
    464     my $node = Vss2Svn::Dumpfile::Node->new(); 
    465     my $data = { itemtype => 1, is_binary => 0 }; 
    466  
    467     $node->set_initial_props($dir, $data); 
    468     $node->{action} = 'add'; 
    469  
    470     push @$nodes, $node; 
    471     $self->_add_svn_struct_item($dir, 1); 
    472  
    473 }  #  End _add_svn_dir 
    474  
    475 ############################################################################### 
    476 #  _add_handler 
    477 ############################################################################### 
    478 sub _add_handler { 
    479     my($self, $itempath, $nodes, $data, $expdir) = @_; 
    480  
     191    } 
     192 
     193    my $success = $self->{repository}->exists_parent ($itempath); 
     194    if(!defined($success)) { 
     195        $self->add_error("Path consistency failure while trying to add " 
     196            . "item '$itempath' at revision $data->{revision_id}; skipping"); 
     197        return 0; 
     198    } 
     199    elsif ($success == 0) { 
     200        $self->add_error("Parent path missing while trying to add " 
     201            . "item '$itempath' at revision $data->{revision_id}: adding missing " 
     202            . "parents"); 
     203        $self->_create_svn_path ($nodes, $itempath); 
     204    } 
     205     
    481206    my $node = Vss2Svn::Dumpfile::Node->new(); 
    482207    $node->set_initial_props($itempath, $data); 
     
    500225    my($self, $itempath, $nodes, $data, $expdir) = @_; 
    501226 
     227    if (!$self->{repository}->exists ($itempath)) { 
     228        $self->add_error("Attempt to commit to non-existant file '$itempath' at " 
     229            . "revision $data->{revision_id}, changing to add; possibly " 
     230            . "missing recover"); 
     231        return $self->_add_handler ($itempath, $nodes, $data, $expdir); 
     232    } 
     233     
    502234    my $node = Vss2Svn::Dumpfile::Node->new(); 
    503235    $node->set_initial_props($itempath, $data); 
     
    524256 
    525257    my $newname = $data->{info}; 
    526  
    527258    my $newpath = $itempath; 
    528259 
     
    533264    } 
    534265 
     266    if ($self->{repository}->exists ($newpath)) { 
     267        $self->add_error("Attempt to rename item '$itempath' to '$newpath' at " 
     268            . "revision $data->{revision_id}, but destination already exists: possibly " 
     269            . "missing delete; skipping"); 
     270        return 0; 
     271    } 
     272 
     273    if (!$self->{repository}->exists ($itempath)) { 
     274        $self->add_error("Attempt to rename item '$itempath' to '$newpath' at " 
     275            . "revision $data->{revision_id}, but source doesn't exists: possibly " 
     276            . "missing recover; skipping"); 
     277        return 0; 
     278    } 
     279 
    535280    my $node = Vss2Svn::Dumpfile::Node->new(); 
    536281    $node->set_initial_props($newpath, $data); 
     
    553298 
    554299    $node = Vss2Svn::Dumpfile::Node->new(); 
    555     $node->{path} = $itempath
     300    $node->set_initial_props($itempath, $data)
    556301    $node->{action} = 'delete'; 
    557302    $node->{hideprops} = 1; 
     
    569314sub _share_handler { 
    570315    my($self, $itempath, $nodes, $data, $expdir) = @_; 
     316 
     317    if ($self->{repository}->exists ($itempath)) { 
     318        $self->add_error("Attempt to share item '$data->{info}' to '$itempath' at " 
     319            . "revision $data->{revision_id}, but destination already exists: possibly " 
     320            . "missing delete; skipping"); 
     321        return 0; 
     322    } 
     323 
     324#   It could be possible that we share from a historically renamed item, so we don't check the source 
     325#    if ($self->{repository}->exists ($data->{info})) { 
     326#        $self->add_error("Attempt to share item '$itempath' to '$newpath' at " 
     327#            . "revision $data->{revision_id}, but destination already exists: possibly " 
     328#            . "missing delete; skipping"); 
     329#        return 0; 
     330#    } 
    571331 
    572332    my $node = Vss2Svn::Dumpfile::Node->new(); 
     
    615375    my $newpath = $data->{info}; 
    616376 
     377    if ($self->{repository}->exists ($newpath)) { 
     378        $self->add_error("Attempt to move item '$itempath' to '$newpath' at " 
     379            . "revision $data->{revision_id}, but destination already exists: possibly " 
     380            . "missing delete; skipping"); 
     381        return 0; 
     382    } 
     383 
     384    if (!$self->{repository}->exists ($itempath)) { 
     385        $self->add_error("Attempt to move item '$itempath' to '$newpath' at " 
     386            . "revision $data->{revision_id}, but source doesn't exists: possibly " 
     387            . "missing recover; skipping"); 
     388        return 0; 
     389    } 
     390     
    617391    my $node = Vss2Svn::Dumpfile::Node->new(); 
    618392    $node->set_initial_props($newpath, $data); 
     
    633407 
    634408    $node = Vss2Svn::Dumpfile::Node->new(); 
    635     $node->{path} = $itempath
     409    $node->set_initial_props($itempath, $data)
    636410    $node->{action} = 'delete'; 
    637411    $node->{hideprops} = 1; 
     
    647421    my($self, $itempath, $nodes, $data, $expdir) = @_; 
    648422 
    649     my $node = Vss2Svn::Dumpfile::Node->new(); 
    650     $node->{path} = $itempath; 
     423    if (!$self->{repository}->exists ($itempath)) { 
     424        $self->add_error("Attempt to delete non-existent item '$itempath' at " 
     425            . "revision $data->{revision_id}: possibly " 
     426            . "missing recover/add/share; skipping"); 
     427        return 0; 
     428    } 
     429 
     430    my $node = Vss2Svn::Dumpfile::Node->new(); 
     431    $node->set_initial_props($itempath, $data); 
    651432    $node->{action} = 'delete'; 
    652433    $node->{hideprops} = 1; 
     
    664445sub _recover_handler { 
    665446    my($self, $itempath, $nodes, $data, $expdir) = @_; 
     447 
     448    if ($self->{repository}->exists ($itempath)) { 
     449        $self->add_error("Attempt to recover existing item '$itempath' at " 
     450            . "revision $data->{revision_id}: possibly " 
     451            . "missing delete; change to commit"); 
     452        return $self->_commit_handler ($itempath, $nodes, $data, $expdir); 
     453    } 
    666454 
    667455    my $node = Vss2Svn::Dumpfile::Node->new(); 
     
    686474    $node->{copypath} = $copypath; 
    687475 
    688     $self->track_version ($data->{physname}, $data->{version}, $itempath); 
     476    if (defined ($data->{version})) { 
     477        $self->track_version ($data->{physname}, $data->{version}, $itempath); 
     478    } 
    689479 
    690480    push @$nodes, $node; 
     
    697487sub _pin_handler { 
    698488    my($self, $itempath, $nodes, $data, $expdir) = @_; 
     489 
     490    if (!$self->{repository}->exists ($itempath)) { 
     491        $self->add_error("Attempt to pin non-existing item '$itempath' at " 
     492            . "revision $data->{revision_id}: possibly " 
     493            . "missing recover; skipping"); 
     494        return 0; 
     495    } 
    699496 
    700497    my $copyrev =  
     
    725522############################################################################### 
    726523sub _label_handler { 
     524    my($self, $itempath, $nodes, $data, $expdir) = @_; 
     525 
     526    if (!$self->{repository}->exists ($itempath)) { 
     527        $self->add_error("Attempt to label non-existing item '$itempath' at " 
     528            . "revision $data->{revision_id}: possibly " 
     529            . "missing recover; skipping"); 
     530        return 0; 
     531    } 
     532 
     533    my $label = $data->{info}; 
     534     
     535    # It is possible that the label was deleted later, so we see here a label 
     536    # action, but no label was assigned. In this case, we only need to track 
     537    # the version->revision mapping, since the version could have been used 
     538    # as a valid share source. 
     539    if (defined ($label)) { 
     540        my $uniquepath = join('.', @$data{ qw(physname version) }); 
     541        my $labelpath = "$main::gCfg{labeldir}/$data->{info}$itempath"; 
     542 
     543        $self->_create_svn_path ($nodes, $labelpath); 
     544 
     545        my $node = Vss2Svn::Dumpfile::Node->new(); 
     546        $node->set_initial_props($labelpath, $data); 
     547        $node->{action} = 'add'; 
     548     
     549        my $copyrev = $data->{revision_id} - 1; 
     550        my $copypath = $itempath; 
     551 
     552        $node->{copyrev} = $copyrev; 
     553        $node->{copypath} = $copypath; 
     554 
     555        push @$nodes, $node; 
     556         
     557    } 
     558 
     559    $self->track_version ($data->{physname}, $data->{version}, $itempath); 
    727560}  #  End _label_handler 
     561 
     562############################################################################### 
     563#  _add_svn_dir 
     564############################################################################### 
     565sub _add_svn_dir { 
     566    my($self, $nodes, $dir) = @_; 
     567 
     568    my $node = Vss2Svn::Dumpfile::Node->new(); 
     569    my $data = { itemtype => 1, is_binary => 0 }; 
     570 
     571    $node->set_initial_props($dir, $data); 
     572    $node->{action} = 'add'; 
     573 
     574    push @$nodes, $node; 
     575}  #  End _add_svn_dir 
     576 
     577 
     578############################################################################### 
     579#  _create_svn_path 
     580############################################################################### 
     581sub _create_svn_path { 
     582    my($self, $nodes, $itempath) = @_; 
     583 
     584    my $missing_dirs = $self->{repository}->get_missing_dirs($itempath); 
     585 
     586    foreach my $dir (@$missing_dirs) { 
     587        $self->_add_svn_dir($nodes, $dir); 
     588    } 
     589}  #  End _create_svn_path 
    728590 
    729591############################################################################### 
     
    763625}  #  End get_revision 
    764626 
    765 ################################################################################ 
    766 ##  track_modified 
    767 ################################################################################ 
    768 #sub track_modified { 
    769 #    my($self, $physname, $revision, $path) = @_; 
    770 # 
    771 #    return unless $self->{is_primary}; 
    772 # 
    773 #    $self->{modified_cache}->{$physname} = 
    774 #        { 
    775 #         revision => $revision, 
    776 #         path => $path, 
    777 #        }; 
    778 # 
    779 #}  #  End track_modified 
    780  
    781627############################################################################### 
    782628#  track_deleted 
     
    792638 
    793639}  #  End track_deleted 
    794  
    795 ################################################################################ 
    796 ##  last_modified_rev_path 
    797 ################################################################################ 
    798 #sub last_modified_rev_path { 
    799 #    my($self, $physname) = @_; 
    800 # 
    801 #    if (!defined($gModified{$physname})) { 
    802 #        return (undef, undef); 
    803 #    } 
    804 # 
    805 #    return @{ $gModified{$physname} }{ qw(revision path) }; 
    806 #}  #  End last_modified_rev_path 
    807640 
    808641############################################################################### 
  • branches/Dirk/pin_handler/vss2svn.pl

    r232 r233  
    740740        # MOVE: the new path 
    741741        # PIN: the path of the version that was pinned       
     742        # LABEL: the name of the label 
    742743        $row->{info} = $handler->{info}; 
    743744 
     
    13021303        RollBack => {type => 2, action => 'BRANCH'}, 
    13031304        UnpinnedFile => {type => 2, action => 'PIN'}, 
    1304         Labeled => {type => 2, action => 'IGNORE'}, 
     1305        Labeled => {type => 2, action => 'LABEL'}, 
    13051306    ); 
    13061307 
     
    15601561    $gCfg{junkdir} = '/lost+found'; 
    15611562 
     1563    $gCfg{labeldir} = '/labels'; 
     1564 
    15621565    $gCfg{errortasks} = []; 
    15631566 

These ads are automatically generated by Google based on the content of this page. Revenue from these ads helps to pay for hosting fees of this site; however, these ads do not constitute an endorsement by PumaCode.org.