Cornerstone 4.2 is now available! Dark mode, full macOS 10.15 support, in-app license key management, and more. Release notes.

Support

Cornerstone Support and FAQ.

Documentation

Cornerstone

Cornerstone includes documentation in Apple Help Book format. Alternatively, you can also browse the documentation online.

Cornerstone documentation

Subversion

The official documentation provides a great introduction to Subversion for new users and system administrators alike.

Subversion documentation

License Recovery

Enter the email address you used when purchasing Cornerstone and we'll resend your license key.

Download the latest version of Cornerstone

Cornerstone 4.2

Compatible with Macs running macOS 10.11+.
Annual license required.

Download
End User License Agreement

Older versions of Cornerstone:

3.1

Compatible with Macs running macOS 10.11+.
Supports Subversion 1.7 and 1.9.
3.1 license required.

Download

2.7.18

Compatible with Intel Macs running OS X 10.7, 10.8, 10.9, 10.10 & macOS 10.11.
Supports Subversion 1.6, 1.7 & 1.8.
2.x license required.

Download

Email Support

If you don't find an answer in the FAQ then send us an email or choose Help > Request Support in Cornerstone.

FAQ

Frequently asked question and answers.

Upgrading to Cornerstone 4

Working Copy And Repository Migration

Mac App Store

Licenses

Installation

Connecting to a Repositories

Performance

Working with Externals

Troubleshooting

Working Copies

Any additional questions, please check out our License Agreement section or feel free to contact us.

Can I upgrade my existing Cornerstone license to Cornerstone 4?

If you purchased an annual Cornerstone license on or after January 15, 2018, Cornerstone 4 is a free upgrade.

Customers who purchased a previous version of Cornerstone through the store on assembla.com can purchase licenses for Cornerstone 4. New license keys will be issued to you. The new license keys include all future versions of Cornerstone at no extra charge (with valid annual subscription).


I purchased Cornerstone 3 recently. Can I upgrade for free?

If you purchased an annual Cornerstone license on or after January 15, 2018, Cornerstone 4 is a free upgrade.

Customers who purchased a previous version of Cornerstone through the store on assembla.com can purchase licenses for Cornerstone 4. New license keys will be issued to you. The new license keys include all future versions of Cornerstone at no extra charge (with valid annual subscription).


I purchased Cornerstone 3 on the Mac App Store. Can I upgrade to Cornerstone 4?

Yes, but you must purchase new licenses directly through Assembla. The Mac App Store provides no support for paid upgrades between versions of apps. Customers who purchased Cornerstone 3 can purchase updated licenses for the latest version of Cornerstone. New license keys will be issued to you. The new license keys include all future versions of Cornerstone at no extra charge (with valid annual subscription).


Why doesn't Cornerstone 4 migrate my working copies and repositories from Cornerstone 2?

Cornerstone 4 supports App Sandbox. This means that it has restricted access to the file system. Without explicit permission from the user it is unable to read Cornerstone 2’s working copy registration database. Even if the user granted Cornerstone 4 permission to access the database, it still wouldn’t be able to access the working copies themselves.

Providing a migration solution is no simple task - working copies can be located in a number of locations and granting blanket access to some arbitrary directory in order to access all working copies contained therein violates the principles of sandboxing in the first place.

We decided that the best option was to let the user decide which individual working copies to import — which is simply a matter of dragging them to Cornerstone’s source list where they will be automagically grouped by repository.

Read more about App Sandbox


I purchased Cornerstone directly from assembla.com. Will I still receive updates?

Yes. We will continue to publish updates to Cornerstone through the software update mechanism built into the application.

As far as possible we will try to co-ordinate future releases of new versions such that they appear simultaneously on assembla.com and the Mac App Store.


I downloaded the trial version from assembla.com and the Mac App Store indicates that Cornerstone is already installed. How can I purchase Cornerstone through the Mac App Store?

You will need to remove the Cornerstone trial version from your Mac.

Place Cornerstone in the trash (and empty the trash) to re-enable the "Purchase" button in the Mac App Store.


The Mac App Store indicates that Cornerstone is already installed, even though I purchased my license directly from assembla.com. How can I purchase Cornerstone through the Mac App Store?

