Automated snapshots with git
flashbake [options] <project_dir> [quiet_min]
flashbake is a tool which watches files and automatically checks them in to a git repository. The commit lines can be customised. It is meant to be run from a cron job (see crontab(5) ). Thus it simplifies life for user by taking off the burden of manually committing changes and allowing one to focus on the work.
quiet_min is a parameter to flashbake which tells it to only commit changes to files in the project that have not been changed in the last quiet_min minutes. Setting this to 0 or omitting this disables the quiet period and flashbake immediately commits all changes when run.
One of the nice features of flashbake is its generation of automatic commit messages using its plugin system. flashbake's plugins can pull in data from various sources including your microblogging feeds, uptime, weather etc. and use that to generate the commit message.
If you are new to flashbake, check out the CONFIGURATION and USAGE sections below for more information; you can also check the wiki (address given in SEE ALSO).
flashbake follows the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For a complete description, see the online documentation.
--version
show version number and exit
-h, --help
show summary of options.
-c, --context
just generate and show the commit message, don't check for changes.
-v, --verbose
include debug information in the output, useful for reporting problems.
-q, --quiet
disable all output except errors
-d, --dryrun
do not change anything, just show what flashbake would do if executed without the -d option (dry run).
-p PLUGIN_DIR, --plugins=PLUGIN_DIR
specify an additional location for plugins
-r, --purge
purge any files that have been deleted from source control
flashbake is quite easy to setup and does not require knowledge of git internals. As flashbake requires a git repository, you must create a git repository for the folder you wish to track by cd'ing into the folder and typing git init (if you have not done so already).
flashbake configuration is done through a .flashbake file in the project directory. Global options for flashbake can be specified in ~/.flashbake/config where ~ refers to the home directory (like /home/joe on Linux or /Users/joe on Mac OS X). If the ~/.flashbake/config file is present then it will get read first, followed by the project specific version.
flashbake tracks changes to only specific files which it terms as hot files. You have to specify these hot file names in the .flashbake file which should be created in the project directory. Wildcards which are used in the shell can be used, like ? for matching a single character, * for matching any number of characters and [] for ranges of characters ([0-9] would match a single digit from 0 to 9 in a filename).
Here follows an example .flashbake file (taken from the wiki), with explanatory comments.
# this enables the feed plugin plugins:flashbake.plugins.feed:Feed # these three lines are used by the feed plugin, see the Plugins page for # more info feed_url:http://www.mysite.com/feed # author is optional feed_author:Joe Random # limit is optional, defaults to 5 if unused feed_limit:3 # this line is optional, omit it to disable email notice_to:[email protected] # alternately, if you set up an ssh tunnel, you can set this and send # through # the tunnel #smtp_port:5002 # hot files todo.txt my_novel.txt extra/character_notes.txt extra/story_bible.txt
Any line beginning with # is a comment, of course. The notice_to: specifies an email address to mail when flashbake encounters some problems with a hot file. This functionality is not mandatory and you can comment notice_to: out to disable it.
This section shows some typical usage patterns of flashbake.
If you run
flashbake -c ~/my_novel
flashbake will not commit any changes, rather it will show you the commit message it would generate if run normally. This is useful for checking that you’ve entered the options in the control file correctly and checking the commit message content.
Running
flashbake -d ~/my_novel
would make flashbake do a dry run, and it will do everything except actually updating the repository.
One of the most common ways to run flashbake is to run it under cron for example, putting this in your crontab(5)
*/15 * * * * flashbake ~/my_novel 5 > /dev/null
would make flashbake run every fifteen minutes, checking in changes to the hot files in the ~/my_novel directory which have not been changed in the last five minutes.
The bug tracker is at http://github.com/commandline/flashbake/issues. If you are experiencing problems, try out a newer version first, if available.
A more extensive documentation for flashbake can be found at its wiki site at: http://wiki.github.com/commandline/flashbake/.
A list of available plugins with the accompanying documentation can be found at: http://wiki.github.com/commandline/flashbake/plugins
Written by Thomas Gideon.
This manual page was written by Abhishek Dasgupta <[email protected]>, for the Debian project (but may be used by others).