2929$SIG {' PIPE' }=" IGNORE" ;
3030$ENV {' TZ' }=" UTC" ;
3131
32- our ($opt_h ,$opt_o ,$opt_v ,$opt_k ,$opt_u ,$opt_d ,$opt_p ,$opt_C ,$opt_z ,$opt_i ,$opt_P , $opt_s ,$opt_m ,$opt_M ,$opt_A ,$opt_S ,$opt_L , $opt_a );
32+ our ($opt_h ,$opt_o ,$opt_v ,$opt_k ,$opt_u ,$opt_d ,$opt_p ,$opt_C ,$opt_z ,$opt_i ,$opt_P , $opt_s ,$opt_m ,$opt_M ,$opt_A ,$opt_S ,$opt_L , $opt_a , $opt_r );
3333my (%conv_author_name , %conv_author_email );
3434
3535sub usage (;$) {
@@ -114,7 +114,7 @@ sub read_repo_config {
114114 }
115115}
116116
117- my $opts = " haivmkuo:d:p:C:z:s:M:P:A:S:L:" ;
117+ my $opts = " haivmkuo:d:p:r: C:z:s:M:P:A:S:L:" ;
118118read_repo_config($opts );
119119getopts($opts ) or usage();
120120usage if $opt_h ;
@@ -134,13 +134,21 @@ sub read_repo_config {
134134} else {
135135 usage(" CVSROOT needs to be set" );
136136}
137- $opt_o ||= " origin" ;
138137$opt_s ||= " -" ;
139138$opt_a ||= 0;
140139
141140my $git_tree = $opt_C ;
142141$git_tree ||= " ." ;
143142
143+ my $remote ;
144+ if (defined $opt_r ) {
145+ $remote = ' refs/remotes/' . $opt_r ;
146+ $opt_o ||= " master" ;
147+ } else {
148+ $opt_o ||= " origin" ;
149+ $remote = ' refs/heads' ;
150+ }
151+
144152my $cvs_tree ;
145153if ($#ARGV == 0) {
146154 $cvs_tree = $ARGV [0];
522530 my $name = shift ;
523531 my $git_dir = shift ;
524532
525- my $f = " $git_dir /refs/heads /$name " ;
533+ my $f = " $git_dir /$remote /$name " ;
526534 if (open (my $fh , $f )) {
527535 chomp (my $r = <$fh >);
528536 is_sha1($r ) or die " Cannot get head id for $name ($r ): $! " ;
@@ -573,12 +581,12 @@ ($$)
573581
574582 # Get the last import timestamps
575583 my $fmt = ' ($ref, $author) = (%(refname), %(author));' ;
576- open (H, " git-for-each-ref --perl --format='$fmt ' refs/heads |" ) or
584+ open (H, " git-for-each-ref --perl --format='$fmt ' $remote |" ) or
577585 die " Cannot run git-for-each-ref: $! \n " ;
578586 while (defined (my $entry = <H>)) {
579587 my ($ref , $author );
580588 eval ($entry ) || die " cannot eval refs list: $@ " ;
581- my ($head ) = ($ref =~ m | ^refs/heads /(.*)| );
589+ my ($head ) = ($ref =~ m | ^$remote /(.*)| );
582590 $author =~ / ^.*\s (\d +)\s [-+]\d {4}$ / ;
583591 $branch_date {$head } = $1 ;
584592 }
@@ -701,9 +709,9 @@ sub commit {
701709 $index {$branch } = tmpnam();
702710 $ENV {GIT_INDEX_FILE } = $index {$branch };
703711 if ($ancestor ) {
704- system (" git-read-tree" , $ ancestor );
712+ system (" git-read-tree" , " $remote / $ ancestor" );
705713 } else {
706- system (" git-read-tree" , $ branch );
714+ system (" git-read-tree" , " $remote / $ branch" );
707715 }
708716 die " read-tree failed: $? \n " if $? ;
709717 }
@@ -762,7 +770,7 @@ sub commit {
762770 waitpid ($pid ,0);
763771 die " Error running git-commit-tree: $? \n " if $? ;
764772
765- system (" git-update-ref refs/heads /$branch $cid " ) == 0
773+ system (" git-update-ref $remote /$branch $cid " ) == 0
766774 or die " Cannot write branch $branch for update: $! \n " ;
767775
768776 if ($tag ) {
@@ -883,20 +891,20 @@ sub commit {
883891 print STDERR " Branch $branch erroneously stems from itself -- changed ancestor to $opt_o \n " ;
884892 $ancestor = $opt_o ;
885893 }
886- if (-f " $git_dir /refs/heads /$branch " ) {
894+ if (-f " $git_dir /$remote /$branch " ) {
887895 print STDERR " Branch $branch already exists!\n " ;
888896 $state =11;
889897 next ;
890898 }
891- unless (open (H," $git_dir /refs/heads /$ancestor " )) {
899+ unless (open (H," $git_dir /$remote /$ancestor " )) {
892900 print STDERR " Branch $ancestor does not exist!\n " ;
893901 $ignorebranch {$branch } = 1;
894902 $state =11;
895903 next ;
896904 }
897905 chomp (my $id = <H>);
898906 close (H);
899- unless (open (H," > $git_dir /refs/heads /$branch " )) {
907+ unless (open (H," > $git_dir /$remote /$branch " )) {
900908 print STDERR " Could not create branch $branch : $! \n " ;
901909 $ignorebranch {$branch } = 1;
902910 $state =11;
@@ -1010,13 +1018,13 @@ sub commit {
10101018 die "Fast-forward update failed: $? \n" if $? ;
10111019 }
10121020 else {
1013- system(qw(git-merge cvsimport HEAD), " refs/heads /$opt_o " );
1021+ system(qw(git-merge cvsimport HEAD), " $remote /$opt_o " );
10141022 die " Could not merge $opt_o into the current branch.\n" if $? ;
10151023 }
10161024} else {
10171025 $orig_branch = " master" ;
10181026 print " DONE; creating $orig_branch branch\n" if $opt_v ;
1019- system(" git-update-ref " , " refs/heads/master" , " refs/heads /$opt_o " )
1027+ system(" git-update-ref " , " refs/heads/master" , " $remote /$opt_o " )
10201028 unless -f " $git_dir /refs/heads/master" ;
10211029 system('git-update-ref', 'HEAD', " $orig_branch " );
10221030 unless ($opt_i ) {
0 commit comments