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

Release Notes for 2.2

Filed under: Cornerstone,Release Notes — Administrator @ 3:39 am

2.2 is a free upgrade for all Cornerstone 2 license holders.

New Features

  1. Full support added for user-defined Subversion properties

    Cornerstone 2.2 adds support for user-defined Subversion properties (also known as custom properties.)

    The approach taken by Cornerstone differs somewhat to other Subversion client applications, which generally display user-defined properties as simple key-value pairs.

    We believe this approach has several disadvantages for the user:

    1. It is easy to misspell both property names and values. The UI does nothing to reduce the cognitive load for the user.
    2. The properties are not necessarily self-describing, i.e. semantics of the properties are not clear to the end-user and possible values are not described by the UI, often necessitating additional guidelines or documentation.
    3. Values are assumed to be textual. Binary values are not well supported, if they’re supported at all.
    4. Values are assumed to be single-line. Multi-line text is not well supported.

    Instead, Cornerstone allows the user to extend the property tab of the Inspector to add custom fields for user-defined properties. The following field types are supported:

    1. Multi-line text field
    2. Checkbox
    3. Pop-up list
    4. File

    For each field, the name of the underlying property and a descriptive label is specified in the new User Properties preference pane. The property name and (if appropriate) possible values are managed internally by Cornerstone, thus relieving the user from the burden of remembering these details and ensuring that these values are always entered correctly.

    The checkbox field type displays a boolean value as a checkbox and the user can configure the value of the property when the button is checked.

    The pop-up list field type allows the user to define a set of possible choices for the property, along with (optional) textual labels shown in the pop-up list.

    The file field type allows the user to drag a file from Finder to the Inspector to store the contents of the file as a user property. Cornerstone stores additional metadata about the file (e.g. original name, type and thumbnail) in a sidecar property (this behavior can be disabled if inappropriate.) This information is used to restore the file with the correct name and type information when the file is dragged from Cornerstone to Finder.

    User property fields support multiple-selection in just the same way as the standard property fields displayed in the Inspector. As a result user properties can be inspected and assigned for multiple files at once.

    Finally, user property preferences can be shared between multiple Cornerstone users using the Export… button in the user property preference pane. The resultant file can be distributed to other users who can import the user property definitions by double-clicking the property file in Finder. (#141)

  2. Cornerstone sends Growl notifications on completion of long-running commands

    Cornerstone 2.2 notifies Growl of completion of the following commands:

    • Checkout
    • Commit
    • Export
    • Import
    • Switch
    • Update

    Please note that Cornerstone does not include or install the Growl application or preference pane.

    If you wish to receive notifications via Growl then you will need to download and install Growl yourself from the Growl project website.

Performance Improvements

  1. Preference added to control interval for background status checks

    Cornerstone 2 added support for the display of repository status summary badges in the working copy source list. Cornerstone monitors changes in the repository by periodically contacting the repository to get information about a working copy’s source folder. Such periodic checks could have a negative impact on server load.

    Prior to Cornerstone 2.2, it was possible to disable these background status checks, but there was no way to reduce the check frequency: the time interval was set at 5:00 minutes.

    Cornerstone 2.2 adds a new preference which provides the user with greater control over how often the application performs background status checks. The default value is Every 10 minutes (up from 5 minutes in the previous version), which should significantly reduce the load caused by Cornerstone with the default settings.

    If appropriate, the user may increase the frequency of checks by selecting More often (every 5 minutes), or decrease the frequency by selecting Less often (every 30 minutes).

    Background checks can also be disabled by selecting Never. (#1104)

Usability Improvements

  1. User interface of the Import… command was improved

    The layout of the Import sheet displayed when the File > Import… is selected (or a file or folder is dragged onto a repository) was improved. Specifically, the option to check out a working copy for the imported folder is now always visible and more clearly labeled.

    The Import options sheet is now always displayed when a file or folder is dragged from Finder to Cornerstone’s repository browser (options were previously only displayed if the Option key was pressed). This makes the drag/drop user interface consistent with that displayed when the Import… command is used, and improves the visibility of the functions available to check out a working copy after import completion.

  2. Obstructed files are now displayed correctly

    Cornerstone now displays a status image for obstructed files in both the Browser View and Inspector. Obstructed items are also included in the Browser View’s Changed filter. (#1139)

  3. File sizes are now reported in kilobytes

    Cornerstone 2.1 and earlier used a kilobyte size of 1,024 bytes (i.e. a kibibyte, or KiB) when calculating the file sizes displayed in the application’s user interface. This behavior was chosen for consistency with Mac OS X Finder in 10.4 Tiger and 10.5 Leopard.

    Cornerstone 2.2 now uses the kilobyte size of 1,000 bytes as defined by the SI standard. This behavior is consistent with Finder in Mac OS X 10.6 Snow Leopard. As a result, file sizes will be reported as slightly higher than in previous versions of Cornerstone.

    It is important to realize that Microsoft Windows applications generally report file sizes in kibibyte values (i.e. with a kilobyte size of 1,024 bytes) even though the displayed unit is KB, i.e. kilobyte. File sizes are therefore likely to be reported slightly lower by Subversion clients running on Microsoft Windows than by Cornerstone.

  4. Modified items are no longer displayed with bold text in the working copy browser

    In previous versions of Cornerstone, modified working copy items were displayed using a bold font in the working copy browser. Cornerstone 2.2 now displays modified items using the standard non-bold font in order to reduce visual clutter.

  5. Standard property names are no longer shown in the Inspector

    Previous versions of Cornerstone displayed the name of the underlying Subversion property above each field in the Inspector’s Properties tab.

    The property name fields added little functionality to the property tab. Users familiar with Subversion’s standard properties have no difficulty associating the Inspector’s fields with their underlying properties and the fields added nothing other than clutter for less experienced users.

    The property name fields were therefore removed in Cornerstone 2.2.

  6. HTTP timeout field removed from Subversion preferences

    Cornerstone 1.5 and later included an HTTP timeout field in the Subversion communication preference pane that allowed the user to change the value of the http-timeout option in Subversion’s ~/.subversion/servers configuration file.

    Ommitting a value for http-timeout causes Subversion to use a default timeout value of 3,600 seconds, or 1 hour. This high default value guards against timeouts caused by long-running HTTP requests such as those retrieving log or blame information.

    It makes little sense to override such a high timeout value: reducing the value risks timeouts occurring during normal long-running requests, and increasing the timeout to values greater than 1 hour makes little sense in practice.

    As a result, the Timeout field in the Communication section of the Subversion preference pane was removed.

  7. Copy/paste in revision range fields was improved

    Text in revision range fields (e.g. in the merge cherry picking options) is now copied to the clipboard in 1031:1037 format (was previously 1,031 – 1,037).

    This has two advantages:

    1. The text can be unabiguously accepted by the path field when pasted back into the field.
    2. The format is compatible with that accepted by the svn merge command in Terminal.

    (#1119)

  8. UI layout management improved to better handle small window sizes

    In previous versions of Cornerstone, the main window could be resized to be very small, resulting in layout issues which could only fixed by restarting the application at a larger window size.

    2.2 solves this by:

    • Limiting the window to a sensible minimum size which guarantees consistent and usable layout.
    • The Inspector’s width now decreases automatically to better accommodate a reduction in main window size, eventually collapsing if insufficient space is available.
    • The main window is resized to accommodate the Inspector if the window is too small when the Window > Inspector command is used.

    (#1132)

Compatibility

  1. Mac OS X 10.5 Leopard and 10.6 Snow Leopard

    Cornerstone 2.2 is compatible both with Mac OS X 10.5 Leopard and Mac OS X 10.6 Snow Leopard.

    Both Intel and PowerPC processors are supported on Leopard. Only Intel processors are supported on Snow Leopard.

  2. Mac OS X 10.7 Lion

    Cornerstone runs fine on Mac OS X 10.7 Lion Developer Preview 2.

    There are a couple of known glitches, but these do not have a significant impact on the application’s functionality and will be fixed in the run up to Lion’s release this summer.

    Please note that this as-yet unreleased version of Mac OS X is not officially supported.

Compatibility

Backwards Compatibility

Cornerstone 2.2 is fully backwards-compatible with 1.5 and 2.1. All configuration and settings are transparently migrated to version 2 when the new version is run for the first time.

Forwards Compatibility

The Cornerstone 2 configuration databases are forward-compatible with 1.5, i.e. you can run versions 1.5, 2.0, 2.1 and 2.2 against the same configuration databases in your Application Support/Cornerstone folder.

Issues Resolved in Cornerstone 2.2

# Description
141 Custom properties should be editable in the Inspector
1104 Method used to determine working copy out-of-date status for source list badge should be improved to minimize generated server load
1119 Text copied from a revision range field is not correctly interpreted when pasted back into the field
1122 Repository status for files in working copy browser is temporarily cleared when refreshing with “View > Show Repository Status” enabled
1123 Switching working copies fails when there is a repository URL mismatch due to encoded usernames
1125 When renaming a working copy the size of the edit box is too small
1127 It is not possible to add an auto property in the Subversion preference pane if the svn config file does not contain an [auto-props] section
1128 The default value displayed for “Use compression” in the Subversion preference pane should be on (i.e. checked)
1130 Cornerstone does not support comparison of files in externals from a different repository
1132 The layout of Cornerstone’s user interface exhibits problems when the main window is reduced to a very small size
1133 Showing the blame annotations for a file containing lines contributed by an anonymous user results in no blame data being displayed along with an empty annotations legend
1135 Cornerstone does not always remember the visible state of the Inspector when configured for display in a floating panel
1136 The inspector area on the right-most side of the main window is briefly visible when the application is started with the Inspector configured for display in a separate panel
1137 File browser items are sorted incorrectly when sorting by “Kind”
1138 Open panel displayed by path fields is not resizable
1139 Obstructed working copy items are displayed as unmodified in the working copy browser
1143 Cornerstone doesn’t preserve the font changes made to the Log Message text field. The ability to change the font should be removed
1145 The background status and repository monitor queues fail to re-enter the idle state after an energy savings-induced sleep/wake cycle, resulting in Cornerstone displaying the shutdown progress window while quitting
1146 Invoking a context menu for a field in the Inspector causes the displayed item to change if the source list was previously first responder

Release Notes for 2.1.1

Filed under: Cornerstone,Release Notes — Administrator @ 4:32 am

2.1.1 is a maintenance release which solves issues uncovered since the release of 2.1.

2.1.1 is a recommended update for all users running 2.0 and 2.1.

Resolved Issues

# Description
1116 Cornerstone can crash under certain circumstances when a build range in the form “start:end” or “start-end” is entered in the cherry picking merge range field
1117 Revision ranges are not accepted by the cherry picking merge range field on PowerPC Macs
1118 Pressing the Tab key while a path field is first responder enters a tab character into the field instead of making the next field the first responder

Release Notes for 2.1

Filed under: Cornerstone,Release Notes — Administrator @ 8:55 am

2.1 is a free upgrade for all Cornerstone 2 license holders.

New Features

  1. Working copies can now be switched

    While many users find it convenient to check out a separate working copy for each branch they work on, switching a single working copy between branches is an important part of the workflow for many Subversion users.

    For this reason, 2.1 brings full support for switching working copies to Cornerstone.

    The new Switch… function on the Working Copy menu enables the switching of entire working copies as well individual files and folders.

    Switched items in a working copy are easily identified by a new status icon in both the working copy browser and inspector panel, and the new Switched filter enables the user to quickly find switched items if necessary. (#520)

  2. Revisions can be browsed in the repository browser

    A new revision field in the repository browser’s filter bar allows the user to specify the revision to be browsed.

    All functions available in the repository browser (tag, branch, export, etc.) were modified to behave appropriately with non-HEAD revisions. (#427)

  3. Improved copy and move interface in browser views

    Cornerstone has provided drag and drop support for copying and moving items in browser views since version 1.0. Cornerstone 2.1 extends this copy and move support by adding new Duplicate… and Move… functions to the File menu.

    These functions present the user with a simple browser interface for the selection of the destination folder.

    In addition, the user can specify/select a destination folder in another repository or working copy, thus enabling:

    • Copying between working copies.
    • Copying between working copies and repositories.

    Copying between working copies and repositories requires that the source and destination relate to the same repository. It is not possible, for example, to copy from one repository to another. (#157)

  4. Undelete function was added to the Log View

    The Log View’s toolbar now contains an Undelete item. This button is enabled when a deletion is selected from a revision’s change list.

    Clicking Undelete results in an options window being displayed allowing the user to specify the name and location of the undeleted file/folder. (#925)

  5. Working copies can now be relocated

    Cornerstone 2.1 adds a Relocate To function to the Working Copy menu.

    This enables a working copy to be updated to use a different URL to access the same repository without having to check out a new working copy or resort to using svn switch --relocate on the command line.

    This is useful when:

    • A repository is moved to a server with a different name

    • Changing the protocol used to access the repository (e.g. changing from HTTP to HTTPS)

    • The path to the repository is changed. For example a server which previously hosted a single repository is reconfigured to host multiple ones, therefore necessitating the introduction of a repository name into the path

    • The port used to serve the repository is changed

  6. File types to be compared as text are now user-configurable

    A number of users have informed us in the past that they were unable to compare text files in Cornerstone. Further investigation always indicated the same cause: conflicting or incorrect registration of the file’s Uniform Type Identifier (UTI).

    This situation was, in most cases, difficult or impossible for the user to resolve. Deinstallation of the application responsible for the incorrect UTI solved the problem in many instances, but this is obviously not an option in all cases.

    We have therefore improved Cornerstone to allow the user to override the default UTI-based method for file type detection by specifying which files should always be treated as text in the compare view.

    The majority of Cornerstone users will never need to override the default type detection behavior. But for the few that do there is a new field in the Advanced preference pane which allows them to specify the names (or patterns) of files which should always be treated as text. (#483)

Performance Improvements

  1. Scrolling performance of file browser views was improved

    2.0 unfortunately included a regression which negatively affected the scrolling performance of the file browser views. This issue was resolved for 2.1 resulting in significantly improved responsiveness when scrolling.

Usability Improvements

  1. Working copies are relocated when the settings are changed for the related repository

    Each working copy maintains a back-reference to the URL of the repository it was originally checked out from.

    This URL is now updated when the communication settings (e.g. server name, protocol, port, user name etc.) are modified for the working copy’s originating repository. (#774)

  2. Sleep handling improved resulting in fewer lengthy network timeouts

    Cornerstone now listens for sleep and wake notifications, canceling any running background network operations before the Mac goes to sleep.

    This prevents Subversion from experiencing lengthy network timeouts due to dropped connections. As a result Cornerstone will prompt to quit much less often during shutdown. (#1017)

  3. Kind column added to file browser views

    The working copy and repository file browser views have a new Kind column which displays descriptive text for the item’s type similar to that displayed in the Finder column of the same name.

    Beyond the informational value of the column, it also provides the added benefit of enabling the user to sort items by type. (#1027)

  4. Source revision can be specified when copying items within a working copy

    In previous versions of Cornerstone, copying items within a working copy always resulted in the working revision being copied (i.e. the copied item included any uncomitted changes).

    The copy options window was improved in 2.1 to allow the user to select the revision being copied. Possible revisions include the working revision (which is the default and behaves as in prior versions) as well as the BASE revision. This allows the user to copy a modified file without including uncommitted changes.

    The copy options window also allows an arbitrary revision to be specified as a date or number.

    Please note that copying an item’s BASE revision requires that the working copy is in Subversion 1.5 format (or newer).

  5. Depth can be specified when reverting

    The advanced revert function (Working Copy > Revert…) was extended to allow the user to specify the depth to revert to in the selected folders (this parameter has no effect if a file is selected).

    This is particularly useful for reverting changes to folder properties (e.g. externals) without reverting changes to files contained within the folder.

  6. The Compare View’s find bar supports standard find pasteboard

    Text selected for (or entered into) the Compare View’s find bar is published to other applications using the standard find pasteboard. Likewise, the contents of the find pasteboard are adopted by the find bar when Cornerstone is activated. (#1065)

  7. Improved Commit View

    A couple of minor improvements were made to the Commit View:

    • Include with Contents and Exclude with Contents were added to the change list’s right-click menu

      These function include/exclude the selected folder along with all contained items.

      Tree-based inclusion/exclusion of items in the change list has long been possible by Option-clicking items’ check boxes. Exposing these functions in the right-click menu will hopefully improve their discoverability.

    • Unchanged folders are now displayed differently in the change list

      The change list includes intermediary parent folders for modified items even when the folders themselves are unmodified. These unmodified folders are now displayed dimmed in order to differentiate them from folders with property modifications. (#903)

    • Tooltips are now displayed for columns in the change list

      Tooltips are now displayed for the action and property action columns, as well as for the inclusion/exclusion check box.

  8. Improved Timeline View

    A couple of minor improvements were made to the Timeline View:

    • Icons are displayed for items in the timeline

      File-type icons are now displayed for items listed in the timeline view.

    • Differences can be saved as a patch file

      The File > Save Differences as Patch… function (previously only available in the Compare and Browser Views) can now also be used in the Timeline View to save the differences in the compared files as a patch file. (#1089)

    • Directory selection message was improved

      The timeline’s compare view does not currently support the comparison of folders. The message displayed when a folder’s revision is selected was improved to make this clearer.

  9. Deselect All function was added to the Edit menu

    The Deselect All function can be used to clear the selection in the Browser Views as well as the Compare View and the Timeline View.

    The Deselect All function does not have a key equivalent. The two standard key equivalents found in Mac applications are Cmd+Option+A and Escape. We decided not to co-opt Cmd+Option+A as it is already in use for Select All Matches in the Browser View and Select All on Right Side in the Compare View. We did not implement the Escape key equivalent as the Escape key is reserved in Cornerstone for exiting the current navigation context. (#1057)

  10. Toggled view options menu items no longer display check marks for improved compliance with Apple’s HIG

    Prior to version 2.1, the menu items for Cornerstone’s view options (e.g. View > Show Ignored Items) displayed a check mark indicating whether the option was in effect.

    The combination of an imperative command (i.e. Show…) with a check mark to indicate the state of the option results in ambiguity: what effect does the function have when invoked when enabled. Does this Show the ignored items? Or does it uncheck the menu item, thus disabling the option? Apple therefore recommends against the use of menu items in this way.

    Cornerstone 2.1 improves compliance with the Apple HIG by replacing the check marks with dynamically-modified menu item text that unambiguously indicates the effect of the function. For example, View > Show Ignored Items is displayed as View > Hide Ignored Items when enabled.

    This change was implemented consistently for the following menu items:

    • View > Show Ignored Items
    • View > Show Repository Status
    • View > Show Contents of Externals
    • Compare > Show Differences in Whitespace
    • Compare > Show Differences in Line Endings
    • Compare > Show Line Differences
    • Compare > Show Annotations
    • Compare > Show Line Numbers
    • Compare > Show Invisibles
    • Compare > Show Image Information

    (#1079)

  11. Preferences added for Compare View options

    Four new preferences were added to the General preference pane enabling the user to specify default values for the following Compare View options:

    • Compare > Show Differences in Whitespace
    • Compare > Show Differences in Line Endings
    • Compare > Show Line Differences
    • Compare > Show Invisibles

    (#1062)

  12. Compare View now supports horizontal drag-scrolling

    The Compare View always supported vertical drag-scrolling. Auto-scrolling was improved for version 2.1 to support horizontal drag-scrolling when the mouse is dragged beyond the horizontal extents of the selected document. (#832)

  13. Compare Using External Tool function moved from File to Compare menu

    The Compare Using External Tool menu item (with sub-menu) was moved from the File menu to the Compare menu.

  14. Add to Working Copy with Contents item is always visible in Working Copy menu

    The Add to Working Copy with Contents menu item was previously only available in the Working Copy menu as an alternate (i.e. the item was only visible when the Shift key modifier was pressed).

    This behavior was changed for 2.1 — the menu item is now always visible — with the intention of improving the discoverability of the function.

  15. Update… menu item in working copy right-click menu is no longer visible by default

    The addition of the new Switch… function in the working copy right-click menu necessitated the pruning of redundant or seldom-used items.

    Previously, the right-click menu contained both the Update… and Update to Latest Revision items, so we decided that the Update… menu item should no longer be displayed by default.

    The Update… menu item is still available, but is now only displayed when the Shift key is pressed. Likewise, Revert… replaces Revert to Last Update… when the Shift key is pressed.

  16. Edit > Copy URLs menu alternate added for items in the Working Copy Browser View

    The new menu item (key equivalent Opt+Cmd+C) is displayed when the Option key is pressed. It copies the URLs for the selected items to the clipboard.

    The command is also available in an item’s right-click menu. The command is not visible by default but can be revealed by pressing the Option key.

  17. Improved display of repository location in inspector

    In previous versions of Cornerstone, the working copy item inspector displayed the URL of the selected item in a single, multiline field.

    The inspector was improved for version 2.1 to display the item’s location in two fields:

    1. Repository URL
    2. Location

    This results in better use of available horizontal space: the name of the selected item is not included in the URL, and the location (labeled Where) is displayed as a path relative to the repository.

    The full location URL is available in the field’s tooltip.

  18. Browser View search field now supports revision numbers

    The search field in the Browser Views (working copy and repository) now accepts revision numbers, allowing the user to search for all files committed in a particular revision.

  19. Most Recent filter added to Repository Browser View

    The new Most Recent (key equivalent Ctrl+R) filter shows only items which were changed in the displayed revision (normally HEAD). The filter’s title changes to This Revision when a revision other than HEAD is displayed.

  20. Refresh Automatically option was removed from the View menu

    The utility of the Refresh Automatically option decreased with improvements introduced with version 1.5 and in Cornerstone 2 only controlled whether a repository browser was refreshed after commits from a related working copy.

    The command was removed from the View menu to simplify the user interface and repository browsers now always refresh following commits from related working copies (as had previously been the default).

Compatibility

  1. Compatible with Mac OS X 10.5 Leopard and 10.6 Snow Leopard

    Cornerstone is compatible both with Mac OS X 10.5 Leopard and the more recent Mac OS X 10.6 Snow Leopard.

    Both Intel and PowerPC processors are supported on Leopard. Only Intel processors are supported on Snow Leopard.

Compatibility

Backwards Compatibility

Cornerstone 2.1 is fully backwards-compatible with 1.5 and 2.0. All configuration and settings are transparently migrated to version 2 when the new version is run for the first time.

Forwards Compatibility

The Cornerstone 2 configuration databases are forward-compatible with 1.5, i.e. you can run versions 1.5, 2.0 and 2.1 against the same configuration databases in your Application Support/Cornerstone folder.

Issues Resolved in Cornerstone 2.1

# Description
157 ‘Copy To…’ function needed in node browser views
427 Allow revision selection in repository browser view
483 User should be able to override file type UTIs to control how they are displayed in the compare view
520 Add switch function
774 Working copy URLs are not updated when a username is changed in the repository connection settings
832 Text compare view doesn’t support horizontal drag scrolling (i.e. autoscrolling)
886 Commit view’s change list statistics incorrectly includes unmodified folders
903 Icons for non-changed intermediate folders in the commit view’s change list should be displayed as partially transparent
925 Cornerstone should provide a function for undeleting/reanimating deleted files
1017 Sending Macbook to sleep with remote tasks running can cause lengthy timeouts while quitting application
1027 Add a ‘Kind’ column to the working copy and repository browsers
1057 Add a “Deselect All” function to the file browser views
1059 Descriptive text in the Export Files and Folders sheet is duplicated in “Additional Options” section
1061 Allow the user to increase the width of the ‘Description’ column in the merge ‘Change Preview’ view
1062 Store the values of the ‘Compare > Show Differences in Whitespace’ and ‘Compare > Show Differences in Line Endings’ settings between application sessions
1065 Add support for the system-wide find clipboard and inter-application searching
1068 Attempting to delete a folder in a locked working copy should raise an error and not fail silently
1073 Add a description of the ‘Clean’ command to Cornerstone’s Help Book documentation
1075 The ‘New Folder’ button in the File Import window is confusing and should be removed
1079 Toggled view option menu items (e.g. “Show Ignored Items”) should not display a check mark for consistency with Apple’s HIG
1084 The default text ‘Select one or more revisions from the timeline to compare’ when comparing folder revisions in the Timeline View is confusing. The text message should be improved
1085 Merges fail after choosing a “Merge from” URL using the open panel
1088 The “Help > Visit Cornerstone Web Site” application menu item does not work
1089 “File > Save Differences as Patch” is unavailable when comparing files in the Timeline view
1092 Selecting “Inspector” from the “Window” menu when the main window has been closed results in the inspector being displayed in a floating panel
1093 Activity spinner not shown in repository source list when displaying the contents of the repository for the first time
1094 Clicking the “Open” toolbar item in the compare view for deleted or missing files results in an error being displayed
1095 Change count capsules displayed in the working copy source list popover are not wide enough to accommodate 5-digit change counts
1096 The annotations popover appears when pressing the shift key when writing a log message (with a compare view with annotations)
1097 Clicking the “Update” button for a revision in the Log View ignores the value of the “Working Copy > Include Externals in Updates” setting and always updates externals
1100 The Timeline View can display an error if the user is mousing over a timeline when a refresh completes
1101 External folders are not always displayed with the [X] marker in the working copy browser view
1102 Hovering the mouse over the color column in the annotation legend window displays a tooltip with programming information about the color displayed. This should be removed
1105 Cornerstone raises an error when the font configured as the fixed-width font in the application’s preferences is missing
1107 Cornerstone encounters an unexpected error when searching for a term in the Compare View on a PowerPC Mac

Release Notes for 2.0.4

Filed under: Cornerstone,Release Notes — Administrator @ 6:44 am

2.0.4 is a maintenance release which solves issues uncovered since the release of 2.0.

2.0.4 is a recommended update for all users running 2.0.

Resolved Issues

# Description
Fixed a couple of minor memory leaks
1024 Cornerstone should keep track of the user’s last selected file repository compatibility setting
1026 The revision indicator in the repository browser’s status bar is not wide enough to accommodate 7-figure revision numbers
1037 Revisions displayed for cherry picking should be filtered based on the value in the “Merge from” field instead of displaying all revisions in the repository
1042 Cornerstone occasionally displays an alert with the text “An unexpected error occurred” after enabling annotations in the compare view
1043 Clicking “Merge Changes” in the merge view should cancel the running merge preview activity
1048 Cornerstone displays an error when the left/right/both selector is clicked in the compare view’s find bar
1055 Cherry picking merge UI should not start dry run for preview until one or more revisions has been specified by the user
1063 Compare view displays an error (“Cannot convert from ZSVNMineRevision to svn_opt_revision_t”) after resolving a conflict
1067 The diff3-cmd helper tool configured in .subversion/config should not be displayed while performing dry run merge previews
1071 The ‘Check out to’ field in the externals editor does not support folder names containing whitespace
1072 The document state for the externals editor window is not marked as modified when the property text is directly edited by the user

Designing an Icon in Record Time

Filed under: Cornerstone — Lawrence @ 6:25 am

Or: How we spent 2 weeks on a single icon for Cornerstone 2.

The icons used in Cornerstone 2 were never originally conceived as a complete set but came into existence gradually, pretty much at the same time as the feature set itself. The brief to design an icon for the newly added Branching functionality came somewhat late in the day when it had to fit into an existing icon set which comprised of the Merge, Update and Commit icons.

Packages that Branch

Branching Packages

The first step was to try and reuse the blue and red package metaphor for ‘changes’ as originally used in the Update and Commit icons and apply it to the context of branching. The result was 2 packages connected by a metallic ‘branch’ or conduit, with one package of changes extending away or branching off from the other. Not too bad for a first attempt.


Although icon design is not a ‘one design fits all sizes’ exercise we could not, even with extensive tinkering, optimize the icon for 32px. We tried various configurations of the 2 packages with the blue package placed above then below the red package and vice-versa. We also tried altering the shadows and highlights but still couldn’t get the level of definition we needed. The conduit had to be completely unambiguous for the metaphor to work and in the end we couldn’t help feeling that with this approach we were trying too hard to push the package concept where it just didn’t belong.

An Idea too Far?

Package colored leaves

Another way to main a consistent style apart from reusing metaphors and drawing technique is of course through color scheme. Moving away from reusing the package metaphor we decided on a more direct approach and came up with the idea of using leaves and their natural association with branching.


The color scheme translated well, especially with the edge highlights from the Update, Commit and Branch icons being used for the leaves’ veins. In fact we thought it looked so good that we were convinced it was more or less the final draft.

It was only after some time that it began to vex us. In fact several months passed as we continued development on Cornerstone 2 before realizing that the leaves were just not going to cut it. We decided that using them to represent branches which in turn represented branch functionality was one conceptual leap too far. Not only that but the leaves lacked the perspective shared by the Update, Commit and Merge icons.

Wood for the Trees

How about using Branches to represent Branches?

Now this sounds really crazy but we thought we’d give it a go. We’d use the color and perspective from the Update, Commit and Branch icons and apply it to the most familiar branching metaphor we could think of: the branching of the stem of a plant. Again the colors of the leaves’ veins would be based on the highlight colors used in the leaf icon but be bolder and drawn to indicate a fatter, rounder  more succulent leaf, much like an aloe vera plant.


Even after extensive retouching we couldn’t get the veins of the leaves to scale well and we wanted more than the shape of the leaf to indicate it’s purpose. By designing a more stylized leaf whereby the rib of the leaf is sharply recessed and blends seamlessly with the stem  (via the petiole for you biology buffs) we were able to achieve the level of definition at 32px that we were looking for.


As you can see this required some touching up and additional highlights but we were really pleased with the end result.

Try, Try again

Lessons Learned

Clearly icon design is not always, but can be, a highly iterative process. It took us nearly 2 weeks to decide on the final draft and while we’re really happy with the end result, we struggled at times to come up with a satisfying image that we thought users would easily understand.

When designing an icon that has to fit into an existing set it pays to remember that reusing a metaphor is not the only way to achieve consistency. Color scheme, perspective and drawing style, used in the right proportions (together with a good dollop of perseverance) can be just as important.

Cornerstone 2 in Numbers

Filed under: Cornerstone — Simon @ 4:53 am

There are positives and negatives to developing a client for an established system like Subversion.

One of the negatives is that some people assume it doesn’t take much to develop a Subversion client and once in a while we receive mail suggesting that Cornerstone is expensive at $59.

After all, how difficult can it be? It’s just a Subversion client, right?

Anyone who has ever done serious UI development knows differently. Designing and implementing graphical user interfaces is challenging at the best of times but particularly so when you take a complex system like Subversion and try to make it accessible to both new users and Subversion veterans alike.

We recently took some time to reflect on Cornerstone 2 development, including how far we’ve come since both Cornerstone 1.5 in October 2009 and the initial release of Cornerstone 1.0 in July 2008. Part of this period of introspection involved gathering some data on the Cornerstone development process.

We think these numbers tell an interesting story. On the one hand they illustrate how demanding user interface development can be. But they also demonstrate just how much effort we invest into making Cornerstone as good as it can possibly be.

Build System

Cornerstone 2 is a 64-bit Cocoa application developed with Xcode. It is comprised of numerous bundles and frameworks, targeting a number of different CPU architectures and operating system versions.

Xcode Projects 19
Frameworks 15
Loadable Bundles 17
Helper Applications 1
CPU Architectures 3 (PPC, x86, x86_64)
Operating System Versions 2 (Mac OS X 10.5 & 10.6)
Build Time (Release Build) ~10 minutes

The above build time does not include the various versions of Subversion included with Cornerstone.

Source Code

Cornerstone is primarily written in Objective-C. It also contains a couple of C++ classes and a handful of C functions.

Here is a breakdown of the amount of code in Cornerstone:

Files 2,116
Lines of Code 181,000
Lines of Comments 91,000

These figures were generated using cloc. Third-party libraries and frameworks were not included. Unit tests were also not included.

Subversion by Comparison

We thought it would be interesting to compare these figures against Subversion itself. Subversion is written almost exclusively in C. The figures (excluding unit tests and language bindings) are:

Files 462
Lines of Code 180,000
Lines of Comments 65,000

These figures were taken from Subversion 1.6.12 and include the svn, svnadmin and svnsync command-line tools as well as the mod_dav_svn Apache module (but not the dependencies such as APR, Neon, Serf and SQLite etc.). SWIG language bindings (e.g. for Python) are also not included.

We thought these numbers are particularly interesting as they show that Cornerstone 2 contains roughly the same amount of code as Subversion itself.

Structural Details

We did some further analysis to determine how Cornerstone is structured. We knew that Cornerstone is a fairly large project, but the sheer number of structural elements (classes, methods etc.) surprised us nonetheless.

Objective-C Classes & Categories 1,037
Class Methods 1,261
Instance Methods 12,180
Average Methods per Class 12.9
Average Lines per Method 13.5

More than 1,000 classes with over 13,000 methods! That’s a lot of code!

Version Control Statistics

Here are some figures on the number of revisions committed to our development repository over various periods of the project.

Revisions Committed up to 1.0 3,358
Revisions Committed 1.0 – 1.1 1,406
Revisions Committed 1.1 – 1.5 2,265
Revisions Committed 1.5 – 2.0 2,189
Total Revisions Committed 9,218

Those 9,218 revisions were committed between February 2007 and October 2010. That makes an average of 48.5 revisions per week, or almost 10 revisions per weekday.

Summary

Cornerstone is a fairly large project. Not huge (we’ve worked on much bigger), but pretty substantial nonetheless.

We wanted to provide some numbers to quantify this and hope these figures provide some insight into the scale of development effort that goes into Cornerstone.

A Walk in the Park. Taking a look back at one of the visuals created for Cornerstone 1.5.

Filed under: Cornerstone — Lawrence @ 4:06 am

For the release of Cornerstone 1.5 we wanted to design a set of marketing visuals that we hoped would be compelling. To achieve this lofty goal we convinced ourselves that we needed a new software application and so ended up purchasing Luxology’s Modo in the hope that it would inspire us (and just because we love 3D graphics).

The first task was to recreate the Cornerstone logo in 3D. Modo is a pretty heavyweight application and the learning curve for creating even simple shapes is pretty steep but after a fair bit of tinkering we nailed it. The most frustrating part was getting the boolean operations that ‘cut’ the ‘S’ shape out of the cornerstone to work properly.

After further tinkering we stumbled across Modo’s support for replicators and the ability to create lifelike fur materials. We thought these were superb and ended up applying them to our new pristine 3D logo with some really pleasing results.

In fact we thought it was so cool we tried to justify using it by associating it with various slogans such as ‘Cornerstone 1.5. It’s furry good’. Or ‘Cornerstone 1.5. Cuddly version control’.

None of these really worked, as we’re sure you agree!

Now we’re not the type of guys that give up too easily and obsessing about it further opened our eyes to a new type of fur: grass! Now grass is basically green fur, but what that meant was that we could now create a living, breathing miniature world out of our Cornerstone logo. The cornerstone block itself would be a garden or park and the ‘S’ would represent a path through the grass.

Adding the geometries for the figures, bin (or trash can), sign post, bench and tree along with the path texture and environment mapping really brought the scene to life. To enhance the miniature nature of the scene we applied a shallow depth of field or ’tilt-shift’ effect to the final render in post processing.

For version 1.5 we ended up using the slogan ‘Cornerstone 1.5. Finely crafted version control for the Mac.’ but for the sake of this article and because it’s my personal favorite I’ve updated the visual with the slogan you can see below.

A higher resolution version can be found here.

Release Notes for 2.0.3

Filed under: Cornerstone,Release Notes — Administrator @ 7:24 am

2.0.3 is a maintenance release which solves issues uncovered since the release of 2.0.

2.0.3 is a recommended update for all users running 2.0.

Resolved Issues

# Description
1010 The path type option (relative or absolute) has no effect when saving differences as a patch while the compare view is active. The option should be disabled and relative paths should always be used in the output file
1014 Cornerstone crashes after switch to the merge view for 1.4-format working copies checked out using the svn:// protocol
1015 Synchronization merging is not supported by Subversion 1.4 and should be disabled for 1.4 format working copies
1018 Software update-related preferences should be moved to a dedicated preference pane
1020 Exposé detects the compare view’s ‘Loading…’ bezel window resulting in incorrect Exposé layout
1022 Cornerstone crashes when a commit as part of a repository move/copy operation fails due to a blocking pre-commit hook

Release Notes for 2.0.2

Filed under: Cornerstone,Release Notes — Administrator @ 2:31 am

2.0.2 is a maintenance release which solves issues uncovered since the release of 2.0.

2.0.2 is a recommended update for all users running 2.0.

Resolved Issues

# Description
985 Resizing the main window to be smaller than the content in the default content view results in layout issues
987 Cornerstone raises an error when clicking ‘Show Contents’ for an empty text file
988 Path popover flickers if displayed when scrolling vertically in an externals window
991 Change Codesion banner text from ‘Cohesion in Code Control’ to ‘Cloud Services’
992 Add syntax highlighting support for the Lua programming language
994 Path popover in externals window is incorrectly redisplayed when scrolled back into view after previously being hidden
995 Path popover is incorrectly displayed when typing into a path field which has been scrolled out of view
996 Timeline’s popover tooltip is not hidden if the escape key is pressed to exit the view
997 Merge dry run errors (such as cancellations) that result from user interaction should not be written to the system log
998 Vertical scroll position of log message field in timeline popover tooltip is not always reset when switching between revisions
1001 The file browser’s search field drop down menu contains just a separator when no searches have been defined
1003 Disable auto-completion in the log message sheet for repository changes
1004 Cornerstone hangs when parsing LaTeX files which use the “\left[” or “\right[” commands
1005 Refreshing log view opened for a repository file or folder results in a “The folder is not a Subversion working copy” error
1006 Refreshing log view for working copy folder unnecessarily contacts repository resulting in the application blocking for a short time

Release Notes for 2.0.1

Filed under: Cornerstone,Release Notes — Administrator @ 12:42 am

2.0.1 is a maintenance release which solves high-priority issues uncovered since the release of 2.0.

2.0.1 is a recommended update for all users running 2.0.

Resolved Issues

# Description
989 An error occurs or Cornerstone crashes when registering license information on recent Macs with “Include anonymous system information” checked
990 Cornerstone fails to start on some Mac OS X 10.5.8 installations