Changes

Jump to: navigation, search

GEPS 038: Enhanced Transaction Log

911 bytes added, 22:19, 23 August 2015
References
* the database is deleted on family tree closing
* the undo/redo system is cleared when an import is performed
 
UI of current stack:
 
[[Image:undoredo-before.png]]
The system can be easily adapted so that:
* the database is NOT deletedon closing
* the stored data can be loaded back into the undo/redo system
However, the current database only stores the lowest Gramps undo info, and doesn't store:
1. # the transaction comment message2. # what set of undo records go together as a batch3. # the time stamp
A patch is attached for BSDDB-based databases that allows a persistent undo/redo, except that:
1. # a transaction comment is generated "Undo #N"2. # all batch commits are now single entries3. # time stamp is given the current time
Here is the patch for master:
[[MediaFile:persistent-undo.patch.txtzip]]
The system could easily be adapted for complete persistent undo functionality if the comment, batch set, and time stamp were also stored in the database.
 
[[Image:undoredo-after.png]]
== Limitations ==
1. # Undo/Redo is a "stack"; things undone are lost if new things are done2. # All is lost if anything is imported into this tree3. # Undo's must be done sequentially; you can't cherry-pick one change---you have to do them all (this ensures consistency, but is often not necessary for BSDDB (say, if you are just changing a field, such as name)). Other backends may need this consistency, even in a field change.
Also:
4. # Undo/Redo is a BSDDB database; if you can't open other databases (say, due to internal file change), then you might not be able to open this. Each pickled old/new row could be a single text file.5. # With patch, database keeps growing. UI could get overwhelmed with a long-edited file6. # UI doesn't show any details (eg diff of old/new) of proposed undo/redo7. # No user entered message (like a git commit message) == Considerations == # What happens if the Gramps data format changes at some point? JSON format may help to mitigate some changes. == Possible Enhancements == # 'a routine which restores a .gramps file and applies log file. This would bring a tree up to "current".' (RonJohn)# store in human-readable, non-binary format (RonJohn)## storage could be XML or JSON# database backend agnostic# persistent# should work even after an import (copy of imported file could be put into directory and time-stamped)# better UI to show diff, or at least summary of commit (eg, the following records were added: I0001, I0002, ...)# individual changes could be cherry-picked, perhaps, with checks# allow user comment, eg commit message
==References==
 
# {{bug|8853}}: Human-readable database transaction log
# [[File:persistent-undo.patch.zip]]
[[Category:GEPS|G]]
[[Category:Developers/Design]]

Navigation menu