| | @@ -46,11 +46,11 @@ |
| 46 | 46 | package require fossil ; # Backend, writing to destination repository. |
| 47 | 47 | |
| 48 | 48 | # ----------------------------------------------------------------------------- |
| 49 | 49 | |
| 50 | 50 | proc main {} { |
| 51 | | - global argv tot nto cvs fossil ntrunk |
| 51 | + global argv tot nto cvs fossil ntrunk stopat |
| 52 | 52 | |
| 53 | 53 | commandline |
| 54 | 54 | |
| 55 | 55 | fossil::feedback Write ; # Setup progress feedback from the libraries |
| 56 | 56 | cvs::feedback Write |
| | @@ -70,10 +70,11 @@ |
| 70 | 70 | fossil::new ; # Uses cwd as workspace to connect to. |
| 71 | 71 | |
| 72 | 72 | set ntrunk [cvs::ntrunk] |
| 73 | 73 | cvs::foreach_cset cset [cvs::root] { |
| 74 | 74 | import $cset |
| 75 | + if {$stopat == $cset} exit |
| 75 | 76 | } |
| 76 | 77 | cvs::wsclear |
| 77 | 78 | |
| 78 | 79 | Write info " ========= [string repeat = 61]" |
| 79 | 80 | Write info " Imported $nto [expr {($nto == 1) ? "changeset" : "changesets"}]" |
| | @@ -89,14 +90,15 @@ |
| 89 | 90 | |
| 90 | 91 | |
| 91 | 92 | # ----------------------------------------------------------------------------- |
| 92 | 93 | |
| 93 | 94 | proc commandline {} { |
| 94 | | - global argv cvs fossil nosign log debugcommit |
| 95 | + global argv cvs fossil nosign log debugcommit stopat |
| 95 | 96 | |
| 96 | 97 | set nosign 0 |
| 97 | 98 | set debugcommit 0 |
| 99 | + set stopat {} |
| 98 | 100 | |
| 99 | 101 | while {[string match "-*" [set opt [lindex $argv 0]]]} { |
| 100 | 102 | if {$opt eq "--nosign"} { |
| 101 | 103 | set nosign 1 |
| 102 | 104 | set argv [lrange $argv 1 end] |
| | @@ -104,10 +106,15 @@ |
| 104 | 106 | } |
| 105 | 107 | if {$opt eq "--debugcommit"} { |
| 106 | 108 | set debugcommit 1 |
| 107 | 109 | set argv [lrange $argv 1 end] |
| 108 | 110 | continue |
| 111 | + } |
| 112 | + if {$opt eq "--stopat"} { |
| 113 | + set stopat [lindex $argv 1] |
| 114 | + set argv [lrange $argv 2 end] |
| 115 | + continue |
| 109 | 116 | } |
| 110 | 117 | usage |
| 111 | 118 | } |
| 112 | 119 | if {[llength $argv] != 2} usage |
| 113 | 120 | foreach {cvs fossil} $argv break |
| | @@ -135,16 +142,24 @@ |
| 135 | 142 | puts stderr " $text" |
| 136 | 143 | exit |
| 137 | 144 | } |
| 138 | 145 | |
| 139 | 146 | proc import {cset} { |
| 140 | | - global tot nto nosign ntrunk |
| 147 | + global tot nto nosign ntrunk stopat |
| 141 | 148 | Write info " Importing $cset [string repeat = [expr {60 - [string length $cset]}]]" |
| 142 | 149 | Write info " At $nto/$ntrunk ([format %.2f [expr {$nto*100.0/$ntrunk}]]%)" |
| 150 | + |
| 151 | + if {$stopat == $cset} { |
| 152 | + fossil::commit 1 cvs2fossil $nosign \ |
| 153 | + [cvs::wssetup $cset] \ |
| 154 | + ::cvs::wsignore |
| 155 | + Write info " %% STOP" |
| 156 | + return |
| 157 | + } |
| 143 | 158 | |
| 144 | 159 | set usec [lindex [time { |
| 145 | | - foreach {uuid ad rm ch} [fossil::commit cvs2fossil $nosign \ |
| 160 | + foreach {uuid ad rm ch} [fossil::commit 0 cvs2fossil $nosign \ |
| 146 | 161 | [cvs::wssetup $cset] \ |
| 147 | 162 | ::cvs::wsignore] break |
| 148 | 163 | } 1] 0] |
| 149 | 164 | cvs::uuid $cset $uuid |
| 150 | 165 | |
| 151 | 166 | |