Sϵv϶n Price: US $4.99

Transparent Version Control System Support

The Problem

Using a typical RTFD editor to edit a document under the management of a version control system (VCS), such as Subversion (svn) or Git, usually does not go well. For example, editing the simple document under Subversion 1.6 management:

Before: After:

And then attempting to commit may fail:

dal$ svn commit -m "Not using Sϵvϵn"
svn: Commit failed (details follow):
svn: Directory '…/svn demo.rtfd/.svn' containing working copy
admin area is missing

The VCS has been broken. The update command provides a clue to the problem:

dal$ svn update
svn: Failed to add directory 'svn demo.rtfd': an unversioned
directory of the same name already exists

“Unversioned directory” – the RTFD editor has removed the original document and replaced it with a different one which is not under version control. Bad.

The Solution

Just use Sϵv϶n to do the edit and then attempt the commit:

dal$ svn commit -m "Using Sϵvϵn"
Deleting       svn demo.rtfd/France.png
Adding  (bin)  svn demo.rtfd/Germany.png
Sending        svn demo.rtfd/TXT.rtf

It just works!

Sϵv϶n automatically supports Subversion (svn), both new-model versions 1.7+ and the old-model 1.6, and Git. Sϵv϶n will interface automatically behind-the-scenes with these VCS systems keeping them up-to-date as files are edited.

What Sϵv϶n Does Not Do

Sϵv϶n automatically tracks the changes within package-format documents, such as RTFD, and communicates those changes to the VCS. It does not commit documents, it just ensures that commit operations will work as they should. Commit, and other VCS operations, must be performed using the same tools as before.

For example, an Xcode user can use Sϵv϶n to edit RTFD documents in a project but will still use Xcode’s VCS tools to perform project commits. Without Sϵv϶n those tools would not function as expected.

macOS Versions Support

Sϵv϶n also handles macOS Versions and its interaction with VCS.

Using macOS Versions; through the Revert To... menu item, window title bar menu, etc.; enables the current copy of a document to replaced by an older version, moving “backwards”.

VCS such as Subversion always moves “forward” when making revisions, ensuring that VCS works correctly when macOS Versions is used is a challenge. Sϵv϶n handles the task automatically.

When macOS Versions is used to restore an older version of a file under VCS then Sϵv϶n will automatically preserve any VCS admin data and register the changes with the VCS as forward modifications to the current working copy.

Furthermore if either the pre or post Versions document are not under VCS then Sϵv϶n automatically manages the transition. For example, if a document is created and a number of Versions are created before the document is placed under VCS, then once under VCS using Versions to restore a pre-VCS copy brings that copy under VCS as a change to the cunrrent working copy…

Sounds complicated? Don’t worry.

It just works!

Handling Multiple VCS Installations

Sϵv϶n will locate VCS system installed in standard locations, including those installed by Xcode – automatically handling VCS stubs intorduced by Xcode 5. If multiple copies of a VCS are installed then Sϵv϶n will request which version it should use – the choice can be changed at anytime through Preferences...

If Sϵv϶n finds an installation, cannot access it, and the user selects it then the user is asked to grant permission via a standard dialog.

Help! Where’s My Subversion?

Despite all the above with changes to macOS, and with Xcode ceasing to include it, locating an accessible installation of Subversion has become harder and currently even impossible on some systems despite Subversion being accessible from the Terminal… 😞

To address this with the release of version 2.3 Sϵv϶n now includes its own embedded Subversion client for macOS 10.13 onwards. This is a universal client supporting both Apple Silicon and Intel systems. The universal client in Sϵv϶n v2.3 is Subversion 1.14.1, and is built on top of the work of Homebrew.

If you are now thinking “great, a universal Subversion client I can use” we are sorry to disappoint. The processes of embedding an application into a sandboxed Mac App Store application makes the application uncallable from the command line – you can try to call the embedded client but it will just abort, we have no solution to this 😞

Miscellaneous

Sϵv϶n also performs management of the internals of RTFD documents to make them easier to use with VCS. Using manual VCS commands with Sϵv϶n produced RTFD documents is easier.