1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335
|
15/06/2010 - minor fix - version 1.0.0
* smd-applet:
- recognize mailto: actions so that a nice label is used
istead of the raw command that comprises subject and body
- ported to vala 0.9.1, use .connect instead of deprecated +=
* smd-client, syncmaildir.lua:
- generate as suggested action for internal errors:
gnome-open "mailto:...."
* smd-server:
- do not es.execute(touch), use io.open instead
* syncmaildir.lua:
- place fifo for mddiff in HOME/.smd/fifo/ if HOME is set, /tmp
otherwise
- added upperbound to loop generating a fresh name for the fifo
* sample-hooks/persistent-ssh:
- set +e so that if ssh fails smd-pull/push does not fail too and
generates proper tags
* Makefile:
- fixed upload target, used to overwrite the tarball with the
changelog
- substitute SMDVERSION, MKFIFO and MKDIR when installing scripts
- new test/SUITE target to run only one testsuite
* README:
- added notes about the first synchronization
* DESIGN:
- better doc for mddiff
* tests.d/:
- new tests for hooks logging
- new test for fifo creation (syncmaildir.lua function sha_file)
- allow disabling valgrind by exporting the VALGRIND variable
* Makefile, smd-common, syncmaildir.lua:
- remove all explicit mentions of my username on sourceforge
or my home directory layout
12/04/2010 - minor fix/speedup release - version 0.9.16 aka 1.0~rc5
* smd-client:
- fixed a little bug preventing copybody to work properly
if the target directory was not existing
* syncmaildir.lua, smd-client:
- call mddiff passing a pipe, and use the very same instance
every time the sha1 of a file needs to be computed. This improves
performances considerably when a large number of files needs to
be hashed, for example when two very similar mailboxes are
synced for the first time (here, 8x speedup)
- implement cp in lua to avoid spawning a new process every
time a file is copied/moved. The overhead, for small files,
is too high and the pure lua implementation of cp is 10 times
faster on small files (but could be way slower for big ones).
* mddiff:
- interface change: only a list of directories or a fifo can
be passed as arguments
- in case the fifo is passed, mddiff reads file names separated
by \n and outputs their sha1 sums
* smd-pull, smd-push:
- report an error if a wrong flag is supplied
23/03/2010 - minor fix release - version 0.9.15 aka 1.0~rc4
* smd-applet:
- the icon used to stay set to warning even after a successful
synchronization
* smd-client, smd-server, syncmaildir:
- never use the lua error() function, all errors should generate
a meaningful tag, only internal errors raise error and thus
are tagged as internal-error by the parachute that also prints
a backtrace
- always use log_tags_and_fail, that calls error but with
the exception {text=....} that is recognized by the parachute
so that no backtrace is printed
- parse mddiff opcodes with a function that is robust in
face of malformed arguments
* tests.d/:
- new test for database mismatch (indirectly testing correct
exception handling) and for malformed mddiff opcodes arguments
* sample-hooks:
- persistent-ssh: exploiting ssh connection sharing capability.
This allows to save a little amount of time every synchronization.
A single secure connection can be established once, at the very
beginning, and then reused for evry subsequent synchronization.
- documentation for hooks in markdown format generating hooks.html
12/03/2010 - major feature relase - version 0.9.14 aka too many changes to be rc
* syncmaildir.lua:
- mkdir_p creates always a maildir, if the last path component
is in { "new", "tmp", "cur" } (used to do that only if it was
"tmp".
* smd-common:
- major refactoring, almost all code is inside functions
- new function run_hooks
* smd-pull, smd-push:
- adapt to the new smd-common interface: call by hand init
functions instead of having them executed by side effect of
sourcing smd-common
* hooks support in smd-push and smd-pull:
- executables contained in the .smd/hooks/{pre,post}-{pull,push}.d/
directories are executed pre/post the pull/push process.
- hooks receive as argument:
- when: pre/post
- what: push/pull
- endpoint: the endpoint name (usually default)
- status: the current status, 0 for OK, 1 for error. pre-hooks
always receive 0, post hooks receive the value smd-push/pull
will return after hooks terminate
- thanks to Bart Trojanowsk for the hooks idea
* sample-hooks/:
- new directory with sample hooks, for now just a simple
mail-on-failure hook
* tests.d/:
- major redesign of the test framework, allowing multiple
test suites
- new test suite for smd-pull/push
- new test suite for mddiff
* smd-push/pull smd-client/server mddiff:
- support -d --dry-run (i.e. perform no action)
* manpages for mddiff, smd-client, smd-server, smd-pull, smd-push:
- added -d --dry-run doc
- mention hooks
* copyright:
- updated years in all files: 2008-2010
- added copyright banner where missing
* git archive:
- use git archive for the make dist target
* README:
- mention --dry-run
- document hooks
02/03/2010 - major fix release - version 0.9.13
* smd-server mddiff:
- big fat bug solved: the .mtime file was always updated.
the .mtime file used to be updated even if the synchronization
failed. This could have caused some changes (like in place eader
modifications, but not like new messages or renamings/flagging) to
be ignored in the following synchronization. Now .mtime works
exactly as .db.txt, a .new one is created by mddiff, and is up to
smd-server to rename both.
* mddiff.1.txt:
- fixed typo
27/12/2009 - minor fix release - version 0.9.12 aka 1.0rc3
* DESIGN:
- mention the ERROR action that mddiff can now emit
* smd-client:
- understand the ERROR action
* mddiff.c:
- use only EXIT_SUCCESS and EXIT_FAILURE as exit codes
- ERROR macro calls exit(EXIT_FAILURE) end emits the
ERROR action
- new macro WARNING, used for what used to be non
fatal errors
- improved argument check: stat is done in advance, and
we bail out if they are not omogeneous
* syncmaildir.lua:
- handshake function emits 'network' as probable failure
cause. Used to emit 'network-error', cheating smd-applet
* smd-client, smd-server, smd-common:
- check for the existence of external helper programs
to fail early if it is not the case
* smd-client, smd-server, syncmaildir.lua:
- more comments in the code and better organization
- littler refactoring for mkdir_p and tmp_for
- added function to check for the existence of an
external program using shell type command
* Makefile:
- added abspath/* template to install the software hardcoding
absolute paths for helper programs
* README, DESIGN:
- fixed indentation so that markdown displays all
blockquotes as such (kudos to Zack).
13/11/2009 - minor fix release - version 0.9.11 aka 1.0rc2
* smd-loop:
- save pid in lockfile so that lockfile referring
to dead instances can be ignored
- on receiving SIGTERM, do the cleanup and exit
- write log file ~/.smd/log/loop.log
* smd-push/pull:
- save pid in lockfile so that lockfile referring
to dead instances can be ignored
- print a tagged error message in case an instance is
already running
* smd-appled:
- ported to vala 0.7.8
- accept error messages from smd-pushpull (that is used
by both smd-push and smd-pull as the tool identifier)
- added pause checkbox menu item to pause smd-loop (actually
kill and restart)
- menu for left and right mouse button differ:
- right has preferences, about and quit
- left has pause and logs
- unrecoverable but non-network related errors are not silently
hidden, a popup shows their possible cause but the application
does not enter error handling mode
3/10/2009 - minor fix release - version 0.9.10
* smd-loop:
- fixed a bug regarding the lock file name, that was clashing
with the one of smd-push/pull
* smd-push/pull:
- print the date in the log, not on stdout
27/9/2009 - minor fix release - version 0.9.9 aka 1.0rc1
* mddiff:
- --help and manpage improved
- compile with -O2, why not?
- add strict compile time dependency over glib >= 2.19.1,
that fixes a bug concerning the checksum of data with
length < 2
* smd-push/pull:
- when -v is passed also print the date
* smd-applet:
- less noise when a network error occurrs, just notify the user
once and change the icon
- added manpage
- added view log menu item and relative window
- made vala 0.7.6 clean
* smd-loop:
- lockfile to not run two instances concurrently
* Makefile:
- sourceforge paths made variable, easier to change and more
readable Makefile
- added support for @variable@ substitution in installation
phse for SED, SHA1SUM, XDELTA, CPN, SSH, LUA and PREFIX
- added template for osx: make osx/FOO will make target FOO
with some variables customized for osx
* README:
- added some notes about installation from sources
16/8/2009 - minor fix release
* mddiff, smd-client:
- REPLACE command implemented
- tests added
* smd-applet:
- fixed a minor issue with Vala 0.7.5, GLib.Pid is not an int
anymore
- fixed a major issue with threading, all code regarding gtk is
now run by the main thread
- fixed a major issue with memory management, from List to
Gee.ArrayList, that have non-week references and thus prevent
their data from being collected
26/7/2009 - minor bugfix release
* smd-applet:
- when quit was clicked, it was killing every process in
its process group, not in the one of its child smd-loop,
thus it was killing all other applets started by gnome-applet
- configuration window is not pupped up if no config files are
found, an error icon and a notification are used instead, and
the software wants the configuration files to be available before
it actually does something.
26/7/2009 - major feature release
* smd-applet, eye-candy applet for smd-loop:
- attaches to the notification area
- stores its configuration using GConf
- notifies the user using libnotify
- runs smd-loop, interpreting its output
- shows the user possible errors and allows him to
perform suggested actions by clicking on buttons
- complains if smd-loop or smd-push/pull is not configured and
forces the user to configure it before starting
- automatically run by gnome-session (/etc/xdg/autostart)
- shows an item in gnome-control-center
* smd-loop, cron like push/pull iterator:
- use a line based configuration file ~/.smd/loop in the style
of cron, calling smd-push/pull with 1 minute granularity
- catches some transient errors giving them a second chance;
i.e. if the suggested solution is retry, it does so but only
once
* error report:
- smd-client and smd-server output tags describing the
error that caused a sync failure:
- context: which part of the software failed, like ssh,
message-deletion, copy-message, ...
- probable-cause: something like network, bad file permissions, ...
- human-intervention: avoidable or necessary
- suggested-actions: run( command ), display-mail, retry, ...
- smd-push/smd-pull catch early network errors, so that
some tags are output even if smd-client/smd-server is
not even run
* statistics:
- smd-client outputs tags describing its last run, comprising
the number of added/deleted messages, so that higher level tools
can notify the user or collect statistics
28/4/2009 - minor fix and minor feature release
* support for multiple servers/clients:
- config file is now ~/.smd/config.$FOO and smd-push/pull
can get an extra argument for FOO, defulat value of FOO is
`default`.
- backward-compatibility code added to automatically migrate
the old config file name to the new one
* cleanup in ~/.smd/:
- fifos are now in the fifo/ subdirectory
- logs are now in the log/ subdirectory
* bugfix to mddiff:
- COPYBODY action used to be always followed by an ADD action,
that was unnecessary (but not dangerous either).
* better error reporting:
- syncmaildir.lua improved to better report some errors
21/4/2009 - minor fix and minor feature release
* track only mailmessages (skip other stuff like dovecott indexes):
- scans only files in cur/ and new/
* add COPYBODY command to mddiff:
- mails that are moved around and then flagged by MUA
are not deteceted anymore as new messages, only the new header
is transmitted
- smd-client honors the command
* smd-client better reports network errors:
- if no data at all is readable from stdin, it means that
the transport (ssh) is not working and this is reported to
the user as such
19/4/2009 - major bugfix release
* major bugfix:
- the db file must be in sync too to grant all changes are detected
- the mtime has not to be the same on client and server (thus
has to be removed from the db file)
- adopt xdelta to calculate a patch for the db file (should be
better than diff and can scale to binary, compressed, db file)
* new client/server protocol:
- allows the server to ABORT
- handshake checking protocol version and dbfile hash
- at the end transmit and apply the xdelta patch
* db file format changed:
- no more mtime column
- added db.txt.mtime auxiliary file to stores a global timestamp
for the whole db
* minor bugfixes in the code (mostly better error reporting)
* more documentation
12/4/2009 - first public release
* end-user tools: smd-pull, smd-push
* stupid endpoint: smd-server
* endpoint implementing politics: smd-client
* low-level tool: mddiff
|