Artifact d530eb41003784a9a3fefbfa8e61103334ceafd6
File
tools/cvs2fossil/lib/cvs2fossil.tcl
part of check-in
[31b15fcf30]
- Split the current import pass into three, for files, changesets, and finalization (fossil rebuild).
by
aku on
2008-03-05 03:42:50.
## -*- tcl -*-
# # ## ### ##### ######## ############# #####################
## Copyright (c) 2007 Andreas Kupries.
#
# This software is licensed as described in the file LICENSE, which
# you should have received as part of this distribution.
#
# This software consists of voluntary contributions made by many
# individuals. For exact contribution history, see the revision
# history and logs, available at http://fossil-scm.hwaci.com/fossil
# # ## ### ##### ######## ############# #####################
## Main package of the cvs conversion/import facility. Loads the
## required pieces and controls their interaction.
# # ## ### ##### ######## ############# #####################
## Requirements
package require Tcl 8.4 ; # Required runtime.
package require snit ; # OO system
# # ## ### ##### ######## ############# #####################
## Passes. The order in which the various passes are loaded is
## important. It is the same order in which they will
## register, and then be run in.
package require vc::fossil::import::cvs::pass::collar ; # Coll'ect Ar'chives.
package require vc::fossil::import::cvs::pass::collrev ; # Coll'ect Rev'isions.
package require vc::fossil::import::cvs::pass::collsym ; # Coll'ate Sym'bols
package require vc::fossil::import::cvs::pass::filtersym ; # Filter' Sym'bols
# Note: cvs2svn's SortRevisionSummaryPass and SortSymbolSummaryPass
# are not implemented by us. They are irrelevant due to our use
# of a relational database proper for the persistent state,
# allowing us to sort the data on the fly as we need it.
package require vc::fossil::import::cvs::pass::initcsets ; # Init'ialize C'hange'Sets
package require vc::fossil::import::cvs::pass::csetdeps ; # C'hange'Set Dep'endencies
package require vc::fossil::import::cvs::pass::breakrcycle ; # Break' R'evision Cycle's
package require vc::fossil::import::cvs::pass::rtopsort ; # R'evision Top'ological Sort'
package require vc::fossil::import::cvs::pass::breakscycle ; # Break' S'ymbol Cycle's
package require vc::fossil::import::cvs::pass::breakacycle ; # Break' A'll Cycle's
package require vc::fossil::import::cvs::pass::atopsort ; # A'll Top'ological Sort'
package require vc::fossil::import::cvs::pass::importfiles ; # Import' Files
package require vc::fossil::import::cvs::pass::importcsets ; # Import' Changesets
package require vc::fossil::import::cvs::pass::importfinal ; # Import' Finalization
# # ## ### ##### ######## ############# #####################
## Support for passes etc.
package require vc::fossil::import::cvs::option ; # Cmd line parsing & database
package require vc::fossil::import::cvs::pass ; # Pass management
package require vc::tools::log ; # User feedback
# # ## ### ##### ######## ############# #####################
##
snit::type ::vc::fossil::import::cvs {
# # ## ### ##### ######## #############
## Public API, Methods
typemethod run {arguments} {
# Run a series of passes over the cvs repository to extract,
# filter, and order its historical information. Which passes
# are actually run is determined through the specified options
# and their defaults.
option process $arguments
pass run
vc::tools::log write 0 cvs2fossil Done
return
}
# # ## ### ##### ######## #############
## Configuration
pragma -hasinstances no ; # singleton
pragma -hastypeinfo no ; # no introspection
pragma -hastypedestroy no ; # immortal
# # ## ### ##### ######## #############
}
# # ## ### ##### ######## ############# #####################
## Ready
package provide vc::fossil::import::cvs 1.0
return