github mutagen-io/mutagen v0.2.0

latest releases: v0.16.3, v0.16.2, v0.16.1...
pre-release6 years ago

NOTE: Versions of Mutagen prior to v0.8.0-beta1 are affected by a known security issue and not recommended for use.

WARNING: This is a beta release. It will almost certainly have unknown issues. It should not be used on production or mission-critical systems. Use on any system is at your own risk (please see the license).

This is a major release that brings significant performance improvements and bug fixes:

  • Critical URL parsing bugs (correctness, not security) have been fixed.
  • Symlinks are now supported. This support is currently restricted to POSIX systems, but it is compatible with Windows and Windows symlink support may be possible in the future.
  • Symlink synchronization roots are no longer supported. Sorry about this. There's just no technically correct way to do this. See commit da66889 for more details. Existing sessions created with symlink roots won't break or delete any data, but they'll stop synchronizing.
  • Permissions are now preserved when updating existing files. In previous versions, files always had permissions set to 0600 (or 0700) when propagating changes to them, but now the existing permissions will be preserved (modulo executability bit changes) and only new files will have 0600/0700 applied to them.
  • The synchronization network protocol has been completely rewritten and vastly simplified. This will lay the groundwork for custom transports.
  • File staging has been made significantly more efficient.
  • The rsync implementation has been made significantly faster. Initial synchronization time is now about 1.4-1.5x that of a raw rsync transfer when testing on the Linux kernel source tree. About 50% of this disparity is due to algorithmic differences needed to support bidirectionality (something rsync doesn't need to worry about) and about 50% is due to Go language and Mutagen implementation inefficiencies. Expect this to improve even more!
  • File watching is now simpler and more robust.
  • Use of mutagen list -m has been replaced by a dedicated subcommand: mutagen monitor. It also no longer requires a session to be specified, simply displaying the most recently created session if none is specified.
  • A best-effort safety check has been implemented to prevent the deletion of a synchronization root on one side of the session from propagating to the other. This stops people from forgetting that synchronization is still active and wiping out files on both sides of the session by deleting one side. If deletion of one of the roots is detected, the session will halt and require the user to manually delete the other side before continuing synchronization with mutagen resume. It's worth reiterating that this detection is best-effort. It will catch 100% of root deletions for files, but with directories (where deletion follows a non-atomic depth-first traversal of files), there's a possibility that Mutagen will only see part of the file tree deleted and still propagate that. To avoid this, Mutagen aborts synchronization when it sees even a hint of concurrent modification and then waits a few seconds to retry, but it's still theoretically possible for concurrent modifications to go undetected. There's no silver-bullet here, but this should go a long way towards safety in the face of user error. Think of it as a seatbelt: most effective if you simply don't crash your car.
  • The build has been updated to Go 1.9.2. This allows Mutagen to take advantage of the async file I/O support present in Go 1.9.
  • Many other minor bug fixes and performance improvements.

Thank you to everyone who helped with reporting and debugging these issues! If you encounter any issues with the new release, please file an issue. If Mutagen isn't working seamlessly for you, it isn't working.

Don't miss a new mutagen release

NewReleases is sending notifications on new releases.