Use consistent xml element order on save to make version control easier
J
James. doran
started a topic
over 1 year ago
I've struggled to version control a RoyalTS config file because the xml elements change order randomly. This makes it very difficult to see the actual change when using a tool like git and sharing the config with others.
My idea is to simply order the xml elements under each root note
by name ascending. This way a lot of the configuration wouldn’t change in the
way it currently does. It should be a case of running an OrderBy() as part of
the save.
James. doran
I've struggled to version control a RoyalTS config file because the xml elements change order randomly. This makes it very difficult to see the actual change when using a tool like git and sharing the config with others.
My idea is to simply order the xml elements under each root note by name ascending. This way a lot of the configuration wouldn’t change in the way it currently does. It should be a case of running an OrderBy() as part of the save.
For example, under a connection element:
<RoyalRDSConnection>
<ID>b3fa4e7c-436b-4925-bf35-08234e03c485</ID>
<Name>Server1</Name>
<Modified>06/29/2023 23:14:19.798</Modified>
<Created>06/29/2023 23:14:19.798</Created>
<ModifiedBy>James</ModifiedBy>
<CreatedBy>James</CreatedBy>
<PositionNr>2</PositionNr>
<IsConnectionTemplate>False</IsConnectionTemplate>
<AutomaticallyCalculateScaleFactor>True</AutomaticallyCalculateScaleFactor>
<ColorDepth>24</ColorDepth>
<ColorFromParent>False</ColorFromParent>
<ConnectToAdministerOrConsole>False</ConnectToAdministerOrConsole>
<CredentialFromParent>True</CredentialFromParent>
<CredentialId>00000000-0000-0000-0000-000000000000</CredentialId>
<CredentialOmitDomain>False</CredentialOmitDomain>
<CustomImageList>{}</CustomImageList>
<DesktopHeight>0</DesktopHeight>
<DesktopWidth>0</DesktopWidth>
<Favorite>False</Favorite>
<LocalZoom>False</LocalZoom>
<ParentID>b276350b-ff70-407c-adb8-a15fe74effe4</ParentID>
<RDPPort>3389</RDPPort>
<ScaleFactor>100</ScaleFactor>
<SmartReconnect>False</SmartReconnect>
<SmartSizing>False</SmartSizing>
<URI>Server1.local</URI>
<UseGlobalPlugInWin>True</UseGlobalPlugInWin>
</RoyalRDSConnection>
Order the child elements by their element name:
<RoyalRDSConnection>
<AutomaticallyCalculateScaleFactor>True</AutomaticallyCalculateScaleFactor>
<ColorDepth>24</ColorDepth>
<ColorFromParent>False</ColorFromParent>
<ConnectToAdministerOrConsole>False</ConnectToAdministerOrConsole>
<Created>06/29/2023 23:14:19.798</Created>
<CreatedBy>James</CreatedBy>
<CredentialFromParent>True</CredentialFromParent>
<CredentialId>00000000-0000-0000-0000-000000000000</CredentialId>
<CredentialOmitDomain>False</CredentialOmitDomain>
<CustomImageList>{}</CustomImageList>
<DesktopHeight>0</DesktopHeight>
<DesktopWidth>0</DesktopWidth>
<Favorite>False</Favorite>
<ID>b3fa4e7c-436b-4925-bf35-08234e03c485</ID>
<IsConnectionTemplate>False</IsConnectionTemplate>
<LocalZoom>False</LocalZoom>
<Modified>06/29/2023 23:14:19.798</Modified>
<ModifiedBy>James</ModifiedBy>
<Name>Server1</Name>
<ParentID>b276350b-ff70-407c-adb8-a15fe74effe4</ParentID>
<PositionNr>2</PositionNr>
<RDPPort>3389</RDPPort>
<ScaleFactor>100</ScaleFactor>
<SmartReconnect>False</SmartReconnect>
<SmartSizing>False</SmartSizing>
<URI>Server1.local</URI>
<UseGlobalPlugInWin>True</UseGlobalPlugInWin>
</RoyalRDSConnection>
This doesn’t break the schema, but keeps things more consistent between saves.
Thanks and keep up the good work on this excellent tool
James