File Annotation
Not logged in
84de38d73f 2007-10-10       aku: ## -*- tcl -*-
84de38d73f 2007-10-10       aku: # # ## ### ##### ######## ############# #####################
84de38d73f 2007-10-10       aku: ## Copyright (c) 2007 Andreas Kupries.
84de38d73f 2007-10-10       aku: #
84de38d73f 2007-10-10       aku: # This software is licensed as described in the file LICENSE, which
84de38d73f 2007-10-10       aku: # you should have received as part of this distribution.
84de38d73f 2007-10-10       aku: #
84de38d73f 2007-10-10       aku: # This software consists of voluntary contributions made by many
84de38d73f 2007-10-10       aku: # individuals.  For exact contribution history, see the revision
84de38d73f 2007-10-10       aku: # history and logs, available at http://fossil-scm.hwaci.com/fossil
84de38d73f 2007-10-10       aku: # # ## ### ##### ######## ############# #####################
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku: ## Revisions per file.
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku: # # ## ### ##### ######## ############# #####################
84de38d73f 2007-10-10       aku: ## Requirements
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku: package require Tcl 8.4                             ; # Required runtime.
84de38d73f 2007-10-10       aku: package require snit                                ; # OO system.
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku: # # ## ### ##### ######## ############# #####################
84de38d73f 2007-10-10       aku: ##
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku: snit::type ::vc::fossil::import::cvs::file::rev {
84de38d73f 2007-10-10       aku:     # # ## ### ##### ######## #############
84de38d73f 2007-10-10       aku:     ## Public API
84de38d73f 2007-10-10       aku: 
da9295c6f6 2007-10-12       aku:     constructor {revnr date author state thefile} {
da9295c6f6 2007-10-12       aku: 	set myrevnr  $revnr
da9295c6f6 2007-10-12       aku: 	set mydate   $date
da9295c6f6 2007-10-12       aku: 	set myauthor $author
da9295c6f6 2007-10-12       aku: 	set mystate  $state
da9295c6f6 2007-10-12       aku: 	set myfile   $thefile
bd131addb9 2007-10-12       aku: 	return
bd131addb9 2007-10-12       aku:     }
bd131addb9 2007-10-12       aku: 
da9295c6f6 2007-10-12       aku:     method hascommitmsg {} { return $myhascm }
bd131addb9 2007-10-12       aku: 
bd131addb9 2007-10-12       aku:     method setcommitmsg {cm} {
da9295c6f6 2007-10-12       aku: 	set mycommitmsg $cm
da9295c6f6 2007-10-12       aku: 	set myhascm 1
da9295c6f6 2007-10-12       aku: 	return
bd131addb9 2007-10-12       aku:     }
bd131addb9 2007-10-12       aku: 
bd131addb9 2007-10-12       aku:     method settext {text} {
da9295c6f6 2007-10-12       aku: 	set mytext $text
da9295c6f6 2007-10-12       aku: 	return
da9295c6f6 2007-10-12       aku:     }
da9295c6f6 2007-10-12       aku: 
da9295c6f6 2007-10-12       aku:     method setbranch {branchnr} {
da9295c6f6 2007-10-12       aku: 	set mybranchnr $branchnr
84de38d73f 2007-10-10       aku: 	return
84de38d73f 2007-10-10       aku:     }
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku:     # # ## ### ##### ######## #############
bd131addb9 2007-10-12       aku:     ## Type API
bd131addb9 2007-10-12       aku: 
bd131addb9 2007-10-12       aku:     typemethod istrunkrevnr {revnr} {
da9295c6f6 2007-10-12       aku: 	return [expr {[llength [split $revnr .]] == 2}]
bd131addb9 2007-10-12       aku:     }
bd131addb9 2007-10-12       aku: 
bd131addb9 2007-10-12       aku:     typemethod 2branchnr {revnr} {
bd131addb9 2007-10-12       aku: 	# Input is a branch revision number, i.e. a revision number
bd131addb9 2007-10-12       aku: 	# with an even number of components; for example '2.9.2.1'
bd131addb9 2007-10-12       aku: 	# (never '2.9.2' nor '2.9.0.2').  The return value is the
bd131addb9 2007-10-12       aku: 	# branch number (for example, '2.9.2').  For trunk revisions,
bd131addb9 2007-10-12       aku: 	# like '3.4', we return the empty string.
bd131addb9 2007-10-12       aku: 
bd131addb9 2007-10-12       aku: 	if {[$type istrunkrevnr $revnr]} {
bd131addb9 2007-10-12       aku: 	    return ""
bd131addb9 2007-10-12       aku: 	}
bd131addb9 2007-10-12       aku: 	return [join [lrange [split $revnr .] 0 end-1] .]
bd131addb9 2007-10-12       aku:     }
bd131addb9 2007-10-12       aku: 
bd131addb9 2007-10-12       aku:     typemethod isbranchrevnr {revnr _ bv} {
bd131addb9 2007-10-12       aku: 	if {[regexp $mybranchpattern $revnr -> head tail]} {
bd131addb9 2007-10-12       aku: 	    upvar 1 $bv branchnr
da9295c6f6 2007-10-12       aku: 	    set branchnr ${head}$tail
bd131addb9 2007-10-12       aku: 	    return 1
bd131addb9 2007-10-12       aku: 	}
bd131addb9 2007-10-12       aku: 	return 0
bd131addb9 2007-10-12       aku:     }
bd131addb9 2007-10-12       aku: 
bd131addb9 2007-10-12       aku:     # # ## ### ##### ######## #############
84de38d73f 2007-10-10       aku:     ## State
bd131addb9 2007-10-12       aku: 
bd131addb9 2007-10-12       aku:     typevariable mybranchpattern {^((?:\d+\.\d+\.)+)(?:0\.)?(\d+)$}
bd131addb9 2007-10-12       aku:     # First a nonzero even number of digit groups with trailing dot
bd131addb9 2007-10-12       aku:     # CVS then sticks an extra 0 in here; RCS does not.
bd131addb9 2007-10-12       aku:     # And the last digit group.
bd131addb9 2007-10-12       aku: 
da9295c6f6 2007-10-12       aku:     variable myrevnr     {} ; # Revision number of the revision.
da9295c6f6 2007-10-12       aku:     variable mydate      {} ; # Timestamp of the revision, seconds since epoch
da9295c6f6 2007-10-12       aku:     variable mystate     {} ; # State of the revision.
da9295c6f6 2007-10-12       aku:     variable myfile      {} ; # Ref to the file object the revision belongs to.
da9295c6f6 2007-10-12       aku:     variable myhascm     0  ; # Bool flag, set when the commit msg was set.
da9295c6f6 2007-10-12       aku:     variable mytext      {} ; # Range of the (delta) text for this revision in the file.
da9295c6f6 2007-10-12       aku: 
da9295c6f6 2007-10-12       aku:     # The meta data block used later to group revisions into changesets.
da9295c6f6 2007-10-12       aku:     # The project name factors into this as well, but is not stored
da9295c6f6 2007-10-12       aku:     # here. The name is acessible via myfile's project.
da9295c6f6 2007-10-12       aku: 
da9295c6f6 2007-10-12       aku:     variable myauthor    {} ; # Name of the user who committed the revision.
da9295c6f6 2007-10-12       aku:     variable mycommitmsg {} ; # The message entered as part of the commit.
da9295c6f6 2007-10-12       aku:     variable mybranchnr  {} ; # The number of the branch the commit was done on.
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku:     # # ## ### ##### ######## #############
84de38d73f 2007-10-10       aku:     ## Internal methods
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku:     # # ## ### ##### ######## #############
84de38d73f 2007-10-10       aku:     ## Configuration
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku:     pragma -hastypeinfo    no  ; # no type introspection
84de38d73f 2007-10-10       aku:     pragma -hasinfo        no  ; # no object introspection
84de38d73f 2007-10-10       aku:     pragma -simpledispatch yes ; # simple fast dispatch
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku:     # # ## ### ##### ######## #############
84de38d73f 2007-10-10       aku: }
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku: namespace eval ::vc::fossil::import::cvs::file {
84de38d73f 2007-10-10       aku:     namespace export rev
84de38d73f 2007-10-10       aku: }
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku: # # ## ### ##### ######## ############# #####################
84de38d73f 2007-10-10       aku: ## Ready
84de38d73f 2007-10-10       aku: 
84de38d73f 2007-10-10       aku: package provide vc::fossil::import::cvs::file::rev 1.0
84de38d73f 2007-10-10       aku: return