SmartSVN 14 Keyboard Shortcuts (Accelerators) Not Migrated Correctly

31 views
Skip to first unread message

Michael Ryan

unread,
Oct 31, 2020, 5:36:37 PM10/31/20
to SmartSVN
I recently updated to SmartSVN 14, and all my previously assigned custom keyboard shortcuts failed to work.

The accelerators were assigned in SmartSVN 11.0.4 (or earlier), and they were saved in the "accelerators.xml" file under "%APPDATA%\SmartSVN\11".

According to the SmartSVN 1.12.0-rc1 changelog, the settings files are now stored in YMLL instead of XML. The location of the new "accelerators.yml" file is "%APPDATA%\SmartSVN\14".

Before making any changes to SmartSVN settings, I examined that file and saw all my previous custom shortcuts stored in the "workingCopy" object, however when I began re-assigning those shortcuts, the updates were stored in the "global" object.

Its seems like the v11 -> v14 settings migration process placed all the custom accelerator assignments in "workingCopy" when they should be stored in "global". If that is the case, this appear to be a bug.

What is the purpose of "workingCopy"? I see no way to specify where an accelerator assignment should be stored in the SmartSVN Preferences UI.

Original accelerators.xml:
<?xml version="1.0" encoding="UTF-8"?>
<obj key="Accelerators" type="@AllAccelerators">
<obj key="annotateAccelerators" type="_NULL_"/>
<obj key="changeReportAccelerators" type="@KeyStrokes">
<collection key="id-keystroke-mapping" type="Object"/>
</obj>
<obj key="compareAccelerators" type="_NULL_"/>
<obj key="comparePropertiesAccelerators" type="@KeyStrokes">
<collection key="id-keystroke-mapping" type="Object"/>
</obj>
<obj key="conflictSolverAccelerators" type="_NULL_"/>
<obj key="mainFrameAccelerators" type="@KeyStrokes">
<collection key="id-keystroke-mapping" type="Object">
<obj type="@KeyStroke">
<prop key="id" type="String" value="changeset-move-to-other"/>
<prop key="keystroke" type="String" value="CTRL+M"/>
</obj>
<obj type="@KeyStroke">
<prop key="id" type="String" value="compare"/>
<prop key="keystroke" type="String" value="CTRL+N"/>
</obj>
<obj type="@KeyStroke">
<prop key="id" type="String" value="compare-two-files"/>
<prop key="keystroke" type="String" value="CTRL+SHIFT+N"/>
</obj>
<obj type="@KeyStroke">
<prop key="id" type="String" value="compare-with-head"/>
<prop key="keystroke" type="String" value="CTRL+H"/>
</obj>
<obj type="@KeyStroke">
<prop key="id" type="String" value="compare-with-previous"/>
<prop key="keystroke" type="String" value="CTRL+P"/>
</obj>
<obj type="@KeyStroke">
<prop key="id" type="String" value="compare-with-revision"/>
<prop key="keystroke" type="String" value="CTRL+SHIFT+P"/>
</obj>
<obj type="@KeyStroke">
<prop key="id" type="String" value="findAction"/>
<prop key="keystroke" type="String" value="CTRL+SHIFT+F"/>
</obj>
<obj type="@KeyStroke">
<prop key="id" type="String" value="window-new"/>
<prop key="keystroke" type="String" value="ALT+CTRL+SHIFT+N"/>
</obj>
</collection>
</obj>
<obj key="logAccelerators" type="@KeyStrokes">
<collection key="id-keystroke-mapping" type="Object"/>
</obj>
<obj key="revisionGraphAccelerators" type="_NULL_"/>
<obj key="serverOutputAccelerators" type="_NULL_"/>
<obj key="dryMergeAccelerators" type="_NULL_"/>
<obj key="applyPatchAccelerators" type="_NULL_"/>
<obj key="compareUrlsAccelerator" type="_NULL_"/>
<obj key="repositoryBrowserAccelerators" type="@KeyStrokes">
<collection key="id-keystroke-mapping" type="Object"/>
</obj>
<obj key="transactionFrameAccelerators" type="_NULL_"/>
</obj>


New accelerators.yml (after the accelerators were re-assigned):
changeReportAccelerators:
  id-keystroke-mapping: []
comparePropertiesAccelerators:
  id-keystroke-mapping: []
logAccelerators:
  id-keystroke-mapping: []
repositoryBrowserAccelerators:
  id-keystroke-mapping: []
global:
- {action: changeset-move-to-other, keyStroke: CTRL+M}
- {action: compare, keyStroke: CTRL+N}
- {action: compare-two-files, keyStroke: CTRL+SHIFT+N}
- {action: compare-with-head, keyStroke: CTRL+H}
- {action: compare-with-previous, keyStroke: CTRL+P}
- {action: compare-with-revision, keyStroke: CTRL+SHIFT+P}
- {action: findAction, keyStroke: CTRL+SHIFT+F}
- {action: window-new, keyStroke: ALT+CTRL+SHIFT+N}
workingCopy:
- {action: changeset-move-to-other, keyStroke: CTRL+M}
- {action: compare, keyStroke: CTRL+N}
- {action: compare-two-files, keyStroke: CTRL+SHIFT+N}
- {action: compare-with-head, keyStroke: CTRL+H}
- {action: compare-with-previous, keyStroke: CTRL+P}
- {action: compare-with-revision, keyStroke: CTRL+SHIFT+P}
- {action: findAction, keyStroke: CTRL+SHIFT+F}
- {action: window-new, keyStroke: ALT+CTRL+SHIFT+N}


SmartSVN Support

unread,
Nov 1, 2020, 7:27:41 AM11/1/20
to smar...@googlegroups.com
Hi Michael,

Thanks for reporting this bug. Please use Help | Check for Latest Build to get 11018, exit SmartSVN. Copy accelerators.Xml from the version 11 and delete accelerators.Yml. This should reimport the shortcuts correctly.

Note, that since SmartSVN 14 uses a unified set of shortcuts for all windows, contradicting shortcuts are not necessarily imported as expected.

--
Best regards,
Thomas Singer
syntevo GmbH
http://www.syntevo.com
> --
> You received this message because you are subscribed to the Google Groups
> "SmartSVN" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> smartsvn+u...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/smartsvn/49c361a6-ea45-4b5b-b090-f02cb024ba0dn%40googlegroups.com.
>
Reply all
Reply to author
Forward
0 new messages