2006-12-10 Steve Huntley <stephen.huntley@alum.mit.edu>
authorSteve Huntley <stephen.huntley@alum.mit.edu>
Sun, 10 Dec 2006 06:18:50 +0000 (06:18 +0000)
committerSteve Huntley <stephen.huntley@alum.mit.edu>
Sun, 10 Dec 2006 06:18:50 +0000 (06:18 +0000)
* library/template/versionvfs.tcl: when time attribute is set,
files created after set time are made invisible.

ChangeLog
library/template/fishvfs.tcl
library/template/versionvfs.tcl

index 633bd585238d2d7d59ecc6fbae26c41c8bb00834..f61dea445b49729f873996efcd46929d97996f46 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-10  Steve Huntley  <stephen.huntley@alum.mit.edu>
+
+       * library/template/versionvfs.tcl: when time attribute is set,
+       files created after set time are made invisible.
+
 2006-11-14  Jean-Claude Wippler  <jcw@equi4.com>
 
        * library/mkclvfs.tcl: removed, now part of the vlerq extension again
index fd10b7102a3f33c7d17513405cea14cf77acd9f9..4680bbe294e2e57cdd01af783cab0c091fac7d20 100644 (file)
@@ -476,7 +476,7 @@ proc FileTransport {filename} {
 
 
 }
-# end namespace ::vfs::template
+# end namespace ::vfs::template::fish
 
 
 # Each transport procedure has its own namespace and Transport proc.
index 6226581e8313303b80a29aaf34d28cb2bce03244..96512561238129c16f522b7254b2f9ca095a804d 100644 (file)
@@ -5,7 +5,7 @@ versionvfs.tcl --
 
 Written by Stephen Huntley (stephen.huntley@alum.mit.edu)
 License: Tcl license
-Version 1.02
+Version 1.03
 
 A versioning virtual filesystem.  Requires the template vfs in templatevfs.tcl.
 
@@ -150,7 +150,6 @@ proc file_attributes {file {attribute {}} args} {
        set latest [lindex [lindex [lsort [set allVersions [VersionsAll $path $relative]]] end] 0]
        set acquired [lindex [split [set fileName [VAcquireFile $path $root $relative]] \;] 1]
        if ![string first .&dir [file tail $fileName]] {::vfs::filesystem posixerror $::vfs::posix(ENOENT)}
-
 # process vfs-specific attributes:
        if {($relative == {}) && ([string map {-keep 1 -project 1 -time 1} $attribute] == 1)} {
                set attribute [string range $attribute 1 end]
@@ -171,11 +170,9 @@ proc file_attributes {file {attribute {}} args} {
                if {$args == {}} {return [file tail $fileName]}
                error "cannot set attribute \"-version_filename\" for file \"[file tail $relative]\": attribute is readonly"
        }
-
 # check if current version is latest, if not disallow edit:
        if {($args != {}) && ($acquired != {}) && ($latest != $acquired)} {::vfs::filesystem posixerror $::vfs::posix(EPERM)}
        set returnValue [eval file attributes \$fileName $attribute $args]
-
 # collect values for vfs-specific attributes:
        if {$attribute == {}} {
                append returnValue " [list -versions $allVersions]"
@@ -473,6 +470,12 @@ proc VAcquireFile {path root relative {actualpath {}}} {
                set projectLength [llength $tags]
                if {($projectLength > 1) && !$projectMember} {return [file join $path $relative]}
        }
+
+# if time tag value is before creation date of chosen version, make file invisible:
+       if {[info exists ::vfs::template::version::time($root)] && ([lindex [split $fileName \;] 1] > "$::vfs::template::version::time($root)000")} {
+               return [file join $path $relative]
+       }
+
        if ![string first .&dir [file tail $relative]] {
                set fileName [file join $path [file dirname $relative]]
                return [file normalize $fileName]