diff -uNr wikit.vfs/lib/wikit/db.tcl wikit-revs-1rsk.vfs/lib/wikit/db.tcl
--- wikit.vfs/lib/wikit/db.tcl	2007-04-10 06:44:06.000000000 -0500
+++ wikit-revs-1rsk.vfs/lib/wikit/db.tcl	2008-03-28 17:59:45.000000000 -0500
@@ -109,6 +109,10 @@
     
     mk::view layout $db.pages	{name page date:I who}
     mk::view layout $db.refs	{from:I to:I}
+    # Versioning attempt: <wiki@rkeene.org>
+    mk::view layout $db.revs    {id:I}
+    mk::view layout $db.history {name page date:I who}
+    # Versioning attempt (end)
     
     # if there are no references, probably it's the first time, so recalc
     if {!$readonly && [mk::view size $db.refs] == 0} {
@@ -147,6 +151,22 @@
   }
 
   proc GetTitle {id {db wdb}} {
+    # Versioning attempt: <wiki@rkeene.org>
+    if {[string match "*.*" $id]} {
+      set work [split $id .]
+      set id [lindex $work 0]
+      set rev [lindex $work 1]
+      set chk_id [mk::get $db.revs!$rev id]
+      if {$chk_id != $id} {
+        # XXX: What do we do here ?
+        return -code error "ID Mismatch for Revision $rev.  Expected \"$chk_id\", got \"$id\""
+      }
+
+      set title [mk::get $db.history!$rev name]
+      return $title
+    }
+    # Versioning attempt (end)
+
     set title [mk::get $db.pages!$id name]
     return $title
   }
@@ -155,7 +175,24 @@
     switch $id {
       2		{ SearchResults [SearchList] }
       4		{ RecentChanges $db}
-      default	{ return [mk::get $db.pages!$id page] }
+      default	{
+        # Versioning attempt: <wiki@rkeene.org>
+        if {[string match "*.*" $id]} {
+          set work [split $id .]
+          set id [lindex $work 0]
+          set rev [lindex $work 1]
+          set chk_id [mk::get $db.revs!$rev id]
+          if {$chk_id != $id} {
+            # XXX: What do we do here ?
+            return -code error "ID Mismatch for Revision $rev.  Expected \"$chk_id\", got \"$id\""
+          }
+
+          return [mk::get $db.history!$rev page]
+        }
+        # Versioning attempt (end)
+
+        return [mk::get $db.pages!$id page]
+      }
     }
   }
   
