I needed versioning for my Wiki. The older versions of each WikiPage are stored in a separate database. The version number of the WikiPage is updated each time the page is saved.
In the following routine, 'OVERFLOW_DB' is a constant with the path of the database to store all the versions. After copying all the items from the original document, I've added two fields containing the original database path and the original UniqueId of the document. After saving the version document, the version number of the original is updated.
Sub makeVersion(doc As notesdocument)
On Error Goto catch
Dim s As New notessession
Dim db As NotesDatabase
Dim newDoc As NotesDocument
Set db=s.GetDatabase("", OVERFLOW_DB)
newDoc.ReplaceItemValue "OrigDb", doc.ParentDatabase.FilePath
newDoc.ReplaceItemValue "OrigUnid", doc.UniversalID
newDoc.Save True, False, True
doc.ReplaceItemValue "version", doc.version(0)+1
Print "Error " & Err & " in line " & Erl & ": " & Error$
This was really straightforward, but storing the versions is only one part of the story. Next: displaying the history.