The Mac App Store will show Cornerstone as "Installed" even if you purchased your license directly from assembla.com. However, you will only receive automatic updates to Cornerstone through the Mac App Store if you purchased through the Mac App Store.

If you already purchased Cornerstone from assembla.com and want to re-purchase the app through the Mac App Store then you will need to remove Cornerstone from your Mac. Place Cornerstone in the trash (and empty the trash) to re-enable the "Purchase" button in the Mac App Store.


Can I transfer my existing Cornerstone license into a Mac App Store purchase?

No. Existing Cornerstone license holders must re-purchase the app through the Mac App Store.


I recently purchased Cornerstone directly from assembla.com. Can I get a refund so I can re-purchase through the Mac App Store?

No. Assembla is not offering refunds to customers who recently purchased Cornerstone directly from assembla.com.

The version of Cornerstone you purchased is functionally identical to the version of Cornerstone available through the Mac App Store. You can continue to enjoy the same functionality and future updates regardless of how you purchased the application.


I am interested in a volume license. Can I get a volume discount when purchasing through the Mac App Store?

No, we do not offer volume discounts to Mac App Store customers.

However, you will receive volume discounts on licenses purchased directly from assembla.com for 5 or more users. See the Cornerstone Store for more information on volume discounts.


Why is the 'Register' button disabled after entering my license information into the License Registration window?

Make sure that all the information you have entered into the window is exactly as it appears in the license mail you received. Check that you haven't included any unwanted text with the license key when copying it to the clipboard.

When entering license information into Cornerstone 1.x, enter the email address you used to make your purchase.


I can't find my Cornerstone license. How can I retrieve it?

Enter the email address you used to purchase your Cornerstone license into the license recovery form and we will send you your license information.


Which version of Subversion do I need to use Cornerstone?

You don't need to have Subversion installed to run Cornerstone because it comes with its own copy of Subversion baked into the application. This applies to all supported versions of macOS.


Why doesn't Cornerstone use the copy of Subversion which came with my Mac?

The best way for Cornerstone to ensures consistency across all versions of macOS is for the application to include its own version of Subversion.

This has the added benefit of allowing us to include the latest and greatest version of Subversion with our application without you having to worry about upgrading your macOS installation.


Can I use the version of Subversion which comes with Cornerstone?

No. Cornerstone doesn't use the Subversion command-line tools and therefore doesn't contain them. Instead, Cornerstone uses the same libraries used by Subversion's tools, enabling the tightest possible integration.

Since OS X 10.8 Mountain Lion Apple no longer includes the Subversion command-line tools.

If you need to use the command-line tools then you will need to install them yourself, either by installing Xcode from the Mac App Store (and then installing the optional Xcode command-line tools) or through a package manager such as MacPorts.


How do I uninstall Cornerstone?
Cornerstone 3

If you installed a version of Cornerstone 3 downloaded from assembla.com then remove the folder at the following location:

~/Library/Containers/com.Assembla.cornerstone3

If you purchased Cornerstone 3 through the Mac App Store then remove the following folder:

~/Library/Containers/com.Assembla.cornerstone3.mas

Removing an app's container in this way can confuse the macOS preferences server. We therefore recommend rebooting your Mac after removing this folder before attempting to re-install Cornerstone.

Cornerstone 2

Perform the following steps to remove all trace of Cornerstone 2 from your Mac:

  1. Move the application to the Trash.

  2. Move ~/Library/Preferences/com.Assembla.Cornerstone.plist to the Trash.

  3. Move ~/Library/Preferences/ByHost/com.Assembla.Cornerstone.*.plist to the Trash (the exact name of the file is specific to your Mac).

  4. Move ~/Library/Application Support/Cornerstone to the Trash.

  5. Move ~/Library/Caches/Cornerstone to the Trash.

Note that Cornerstone does not store any repository or working copy data in these locations by default (i.e. not unless you explicitly direct it to). No user data (other than application configuration information) will be lost by removing these files.


I can't connect to a repository when my user name contains an @ character. What can I do?

URLs which contain a user name are specified in the following form:

scheme://user@server/path

Attempting to specify a user name which contains an @ character (i.e. in the form user@domain) causes the host name to be incorrectly interpreted as domain@server.

