- if (my $todo = $self->{todo}) { # manifest clone, deal with references
- my $entv = delete $task->{-entv};
- while (@$entv) {
- my ($edst, $ent) = splice(@$entv, 0, 2);
- my $etask = bless { %$task }, __PACKAGE__;
- $etask->{-ent} = $ent; # may have {reference}
- $etask->{cur_src} = shift @src_edst //
- die 'BUG: no cur_src';
- $etask->{cur_dst} = shift @src_edst //
- die 'BUG: no cur_dst';
- $etask->{cur_dst} eq $edst or
- die "BUG: `$etask->{cur_dst}' != `$edst'";
- $etask->{-is_epoch} = $fini;
- push @{$todo->{($ent->{reference} // '')}}, $etask;
- }
- } else {
- my @cmd = clone_cmd($lei, my $opt = {});
- while (@src_edst && !$lei->{child_error}) {
- my $cmd = [ @$pfx, @cmd, splice(@src_edst, 0, 2) ];
- start_clone($self, $cmd, $opt, $fini);
- }
+ while (@entv) {
+ my ($edst, $ent) = splice(@entv, 0, 2);
+ my $etask = bless { %$task }, __PACKAGE__;
+ $etask->{-ent} = $ent; # may have {reference}
+ $etask->{cur_src} = shift @src_edst // die 'BUG: no cur_src';
+ $etask->{cur_dst} = shift @src_edst // die 'BUG: no cur_dst';
+ $etask->{cur_dst} eq $edst or
+ die "BUG: `$etask->{cur_dst}' != `$edst'";
+ $etask->{-is_epoch} = $fini;
+ push @{$self->{todo}->{($ent->{reference} // '')}}, $etask;