@@ -225,9 +262,19 @@
   # SavePageDB - store page $id ($who, $text, $newdate)
   proc SavePageDB {db id text who newName {newdate ""}} {
     set changed 0
-    
+
+    # Versioning attempt: <wiki@rkeene.org>
+    set id [lindex [split $id .] 0]
+    # Versioning attempt (end)
+
     pagevarsDB $db $id name page
 
+    # Versioning attempt: <wiki@rkeene.org>
+    set newRev [mk::view size $db.revs]
+    mk::set $db.history!$newRev page $text who $who date [clock seconds] name $newName
+    mk::set $db.revs!$newRev id $id
+    # Versioning attempt (end)
+    
     if {$newName != $name} {
       set changed 1
       
@@ -264,7 +311,7 @@
     }
     
     mk::set $db.pages!$id page $text who $who
-    
+
     if {$newdate == ""} {
       mk::set $db.pages!$id date [clock seconds]
       AddLogEntry $id $db
diff -uNr wikit.vfs/lib/wikit/web.tcl wikit-revs-1rsk.vfs/lib/wikit/web.tcl
--- wikit.vfs/lib/wikit/web.tcl	2007-04-10 06:44:06.000000000 -0500
+++ wikit-revs-1rsk.vfs/lib/wikit/web.tcl	2008-03-28 18:08:20.000000000 -0500
@@ -163,7 +163,7 @@
     set section ""
       # Updated 3Mar03, edit and references are now subdirs to allow
       # for site indexing. 
-      if {![regexp {^/(edit/|references/)?([0-9]+)(.*)$} $path x section N cmd] || $N >= [mk::view size wdb.pages]} {
+      if {![regexp {^/(revs/|edit/|references/)?([0-9\.]+)(.*)$} $path x section N cmd] || $N >= [mk::view size wdb.pages]} {
       set N 0
     
         # try to locate a page by name, using various search heuristics
@@ -205,10 +205,12 @@
       set searchLong [regexp {^(.*)\*$} $searchKey x searchKey]
       set query "?$query"
     }
-    
+
     pagevars $N name date who
     set origtag [list $date $who]
-    set refs [mk::select wdb.refs to $N]
+    # Versioning attempt: <wiki@rkeene.org>
+    set refs [mk::select wdb.refs to [lindex [split $N .] 0]]
+    # Versioning attempt (end)
     
     # added 2004-05-17 wru cookie identification
     catch {source $::env(WIKIT_WRU)}
@@ -319,7 +321,10 @@
       }
     }
     
+    # Versioning attempt: <wiki@rkeene.org>
     set Edit "Edit [Wiki - edit/$N@]"
+    set Revisions "[link - Revisions revs/[lindex [split $N .] 0]|]"
+    # Versioning attempt (end)
 
     if { $section eq "" } {
 	set Home "Go to [Wiki - 0]"
@@ -357,15 +362,22 @@
     if {[lsearch -exact $::ProtectedPages $N] >= 0} {
       set menu ""
     } elseif {$roflag >= 0 || $readonly} {
-      set menu "$updated[nl]"
+      set menu "$updated"
+      # Versioning attempt: <wiki@rkeene.org>
+      if { $section eq "" } {
+        append menu " [nbspace]-[nbspace] $Revisions"
+      }
+      append menu [nl]
+      # Versioning attempt (end)
     } else {
-      set menu "$updated [nbspace]-[nbspace] $Edit"
-      # 2004-05-29 add optional link to history
-      if {[info exists ::env(WIKIT_REVS)] && $::env(WIKIT_REVS) ne ""} {
-      append menu " [nbspace]-[nbspace]\
-        [link - Revisions $::env(WIKIT_REVS)/$N]"
+      # Versioning attempt: <wiki@rkeene.org>
+      set menu "$updated"
+      if { $section eq "" } {
+        append menu " [nbspace]-[nbspace] $Edit"
+        append menu " [nbspace]-[nbspace] $Revisions"
       }
       append menu [nl]
+      # Versioning attempt (end)
     }
     
     append menu "$Search$Changes$Refs$About$Home$Help"
@@ -380,7 +392,35 @@
     cgi_html {
 
       switch -- $cmd {
-
+        | {
+          # Versioning attempt: <wiki@rkeene.org>
+	  cgi_head {
+	    cgi_http_equiv Content-type "text/html; charset=utf-8"
+	    cgi_title "Revisions for $name"
+	    cgi_meta name=robots content=noindex,nofollow
+	    cgi_http_equiv Pragma no-cache
+	    cgi_http_equiv Expire "Mon, 04 Dec 1999 21:29:02 GMT"
+	    stylesheet
+	    if {$N != "2" && [info exists ::env(WIKIT_BASE)]} {
+	      cgi_base href=$::env(WIKIT_BASE)revs/
+	    }
+	  }
+	  
+          cgi_body bgcolor=#ffffff {
+            cgi_h2 "Revisions for [Wiki - ../$N]"
+            cgi_puts "Older versions of this page:[nl]"
+            set fakeRev 0
+            foreach rev [mk::select wdb.revs -exact id $N] {
+              set revEditDate [mk::get wdb.history!$rev date]
+              set revEditDate [clock format $revEditDate -gmt 1 -format {%e %b %Y, %R GMT}]
+              cgi_puts "[nbspace] [nbspace] Revision [link - $fakeRev ../$N.$rev.$fakeRev] on $revEditDate[nl]"
+              incr fakeRev
+            }
+          }
+	  hr noshade
+          cgi_puts "<p id='footer'>$menu</p>"
+          # Versioning attempt (end)
+        }
 	@ { # called to generate an edit page
 	  cgi_head {
 	    cgi_http_equiv Content-type "text/html; charset=utf-8"
@@ -437,6 +477,9 @@
 	}
 	      
 	! { # called to generate a page with references
+          # Versioning attempt: <wiki@rkeene.org>
+          set N [lindex [split $N .] 0]
+          # Versioning attempt (end)
 	  cgi_head {
 	    cgi_http_equiv Content-type "text/html; charset=utf-8"
 	    cgi_title "References to $name"
@@ -493,7 +536,17 @@
 	    foreach {C U} [Expand_HTML $C] break
 	    set noTitle [regsub {^<p>(<img src=".*?")>} $C \
 					[link - {\1 border=0>} $backRef] C]
-	    if {!$noTitle} { h2 $Title }
+	    if {!$noTitle} {
+              # Versioning attempt: <wiki@rkeene.org>
+              if {[string match "*.*" $N]} {
+                set work [split $N .]
+                set rev [lindex $work 2]
+                set HEAD [lindex $work 0]
+                append Title " revision $rev ([link - HEAD $HEAD])"
+              }
+              # Versioning attempt (end)
+              h2 $Title
+            }
 	
 	    if {$N == 2} {
 	      # thx Alistair Grant, see http://mini.net/tcl/9748
