GnuCash  2.6.99
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Backup Design

API: Backend

Currently, backups and log files are automatically stored by the engine with date/time stamps every time the user hits 'save' in the gui.

(The actual file writing is done by xaccWriteAccountGroupFile() in in src/engine/FileIOP.h)

Proposed design changes:

  1. Allow user to configure which directory backups should be put into. (currently, this is same as current directory). Requires changes to engine FileIOP.h as well as GUI.
    One possible default is ~/.gnucash/data/ (Which is supposed to be the place where files are saved if no directory is specified.!?)
  2. Prompt the user to make a backup every third save. Make this number configurable. If no default backup path set, prompt to set it, with suggested path being ~/.gnucash/backups/
  3. If save format was XML text, then could use RCS ... Alternately, For those that don't know, xdelta is like RCS, but it's designed to handle any kind of data, including binary, is supposed to work really well, and transparently handles gzipped data with some form of MD5sum verification. It's also available in library form. Like RCS it would give us the ability to do cool things like snapshot the data every so often for nearly no cost. Want to see what things looked like 6 months ago? Just enter the right date into the "time-warp" dialog :>
    For those on Debian systems, just install the xdelta and libxdelta2-dev packages. Others can get the source from ftp://www.xcf.berkeley.edu/pub/xdelta/, or just go to ftp.debian.org:/pub/debian/dists/unstable/main/source/utils/xdelta*.tar.gz
  4. Could monitor how many changes (records altered) the user has made, and could prompt for more frequent saves if lots of editing has ocurred...