RFC 1738 (a public specification which defines how URLs should be formed) stipulates that @ characters in user names should be replaced with %40, e.g.

scheme://user%40domain@server/path

Note that Cornerstone v1.1 and newer automatically substitute @ characters with the equivalent %40 encoding for user names entered in the Add Repository window.

Many thanks to Erik Aigner for the tip.


I'm having difficulties connecting to an old Subversion repository. What can I do?

Cornerstone can't connect to the root directory of a pre-v1.2 Subversion repository. This is because the server doesn't correctly report information about the repository. One workaround is to specify a sub-directory with the repository URL (e.g. http://svn.server.com/repos/project/trunk instead of http://svn.server.com/repos).

The likelihood that we can provide a solution to this issue in the future is slim as the issue lies in the interaction between the repository and version of the Subversion client as used by Cornerstone.

The only alternative is to ask your Subversion administrator (very nicely) if it would be possible to upgrade the repository to a newer, more current version.


Why is moving working copy items so slow?

Subversion ensures that changes made to a working copy are time-stamped to the minimum resolution of the file system. On macOS this defaults to one second. Copying or moving multiple files therefore takes approximately one second per file or folder.


Why is working copy access so slow?

Browsing a working copy in Cornerstone can become slow when:

  1. A working copy is very large (i.e. contains many thousands of files).

  2. Access to the working copy's originating repository is slow due to poor server performance or slow connection type.

Performance issues with large working-copies can be solved by:

  1. Suppressing evaluation of external folders in working copy. This is done by choosing View > Hide Contents of Externals.

  2. Reducing the size of the working copy. For example, if a project has a top-level directory (such as trunk with numerous sub-directories containing modules, libraries or frameworks) then you can try checking out the project into several working copies.

Connectivity-related performance problems can be solved by disabling the display of files' repository status until absolutely necessary. Do this by choosing View > Hide Repository Status.

The view changes described here will remain in effect even after the application is restarted.


Why aren't items in external directories committed along with the rest of my working copy?

When committing a directory (or an entire working copy) which contains a directory mapped to an external reference using the svn:externals property, changes in the external directory are not committed. To commit these changes, select either the external directory or the files with changes and commit them explicitly.

This behavior is inherited from Subversion and is by design: it prevents changes to external files or directories from being inadvertently committed when committing changes to the working copy that contains them.


Why do I get an error stating “Unable to contact repository at …” when checking out a working copy?

If you encounter this error message when checking out a project even though the check out process appeared to complete successfully, check that repositories referenced by svn:externals can be reached and that the URLs are correct. This error is particularly likely if you are using a local repository and then attempt to check out a project with external references to a public repository on the Internet when you do not have Internet access.


I can't rename a directory which contains an external directory. What gives?

Renaming a directory which contains an external reference causes Subversion to become somewhat confused. On the one hand, it thinks the newly renamed directory is unversioned. On the other hand, the existence of Subversion admin files (that pesky hidden .svn folder) in the renamed directory causes no end of problems.

As a work-around, you can do the following to rename an external directory:

  1. Create a new directory using the Finder or Terminal.

  2. Add the directory to the working copy (done automatically if you create it with Cornerstone).

  3. Edit the svn:externals property to point to the new directory.

  4. Update the new directory. The directory will be populated with files from the external reference.

  5. Moved any new or modified files from the previous directory to that which you created.

  6. Delete the original directory.


Why are files with accents and diacritics in their names displayed twice in my working copy?
The Problem

The root cause is that macOS's HFS file system stores filenames containing accents in a manner which confuses Subversion. As a result, such files are displayed twice in working copies, once as unversioned and once as missing.

This is obviously a severe issue for those in non-English speaking countries who (quite logically) like to use all the letters in their alphabet in their filenames. Unfortunately, the issue lies out of Cornerstone's hands and squarely with the Subversion developers. They have acknowledged the issue (see Subversion issue #2464 if you want to get involved in the resolution process).

Background

Here's some technical background for those who are interested:

File systems such as Windows' NTFS and macOS's HFS store the text for filenames using a character set called Unicode. Unicode can be represented (or encoded) in any number of ways. When it comes to accents, they can either be expressed as a single accented character (e.g. a German-language ä) or as two distinct characters, one of which describes the base character (in this case a) and the other the accent (umlaut). Both are perfectly legal forms, with the former known as Normal Form Composed (or NFC) and the later as Normal Form Decomposed (or NFD).

The difference between the Mac's HFS file system and others in the Windows and Linux worlds is that instead of accepting the accent form specified by an application when creating a file and then giving it back verbatim when reading from the file system at a later date, HFS converts all filenames to the decomposed form. As a result, the application encounters decomposed strings when it subsequently obtains filenames from the file system.

This presents a problem to Subversion which is comparing a working copy file list it obtained from the repository (in composed form) against filenames from HFS which are in decomposed form. High-level programming frameworks like Cocoa, Java and .NET handle these encoding differences automatically, but systems like Subversion which are written in low-level C need to be explicitly programmed to take such encoding differences into account. And this isn't currently the case with Subversion.

See the Note on Unicode Composition for Filenames from the Subversion developers for even more detailed background information and the complexities involved in implementing a solution.

The Subversion developers are aware of the situation but a solution isn't currently in sight as of late-2008.

If this matters to you then we suggest that you get in contact with the Subversion developers and voice your interest in getting this solved sooner rather than later. The majority of Subversion developers and users are probably English-speaking and use computers other than Macs so the issue may not be being addressed with suitable priority.

It can't hurt to raise the profile of the situation by letting them know that it affects you!

Recommendations

Our recommendation is to simply not use accented characters in your filenames. We realize this is draconian (we're located in German/French/Italian/Romansch-speaking Switzerland after all) but it's the only workable solution at the moment.


Cornerstone complains that my working copy is out-of-date even though nobody has changed the files in the repository. Why is this?

Subversion updates the revision of folders in the repository to reflect that of the newest contained file, but this updated revision number is only picked up by the working copy when updated.

This will cause Subversion to complain that the working copy's folder is out-of-date when attempting to commit folder modifications such as file addition/removal or property modification.

Update the working copy to bring the folder up-to-date with the repository and then retry the commit.


Can third-party plug-ins have an adverse affect on Cornerstone's stability?

Plug-ins can interfere with the normal usage of Cornerstone and cause it to quit unexpectedly. If you are experiencing instability with Cornerstone then you should try uninstalling plug-ins to fix the problem.

What plug-ins? By plug-ins we mean haxies, application enhancers and system-wide extensions loaded via an input manager. Such plug-ins are loaded into every application running under macOS and attempt to modify the way the process functions in order to extend the application's functionality. Unfortunately such plug-ins can sometimes cause unintended conflicts which have an adverse affect on applications such as Cornerstone

Our experience has shown that often it is not enough to simply disable plug-ins (if the author provides such a configuration option). Instead they may need to be removed from the system entirely in order to avoid them being loaded into the Cornerstone process.


Can I store files with resource forks in my Subversion repository?

The native Mac file system, HFS Plus, supports two forks (independent data streams) called the data fork and the resource fork. Subversion can only handle the data fork, and if you attempt to commit a two-fork file, only the data fork will be recorded. Mac programmers using Subversion must consider how to handle this limitation.

The contents of the resource fork, if any, is structured data that programs read and write using the Resource Manager APIs. However, Resource Manager data is sometimes stored in the data fork. Therefore, while a nonempty resource fork is always a resource file, a resource file is not necessarily a resource fork.

We can roughly group files with resource forks into 3 types:

  1. Files in which both forks are nonempty and important. These include applications and shared libraries in the old pre-Intel-Mac CFM format, and some older document formats.

  2. Data files with a few inessential resources. Examples: an image file with a thumbnail icon as a resource, a text file with a resource recording a preferred font, or a document file with a resource recording a preferred application to open it.

  3. Resource files with empty data forks. Typically these would be hidden inside an application package, or merged with other resource data by a development build system.

The first kind, true two-fork files, are the most problematic, but becoming fairly rare. If you wish to preserve such files in a Subversion repository, you will need to encode them somehow, perhaps in zip archives or using the applesingle or binhex commands.

In the case of expendable resources, you might choose to just forget about them.

A pure resource fork file can usually be converted to a data fork resource file without any loss of functionality. To find pure resource fork files in the current directory hierarchy, you can use this command:

find . -type f -exec [ -s "{}/..namedfork/rsrc" -a ! -s "{}" ] \; -print

You can convert pure resource fork files to data fork resource files with the following shell script.

#!/bin/sh

if [ $# -eq 0 ] ; then
echo "Usage: RsrcToData FILE [FILE ...]" >&2
echo "Example: RsrcToData *.rsrc *.ppob" >&2
exit 1
fi

while [ "$1" != "" ]
do
if [ -d "$1" ] ; then
    echo "$1 is a directory" >&2
elif [ ! -e "$1" ] ; then
    echo "$1 does not exist" >&2
elif [ ! -s "$1/..namedfork/rsrc" ] ; then
    echo "$1 has an empty resource fork" >&2
elif [ -s "$1" ] ; then
    echo "$1 has a nonempty data fork" >&2
else
    # Here is the case of interest,
    # empty data fork, nonempty resource fork
    cat "$1/..namedfork/rsrc" > "$1"
    cat /dev/null > "$1/..namedfork/rsrc"
fi

shift
done

exit 0							

Alternatively, you could convert a pure resource fork file into a text file in the "rez" format using the DeRez command line tool. The rez file can be converted back to a resource file by Xcode as part of a build process.

The above text was taken from this excellent article on the Mercurial Wiki. It applies to working with Subversion and Mercurial alike.

Many thanks to Wolfgang Textor and Bastian Pfennigschmidt for bring this article to our attention.


Can I use Microsoft Word as an external compare tool?

To use Microsoft Word (2004 and later) as an external compare tool:

  1. Using the AppleScript Editor app, create a script with the following contents:

  2. on run argv
    
    set file1 to item 1 of argv
    set file2 to item 2 of argv
    
    tell application "Microsoft Word"
    
    activate
    
    open file1
    set name1 to name of (info for file1)
    
    set doc1 to document name1
    
    activate object doc1
    
    compare active document path POSIX file file2
    
    end tell
    
    end run								
  3. Save the file as MSWord.scpt.

  4. Open Cornerstone's preferences by selecting Cornerstone > Preferences and activate the General pane.

  5. From the External compare tool pop-up menu select Other Script... and locate the MSWord.scpt file.


Why can't I open my working copy in another Subversion app?

Working copies can only be opened by the version of Subversion that originally checked them out. While newer versions of Subversion can upgrade the working copy to their version-specific format, attempting to open a working copy with an older version results in an error.

Care should therefore be taken to check out working copies in a version supported by all the Subversion client apps you use.

Cornerstone includes support for multiple versions of Subversion with the appropriate version being automatically selected when accessing a working copy. This ensures broad compatibility with the majority of other Subversion clients, but care must still be taken to ensure that the working copies are kept at a version supported by Cornerstone.

See the About window for a list of the versions of Subversion included with Cornerstone.

Selecting a working copy version

You can choose the format for a working copy in Cornerstone's Check Out window. Choose a version that is compatible with your other Subversion client apps. If you use Subversion in Terminal then use the version reported in Terminal.

What version of Subversion do I have installed?

You can find out what version of Subversion you have installed by typing the following command in Terminal:

svn --version

This will output something similar like:

svn, version 1.7.10 (r1485443)
compiled Jan 15 2014, 11:22:16

Copyright (C) 2013 The Apache Software Foundation...

Note that this only applies to the Subversion command-line tool. Like Cornerstone, many Subversion client apps include their own version of Subversion. Consult the app's About window or contact the app's vendor for details if you suspect this to be the case.

Subversion 1.8

The Serf HTTP library included with Subversion 1.8 contains a bug that causes HTTPS errors for repository URLs that include the username in the form:

https://username@server/repo

The technical background behind this bug is described in detail here, here and here.

Cornerstone contains an updated version of the Serf library that fixes this bug and therefore works as expected. However, other Subversion clients that have not been updated to use Serf 1.3.2 or newer will be unable to commit or update working copies checked out via HTTPS with Cornerstone.

How can you fix this?

Unfortunately none of the 1.8.x versions of Subversion to date mandate the use of a version of Serf that includes a fix, so we can't simply recommend that you update to a newer version of Subversion. Depending on how you built Subversion you will either need to rebuild Subversion entirely or just replace the Serf dylibs on your Mac.