Releases: mutagen-io/mutagen
v0.6.0
NOTE: Versions of Mutagen prior to v0.8.0-beta1
are affected by a known security issue and not recommended for use.
NOTE: This is a beta release. It may 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 release includes the following changes from the v0.5.x
series:
- Added additional dynamic status information in
create
,pause
,resume
, andterminate
commands - Added support for automatically restarting the
mutagen
command insidewinpty
if a mintty console environment is detected - Made housekeeping occur at regular 24 hour intervals in the daemon and agent
- Made invalid character detection during transitions a bit more efficient on Windows
- Fixed a minor issue with ignore caching
- Added a minor optimization to reduce staging metadata overhead
- Refactored and renamed daemon gRPC services
- Filled in all missing docstrings for exported code
v0.5.2
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).
NOTE: Mutagen v0.3.x
and later breaks compatibility with sessions created by Mutagen v0.2.x
and earlier. Please delete ~/.mutagen
and recreate sessions after upgrading from v0.2.x
or earlier. This breakage is in the name of future extensibility and saner behavior. It should hopefully be the last set of breaking changes.
This release includes the following changes:
v0.5.1
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).
NOTE: Mutagen v0.3.x
and later breaks compatibility with sessions created by Mutagen v0.2.x
and earlier. Please delete ~/.mutagen
and recreate sessions after upgrading from v0.2.x
or earlier. This breakage is in the name of future extensibility and saner behavior. It should hopefully be the last set of breaking changes.
This release includes the following changes:
- Fixed a path-handling corner case that arose in Windows/POSIX synchronization in rare cases (cca818e)
v0.5.0
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).
NOTE: Mutagen v0.3.x
and later breaks compatibility with sessions created by Mutagen v0.2.x
and earlier. Please delete ~/.mutagen
and recreate sessions after upgrading from v0.2.x
or earlier. This breakage is in the name of future extensibility and saner behavior. It should hopefully be the last set of breaking changes.
This release includes the following changes:
- Switched polling and scanning to use
FindNextFileW
on Windows, which should give around 5x improvement for Windows scans (d5d138f, 92c57c0) - Made endpoint scans concurrent (c31dd25)
- Modified scan caches to be saved asynchronously (6d6743f)
- Made change application concurrent (d4f2a19)
- Added rename and copy detection to avoid file transfers if possible (39311af)
- Optimized device ID queries in scans (c046e9f)
- Updated Protocol Buffers to fix an issue with quadratic behavior in serialization (golang/protobuf#641), making snapshot and cache serialization significantly faster (c8fb749)
- Added an ignore cache for scans so that ignores don't need to be recomputed on each scan (which can make a big difference if you use a lot of ignore specifications) (5bd6506)
- Added an optimized path concatenation method (bef1a6f, 3f638d1)
- Reduced latencies in filesystem watching (f0ee27d)
- Implemented a hybrid watching mechanisms for inotify systems (bf55f49)
- Modified FSEvents watcher to avoid watch recreations on file roots (cee0f64)
v0.4.1
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).
NOTE: Mutagen v0.3.x
and later breaks compatibility with sessions created by Mutagen v0.2.x
and earlier. Please delete ~/.mutagen
and recreate sessions after upgrading from v0.2.x
or earlier. This breakage is in the name of future extensibility and saner behavior. It should hopefully be the last set of breaking changes.
This release includes the following changes:
- Switched filesystem watching library to lower-level, platform-specific libraries more aligned with Mutagen's needs.
- Added a safety check that requires confirmation on synchronization root type changes.
- Made ignore printing more consistent in long-listing mode.
v0.4.0
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).
NOTE: Mutagen v0.3.x
and later breaks compatibility with sessions created by Mutagen v0.2.x
and earlier. Please delete ~/.mutagen
and recreate sessions after upgrading from v0.2.x
or earlier. This breakage is in the name of future extensibility and saner behavior. It should hopefully be the last set of breaking changes.
This is a minor release, with one major improvement:
- Filesystem watching on systems with native recursive watching support is vastly improved and no longer restricted to subpaths of the home directory. There is one minor Windows caveat due to rjeczalik/notify#148, but as soon as that issue is fixed, this caveat will disappear.
v0.3.1
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).
NOTE: The v0.3.x
series breaks compatibility with sessions created by Mutagen v0.1.x
or v0.2.x
. Please delete ~/.mutagen
and recreate sessions after upgrading. This breakage is in the name of future extensibility and saner behavior. It should hopefully be the last set of breaking changes.
This is a bug fix release, fixing the following issues:
- FSEvents-based watching did not detect changes to file permissions (#31).
v0.3.0
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).
NOTE: This is a breaking release and will not function with sessions created by Mutagen v0.1.x
or v0.2.x
. Please delete ~/.mutagen
and recreate sessions after upgrading. This breakage is in the name of future extensibility and saner behavior. It should hopefully be the last set of breaking changes.
This is an important release that brings significant improvements to performance and user experience. It also squashes a few irritating bugs.
- Ignore behavior has been modified to be more consistent with Git. This means that ignores can now be suffixed with a
/
to only match directories, prefixed with a/
to enforce matching relative to the synchronization root, and any ignore specifications without a/
prefix or/
in the middle will be tested against the leaf name being encountered. - Ignore modes for VCS directories have been added.
- Symlink support has been completely refactored. There are now three symlink propagation modes: Ignore, Portable (the default), and POSIX Raw. Ignore mode is supported on all platforms and simply ignores all symlinks. Portable mode is supported on all platforms and will only propagate portable symlink paths that don't escape the synchronization root. POSIX Raw mode is only supported on POSIX-to-POSIX synchronization sessions and transmits raw symlink targets, regardless of whether or not they point inside the synchronization root or contain charaters unsupported on Windows (similar to the previous behavior).
- The
list
,monitor
,pause
,resume
, andterminate
commands now support fuzzy sesssion matching. Sessions can still be specified by ID, but they can also be referenced by a fragment of the path or hostname in either URL, so long as it is unambiguous (and over 5 characters). This means you can do things likemutagen pause my_project
. - An optional configuration file (
~/.mutagen.toml
) has been added, with support for configuring the default symlink mode, ignore specifications, and filesystem watching behavior. - Experimental automatic daemon start-up has been added for macOS and Windows.
- Command line parsing has switched to Cobra, allowing for better help messagess, simpler code, and more extensibility.
- Several flags and commands have been restructured to be more consistent.
- A visual delimiter has been added to session listing.
- Synchronization now creates synchronization root parent paths as necessary.
- The daemon now uses gRPC for providing functionality to commands. This will allow third-party application integration in the future.
- The agent install has been decomposed to support shells without
&&
command chaining (#26). This also provided an opportunity to make the installation a bit more efficient by avoiding unnecessarychmod
invocations. - Automatic
ControlMaster
behavior has been removed. This caused a number of issues (e.g. #25) that had no workaround. Allowing users to control this with their SSH configuration is a better default. - Atomic file renames have been fixed on Windows (#28).
- Ownership is now preserved on POSIX systems.
- SSH locale variables have been added to better enforce encoding compatibility.
- Various issues associated with Windows SSH servers have been fixed.
- Mutagen now uses internal FLATE compression for agent streams (as opposed to relying on that provided by SSH).
- Small fixes have been added for case conflict detection.
- Test coverage has been significantly improved.
- The build has been updated to Go 1.10.3.
- Many other minor bug fixes and performance improvements are also present.
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 intuitively and seamlessly for you, then there's a bug.
v0.2.0
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
(or0700
) when propagating changes to them, but now the existing permissions will be preserved (modulo executability bit changes) and only new files will have0600
/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.
v0.1.1
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 an early beta release. It has definitely has known issues and most likely has unknown issues. Do not use it on production or mission-critical systems (and don't use those systems as remotes). Use on any system is at your own risk (please see the license).
This release brings a few significant updates/fixes:
- Fixes a bug where staged files couldn't be relocated across filesystem boundaries (#14 and #15)
- Updates code to use Go 1.8 features
- Switches builders to use Go 1.8
- Adds 32-bit MIPS support (big-endian and little-endian)
Thank you to everyone who helped with debugging these issues!