Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Subversive New and Noteworthy"

(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
'''Also see the New & Noteworthy for:''' [[Subversive New and Noteworthy for Kepler|Kepler]], [[Subversive New and Noteworthy for Juno|Juno]], [[Subversive New and Noteworthy for Indigo|Indigo]], [[Subversive New and Noteworthy for Helios|Helios]], [[Subversive New and Noteworthy for Galileo|Galileo]]
+
'''Also see the New & Noteworthy for:''' [[Subversive New and Noteworthy for Mars|Mars]], [[Subversive New and Noteworthy for Luna|Luna]], [[Subversive New and Noteworthy for Kepler|Kepler]], [[Subversive New and Noteworthy for Juno|Juno]], [[Subversive New and Noteworthy for Indigo|Indigo]], [[Subversive New and Noteworthy for Helios|Helios]], [[Subversive New and Noteworthy for Galileo|Galileo]]
  
 
== Introduction  ==
 
== Introduction  ==
  
In this release we spent a great deal of effort in order to improve plug-in's stability and usability, but the main point was to rework SVN integration API, introduce SVN 1.8 support and provide access to repository administration API.  
+
Main target of this release is performance optimization and introduction of SVN 1.9 support.
  
== SVN 1.8 support  ==
+
== SVN 1.9 support  ==
 
+
   
Bugs [https://bugs.eclipse.org/bugs/show_bug.cgi?id=416782 416782], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=416783 416783], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=416784 416784], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=416796 416796], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=417768 417768] and [https://bugs.eclipse.org/bugs/show_bug.cgi?id=423701 423701]. SVN 1.8 support is a feature that is widely requested by community, since there are not just some new features were introduced, but the working copy format was made incompatible with the previous one yet again, which in turn breaks your work when you're trying to mix SVN 1.7 and SVN 1.8 clients usage.  
+
All the changes in SVN API that aren't regarded as experimental ones were reflected in SVN integration API. These changes are covered by the following tasks: [https://bugs.eclipse.org/bugs/show_bug.cgi?id=488472 488472], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=485022 485022], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=488453 488453], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=487220 487220] and [https://bugs.eclipse.org/bugs/show_bug.cgi?id=487147 487147]. For the exact details please check the following section.
  
 
== Rework of SVN integration API  ==
 
== Rework of SVN integration API  ==
  
Since there was a long history of changes in SVN integration API dictated by the changes in SVN functionality, there were inevitably a few of odd things that could make its usage somewhat annoying. So, while working on bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=417768 417768] we've made a lot of changes in order to make SVN API look more uniform, easy to understand and use.
+
The following API calls were added:
What was changed:
+
* setConfigurationEventHandler() - set an event handler that will be called every time the configuration is loaded by this client object
* ISVNConnector.Depth was moved level up and renamed to SVNDepth
+
* getConfigurationEventHandler() - returns a reference to the installed configuration event handler
* repository administration-related APIs were moved to the separate interface ISVNManager
+
* vacuum() - recursively vacuum a working copy, removing unnecessary data, including unversioned, externals, unused pristines, ignored and fixing time stamps
* ISVNConnector.commit now returns revisions of successfull commits through ISVNProgressMonitor
+
The following API calls now accept additional behaviour switches:
* in order to make naming conventions uniform, some methods were renamed:
+
* status()
** doImport -> importTo
+
* merge()
** doExport -> exportTo
+
* mergeTwo()
** logEntries -> listHistoryLog
+
* exportTo()
** info -> getInfo
+
* copyLocal()
** list -> listEntries
+
The following API calls signatures were changed:
** getProperties -> listProperties
+
* revert()
** getRevisionProperties -> listRevisionProperties
+
* cleanup()
* some methods were renamed/deleted due to changes in SVN API in order to better reflect their functions:  
+
* getInfo()
** removeProperty and setProperty were replaced with setPropertyLocal and setPropertyRemote
+
* streamFileContent()
** remove was split to removeRemote and removeLocal
+
* copyLocal()
** copy was split to copyRemote and copyLocal
+
* copyRemote()
** move was split to moveRemote and moveLocal
+
* annotate()
** merge, diff and diffStatus methods that were receiving two different URLs as their arguments were renamed to mergeTwo, diffTwo and diffStatusTwo accordingly.
+
The following previously deprecated API calls were removed:
* SVNNotification.NodeLock.isKnownStatus was renamed to SVNNotification.NodeLock.isStatusKnown
+
* mergeStatus()
* SVNNotification.NodeStatus.isKnownStatus was renamed to SVNNotification.NodeStatus.isStatusKnown
+
* merge() - the ones that were a counterpart to mergeStatus()
* SVNNotification.PerformedAction.isActionKnown was renamed to SVNNotification.PerformedAction.isKnownAction
+
Those modifications had no actual impact on the high-level command framework API.
  
== SVN repository management API support  ==
+
== Latest SVN client libraries included ==
  
Bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=417769 417769]. For a long time we've been using one of repository management functions in order to support UI functionality (see bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=333202 333202]). So, is there a reason why we shouldn't provide access to all the other features? Definitely not! Now there is ISVNManager interface which provides support for all the repository management functions.
+
Bugs [https://bugs.eclipse.org/bugs/show_bug.cgi?id=485024 485024], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=485025 485025], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=480040 480040], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=480039 480039] and [https://bugs.eclipse.org/bugs/show_bug.cgi?id=487147 487147]. SVN Kit 1.8.12 supports SVN 1.9 working copy. While the native clients provide full-featured support for SVN 1.9.  
  
== Latest SVN client libraries included  ==
+
== Changes in extension points ==
  
Bugs [https://bugs.eclipse.org/bugs/show_bug.cgi?id=434041 434041], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=434042 434042], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=430498 430498] and [https://bugs.eclipse.org/bugs/show_bug.cgi?id=430499 430499]. There were many issues fixed recently in the SVN support libraries and so, it's reasonable to update Subversive SVN Connectors with the most recent ones.  
+
* The IOptionProvider interface was changed so that it allows to add configuration options in the future in a way which won't lead to new API changes. All the options now are provided in a uniform way, using the following methods:
 +
** get() - returns the option's value by its name
 +
** getString() - returns the option's value which is of the String type (basically it is a wrapper to the "get" call)
 +
** has() - returns true if the option is set at all
 +
** is() - returns true if the option is set to true (basically it is a wrapper to the "get" call)
 +
* The ICommitActionFactory interface now allows integrations to completely manage the comment editor control and so, now it contains few more methods:
 +
** initCommentManager() - called upon the CommentComposite initialization
 +
** confirmMessage() - called each time "Ok" button is pressed
 +
** cancelMessage() - called each time "Cancel" button is pressed
 +
* The IModifiableCommentDialogPanel interface is now marked as deprecated, since its functions were completely overtook by the more functional ICommentManager interface.
  
 
== Usability improvements ==
 
== Usability improvements ==
  
Bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=419850 419850]. Since SVN provides versioning not just for the data in files but for the directory structure itself too, there is such a state as "replaced file" - it happens when you not just change the file content, but replace it as a whole. It is nice to know that a replacement took place, but it may be not so nice when you understand that you wanted to to change the file content by overwriting it, but instead lost the history of all the changes of the original file. So, while it is important to preserve SVN functionality there are some usability issues that should be solved and it is the reason why we've implemented the "Treat replacement as Edit" option which is present in commit dialog and preferences and allows you to override the default SVN behaviour.
+
There were request for new features by community which were solved in this version.
 +
Now there is a way to specify a default checkout location which may differ from the workspace location:
 +
 
 +
[[Image:Svn-project-structure.png]]
 +
 
 +
This allows you not to select the location manually each time you perform a checkout, in case you do not want to use the workspace location due to some reasons. Also the corresponding path selection control of the Checkout As wizard location page from now on will be enabled by default in order to lessen the amount of the actions required to change the location.
 +
 
 +
[[Image:Svn-checkout-as-location-page.png]]
 +
 
 +
Previously plug-in always ignored derived resources. But it seems sometimes it is useful to place them under source control. So, now we have the option to alter the behaviour:
 +
 
 +
[[Image:Svn-commit-options.png]]
 +
 
 +
Also, support form SVN 1.7-1.9 diff options was introduced into the "Create Patch" wizard:
 +
 
 +
[[Image:Svn-diff-options.png]]
 +
 
 +
== Performance ==
  
Bug [https://bugs.eclipse.org/bugs/show_bug.cgi?id=427577 427577]. We've always concentrated on protecting users from entering invalid data were it is possible, so that there won't be any misunderstanding on how the SVN works and so on. But there are always exceptions from the general rule. Many users have found a way to benefit from a little missuse of svn:ignore property. When you're using an invalid character at the start of the line the whole line is ignored by SVN client and so, you may use it as a comment. That is why we've added the option "Allow svn:ignore's mask validation".
+
Thanks to the community people's help, there were some major performance improvements including both: CPU and memory usage reduction. For details please check the bugs [https://bugs.eclipse.org/bugs/show_bug.cgi?id=489143 489143] and [https://bugs.eclipse.org/bugs/show_bug.cgi?id=489649 489649].  
  
 
[[Category:Subversive]]
 
[[Category:Subversive]]

Revision as of 14:26, 5 April 2016

Also see the New & Noteworthy for: Mars, Luna, Kepler, Juno, Indigo, Helios, Galileo

Introduction

Main target of this release is performance optimization and introduction of SVN 1.9 support.

SVN 1.9 support

All the changes in SVN API that aren't regarded as experimental ones were reflected in SVN integration API. These changes are covered by the following tasks: 488472, 485022, 488453, 487220 and 487147. For the exact details please check the following section.

Rework of SVN integration API

The following API calls were added:

  • setConfigurationEventHandler() - set an event handler that will be called every time the configuration is loaded by this client object
  • getConfigurationEventHandler() - returns a reference to the installed configuration event handler
  • vacuum() - recursively vacuum a working copy, removing unnecessary data, including unversioned, externals, unused pristines, ignored and fixing time stamps

The following API calls now accept additional behaviour switches:

  • status()
  • merge()
  • mergeTwo()
  • exportTo()
  • copyLocal()

The following API calls signatures were changed:

  • revert()
  • cleanup()
  • getInfo()
  • streamFileContent()
  • copyLocal()
  • copyRemote()
  • annotate()

The following previously deprecated API calls were removed:

  • mergeStatus()
  • merge() - the ones that were a counterpart to mergeStatus()

Those modifications had no actual impact on the high-level command framework API.

Latest SVN client libraries included

Bugs 485024, 485025, 480040, 480039 and 487147. SVN Kit 1.8.12 supports SVN 1.9 working copy. While the native clients provide full-featured support for SVN 1.9.

Changes in extension points

  • The IOptionProvider interface was changed so that it allows to add configuration options in the future in a way which won't lead to new API changes. All the options now are provided in a uniform way, using the following methods:
    • get() - returns the option's value by its name
    • getString() - returns the option's value which is of the String type (basically it is a wrapper to the "get" call)
    • has() - returns true if the option is set at all
    • is() - returns true if the option is set to true (basically it is a wrapper to the "get" call)
  • The ICommitActionFactory interface now allows integrations to completely manage the comment editor control and so, now it contains few more methods:
    • initCommentManager() - called upon the CommentComposite initialization
    • confirmMessage() - called each time "Ok" button is pressed
    • cancelMessage() - called each time "Cancel" button is pressed
  • The IModifiableCommentDialogPanel interface is now marked as deprecated, since its functions were completely overtook by the more functional ICommentManager interface.

Usability improvements

There were request for new features by community which were solved in this version. Now there is a way to specify a default checkout location which may differ from the workspace location:

Svn-project-structure.png

This allows you not to select the location manually each time you perform a checkout, in case you do not want to use the workspace location due to some reasons. Also the corresponding path selection control of the Checkout As wizard location page from now on will be enabled by default in order to lessen the amount of the actions required to change the location.

Svn-checkout-as-location-page.png

Previously plug-in always ignored derived resources. But it seems sometimes it is useful to place them under source control. So, now we have the option to alter the behaviour:

Svn-commit-options.png

Also, support form SVN 1.7-1.9 diff options was introduced into the "Create Patch" wizard:

Svn-diff-options.png

Performance

Thanks to the community people's help, there were some major performance improvements including both: CPU and memory usage reduction. For details please check the bugs 489143 and 489649.

Back to the top