diff --git a/changelogs/changelog-4.txt b/changelogs/changelog-4.txt
new file mode 100644
index 0000000..71b4e4d
--- /dev/null
+++ b/changelogs/changelog-4.txt
@@ -0,0 +1,3689 @@
+********************************************************************************
+*                            Subversive Change Log                             *
+*                                                                              *
+* Subversive - a brand new Eclipse Client for Subversion (SVN)                 *
+* See details at http://www.eclipse.org/subversive                             *
+********************************************************************************
+
+Now the Subversive project was moved to Eclipse.org and new version numbers was introduced. 
+Change Log's for older versions still present in this file.
+
+Version 4.0.0.I20160408-1700 [08 April 2016]
+
+Fixes:
+ * ID-SD9I4 Unable To commit - SVN: '0x0040011a: Call Menu Action' operation finished with error: Argument cannot be null (bug 491153)
+ * Deleted files aren't shown in Synchronize view (bug 491078)
+ 
+--------------------------------------------------------------------------------
+
+Version 4.0.0.I20160314-1700 [14 March 2016]
+
+Features:
+ * Set SVN Kit 1.8 as default(initial) connector (bug 489643)
+ * Refactor IOptionProvider so that adding another option does not bring an interface change next time (bug 489644)
+ * Add a setting, that allows to commit derived resources (bug 480041)
+ * Need an extension point to provide comment templates programmatically (bug 419093)
+
+Fixes:
+ * SVNRemoteStorage: resource change listener jobs cause OOM (bug 489143)
+ * Ignored files shown as outgoing additions (bug 392750)
+ * Extensive SVN update checks for generated code (bug 489649)
+ * Refactor copy/pasted queue code in SVNRemoteStorage (bug 489664)
+ 
+--------------------------------------------------------------------------------
+
+Version 4.0.0.I20160226-1700 [26 February 2016]
+
+Features:
+ * SVN Kit 1.8.12: support for Subversion 1.9 new FSFS repository format. (bug 487147)
+ * Parse certificate message passed as parameter by SVN 1.8 and earlier clients in order to provide support for SVN 1.9 API (bug 487220)
+ * "Trust SSL server certificate" dialog should distinguish error codes provided by SVN 1.9 API (bug 488453)
+ * Introduce SVN 1.9 API support (bug 485022)
+ * Enable SVN 1.9 features in SVN 1.9 based connector (bug 488472)
+ * Ensure there is no compatibility issues between plug-in versions with different SVN API supported (bug 488653)
+ * Refactor and remove deprecated merge API calls (bug 488677)
+
+Fixes:
+ * Move 'Create Patch' action in pop-up menu next to 'Apply Patch' (bug 486907)
+ * No content for remote variant of deleted file in Synchronize View (bug 488683)
+ 
+--------------------------------------------------------------------------------
+
+Version 3.0.4.I20160131-1700 [31 January 2016]
+
+Features:
+ * Make 'Project Structure' preferences page more compact (bug 486862)
+ * SVN Plugin does not provide option to set default checkout directory (bug 486009)
+
+Fixes:
+ * Typo in "Getting Started" documentation (bug 485185)
+ * Information in "Trust server certificate" dialog is hard to read (bug 485344)
+ * "Compare with" dialogs exit with "A path under version control is needed for this operation" error message (bug 485622)
+ * An exception occurs while moving a resource into a package whose SVN text status is set to "Deleted" (bug 486496)
+ * "Inappropriate resource state" exception while adding replaced but not yet added folder to source control (bug 486835)
+ 
+--------------------------------------------------------------------------------
+
+Version 3.0.3.I20151228-1700 [28 December 2015]
+
+Fixes:
+ * Compare with another branch shows files with no difference [SVN 1.7 or older] (bug 326694)
+ * Weird behavior of the "Compare with branch" feature (bug 484929)
+	+ special thanks to Florent Angebault
+ * Deadlock is possible within RelocatedProjectHelper (bug 483402)
+ * Prompt that asks what to do after project relocation shown in a loop forever (bug 482565)
+ * IConnectedProjectInformation is an unneeded interface (bug 483232)
+ * Remove unused code in the InaccessibleLocationDataHelper class (bug 483231)
+ * FindRelatedProjectsOperation should not activate project initialization (bug 483230)
+ * Remove outdated project-to-location management code (bug 483229)
+ * NPE in CreatePatchWizard [ID-AW5HY] (bug 481725)
+ * Unhandled event loop exception org.eclipse.team.svn.ui.panel.local.EditTreeConflictsHelper.getSrcUrl (bug 480521)
+ 
+--------------------------------------------------------------------------------
+
+Version 3.0.2.I20151028-1700 [28 October 2015]
+
+Features:
+ * Provide interface to use SVN 1.8 diff output options (bug 476177)
+
+Fixes:
+ * NPE in CompareWithLatestRevisionAction [ID-D9JJ1] (bug 480129)
+ * Attempted to beginRule: P/xxxx, does not match outer scope rule in SVNRemoteStorage [ID-HTT9T] (bug 325407)
+ * NPE in SVNRepositoryLocation.asRepositoryContainer [ID-W6HFD] (bug 477111)
+ * Grammatical error (bug 476637)
+ * Unversioned deleted files may reappear in patch dialog if called from Synchronize View (bug 476171)
+ 
+--------------------------------------------------------------------------------
+
+Version 3.0.1.I20150722-1700 [22 July 2015]
+
+Fixes:
+ * StringIndexOutOfBoundsException in bugtraq in History View (bug 471473)
+ * Reduce I/O amount produced by FileReplaceListener (bug 473193)
+ * Limit SVN status cache refresh depth when possible (bug 473161)
+ * Excessive SVN status reloads for updates, revert, commits etc. (bug 473029)
+ * Improve status cache performance (bug 473028)
+ * Status refresh for files does unnecessary work that significantly reduces performance on large projects (bug 473026)
+ * cant't save file or build waiting for user operation (bug 472752)
+ * Possible resource leak in UI (bug 471963)
+ * If the folder is unversioned, Subversive tries to load it more than once (bug 471205)
+ * Symbolic links and external resources interfere with each other in UI (bug 471204)
+ * There should be a way to add to SVN the intermediate folders produced by svn:externals (bug 471188)
+ * Obstructed externals (bug 465574)
+ * Diff viewer preference page has wrong button sizes in Mars (bug 471161)
+ * Subversive Label Decorations Preferences dialog broken (bug 470990)
+ * Enable team context menu actions on working set (bug 470552)
+ 
+--------------------------------------------------------------------------------
+
+Version 3.0.0.I20150529-1700 [29 May 2015]
+
+Features:
+ * "set keywords" grayed out for folders (no recursion allowed) (bug 467303)
+ 
+Fixes:
+ * Improve RefreshResourcesOperation performance (bug 465920)
+ * NullPointerException on SVN history view (JFace plugin) (bug 466983)
+ * ArrayIndexOutOfBoundsException in UpdateSubscriber [ID-OJ8UD] (bug 467720)
+ * NumberFormatException while performing "Synchronize with repository" [ID-FE6ZC] (bug 465812)
+ * File content comparison editor shouldn't be opened for conflicted folders [ID-HJ1S2] (bug 468639)
+ 
+--------------------------------------------------------------------------------
+
+Version 3.0.0.I20150317-1700 [17 March 2015]
+
+Features:
+ * Refactor SVN API support [use strict types for constant enumerations, improve error codes etc.] (bug 462326)
+ * Update plug-ins API compatibility version (bug 462338)
+ * Update integrations according to API changes (bug 462327)
+ 
+Fixes:
+ * Useless SVNProperty conversion in AddToSVNWithPropertiesOperation (bug 461199)
+ * Problems using blank spaces for a folder. (bug 459010)
+ 
+--------------------------------------------------------------------------------
+
+Version 2.0.4.I20150123-1700 [23 January 2015]
+
+Features:
+ * Add typical SVN errors description and possible solutions to help pages (bug 457516)
+ 
+Fixes:
+ * Can't install Subversive SVN Integration for the M2E Project v2.0.3 (bug 457869)
+ * NPE at CopyRemoteResourcesToWcOperation [ID-QI8GK] (bug 457835)
+ * JRE 1.6 incompatibility [ID-HK8DF] (bug 456334)
+ * Automatic properties do not get applied to new files (bug 456640)
+ 
+--------------------------------------------------------------------------------
+
+Version 2.0.3.I20141224-1700 [24 December 2014]
+
+Features:
+ * Improve status caching with SVN 1.7/1.8 connectors (bug 449932)
+ * Double click on folders in Compare Editor should expand/collapse them (bug 449598)
+ * There is no way to specify a multi-line property in automatic properties configuration (bug 445999)
+ * Unable to install Subversive via Eclipse Marketplace [add "Get Connectors" button into preferences] (bug 442249)
+ * Move Subversive m2e integration plugin to eclipse.org (bug 455407)
+ 
+Fixes:
+ * There is a secure storage's password prompt when editing repo props even if the "save password" option is not set (bug 453465)
+ * [KeyBindings] SVN Sync and Commit keybindings no longer work (bug 309074)
+ * Subversive / Maven shortcuts conflict (bug 439499)
+ * [KeyBindings] SVN Sync and Commit keybindings no longer work (bug 309074)
+ * Symlinks treated incorrectly (bug 213197)
+ * Mistake in SVNEntryStatus documentation (bug 452715)
+ * Team->Add to SVN action's enablement is wrong for externally linked resources (bug 452714)
+ * Team->Show History action's enablement is wrong for unversioned resources (bug 452710)
+ * No content for conflicting additions in 3-way compare editor (bug 449601)
+ * Compare editor shouldn't try fetching content of folders as it does for files (bug 449597)
+ * Compare with: Importing new file problem (bug 423308)
+ * FileReplaceListener does not work in Luna (bug 449550)
+ * AddToSVNOperation.removeFromParentIgnore() breaks the "add to SVN" functionality [ID-OBDOR] (bug 446184)
+ * NPE if WorkspaceRoot is passed into FileUtility.getResourcePath() [ID-S7NIJ] (bug 445453)
+ * Automatic properties are processed wrongly when ; or = characters are used as value parts (bug 446000)
+ * In automatic properties configuration dialog only first = should separate name and value (bug 445997)
+ * In automatic properties configuration dialog ; character in a value part should not have a special meaning (bug 445998)
+ * The automatic properties editor validation does not validate the name and the value properly (bug 446001)
+ * Cleanup Subversive-M2E integration's code (bug 456134)
+ * Cancel button is disabled on "Validate Repository Location" progress dialog (bug 455204)
+ * Preserve compatibility with the previous keybindings scheme [Default] (bug 456139)
+ 
+--------------------------------------------------------------------------------
+
+Version 2.0.1.I20140907-1700 [07 September 2014]
+
+Features:
+ * Refactor Log should be written into console (bug 211245)
+ * Update all SVN operations console output (bug 443135)
+ * Add API to convert SVN command options into command-line counterparts (bug 443132)
+ 
+Fixes:
+ * There is an exception when unversioned resources selected for synchronizing [ID-OX0F5] (bug 426049)
+ * opening a closed project with svnkit 1.3.8 working copy with JavaHL 1.7 connector freezes Eclipse (bug 440297)
+ * bugtraq:url does not work with URL starting with / (bug 441393)
+ * Create patch with workspace root produces wrong result (bug 437106)
+ * Wrong enablement in Create Patch wizard for nested projects (bug 441039)
+ * FileNotFoundException while trying to save an imported from repository and not existing locally file in "Compare with revision" editor [ID-WQB6L] (bug 438953)
+ * When Project Explorer contains semanticfs then the error "SVN: '0x0040011a: Call Menu Action' operation finished with error: The resource is inaccessible" occurs on commit (bug 437623)
+ 
+--------------------------------------------------------------------------------
+
+Version 2.0.0.I20140609-1700 [09 June 2014]
+
+Features:
+ * Document SVN API calls (bug 417770)
+ 
+Fixes:
+ * Refreshing a folder shared with SVN should force Subversive to refresh its state, even if the .svn folder is outside that folder (bug 435601)
+ * Update SVN Cache locks the work space (bug 436727)
+ 
+--------------------------------------------------------------------------------
+
+Version 2.0.0.I20140519-1700 [19 May 2014]
+
+Fixes:
+ * If performing changes via external program, Subversive does not show actual status (bug 430056)
+ * Delete file from SVN not work always (bug 434944)
+ * Java Refactoring + SVN: Selecting "Cancel" in resource locking dialog leads to empty error dialog (bug 433208)
+ 
+--------------------------------------------------------------------------------
+
+Version 2.0.0.I20140501-1700 [01 May 2014]
+
+Features:
+ * Add support for Eclipse-SourceReferences header (bug 315011)
+   + special thanks to Michael Schaufelberger
+
+Fixes:
+ * Subversive crashes ID-PPJQ5 (bug 432930)
+ * ArrayOutOfBoundsException in IgnoreMethodPanel [ID-MFS28] (bug 433287)
+ * ResourceException in SaveProjectMetaOperation [ID-IE0RW] (bug 432177)
+ * Subversive produces unnecessary SVN error log entries for eclipse projects. (bug 431237)
+ * A virtual folder in project will cause "The resource is inaccessible" (bug 430349)
+ 
+--------------------------------------------------------------------------------
+
+Version 2.0.0.I20140309-1700 [09 March 2014]
+
+Features:
+ * Allow freeform in SVN:IGNORE (bug 427577)
+
+Fixes:
+ * Improve bug reporting code in SVNUtility.getWCRoot [ID-PH38V] (bug 428141)
+ * NullPointerException in "Merge properties" (bug 428253)
+ * NPE in EditTreeConflictsPanel [ID-LZRIO] (bug 425263)
+ * Ignored files shown as outgoing additions (bug 392750)
+ * There're unnecessary accesses to the file system while loading information on versioned resources (bug 427184)
+ * There is an exception in Synchronize View when handling an obstructed resource of unexpected kind (dir instead of file) (bug 427183)
+ * GetPropertiesOperation fails for deleted resource with SVN Kit 1.8.3 connector (bug 427093)
+ * SVN 1.7 working copy format detection fails with SVN 1.8.3 connector (bug 427092)
+ * Cannot commit package deletion (greyed out) (bug 426706)
+ 
+--------------------------------------------------------------------------------
+
+Version 2.0.0.I20131101-1700 [01 November 2013]
+
+Features:
+ * Update SVN operations framework in order to support SVN 1.8 API (bug 423701)
+ * Provide access to SVN repository management API (bug 417769)
+ * Introduce SVN 1.8 API support (bug 417768)
+ * "Treat replacement as edit" should be true by default and should be represented in preferences (bug 419850)
+
+Fixes:
+ * Button position should comply Linux "convention": positive button on the right-most (bug 422826)
+ * NPE in PropertyCompareInput [ID-KULS6] (bug 422623)
+ * Connectors discovery fails with exceptions on MacOS X (bug 418768)
+ * Synchronize view mistakingly treats workspace root as versioned resource [ID-NYQUI] (bug 417835)
+ * FileNotFoundException in FileUtility.copyFile [ID-JJCVG] (bug 421251)
+ * Deleting and replacing a resource is a SVN delete/add instead of a modify (bug 276018)
+	+ special thanks to Forest Johnson
+ * Undo Delete result in replaced content (bug 419368)
+ * NPE when using "Create Patch" in history view (bug 419563)
+ * Subversive doesn't allow to use IPv6 addresses as host names (bug 418301)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.1.1.I20130816-1700 [16 August 2013]
+
+Fixes:
+ * JavaHL Win64 connector isn't shown by the discovery feature (bug 411957)
+ * JavaHL Win32 connector is shown on Win64 platform by the discovery feature (bug 411958)
+ * SVNUtility.getSVNInfo() isn't compatible with SVN 1.7 [ID-KOSUR] (bug 412253)
+ * Copying should be cancelled without getting an error report when destination resource exists on disk but not in sync with workspace [ID-IDGZI] (bug 411480)
+ * OperationCanceledException isn't handled properly (bug 412609)
+ * "Create Patch" wizards show the UTF-8 encoding twice current platform uses UTF-8 by default (bug 414386)
+ * "Create patch" wizard should include each resource into the patch file just once when nested projects are used (bug 414388)
+ * Base revision's content is empty for a file deleted under the SVN 1.7.x client (bug 414400)
+ * "unversioned" string in the ResourceVariant class is not internationalized (bug 414401)
+ * Deleted file's revision is shown incorrectly with SVN 1.7.x client (bug 414406)
+ * Include SVN Kit 1.7.10 version (bug 414897)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.1.0.I20130527-1700 [27 May 2013]
+
+Fixes:
+ * ClassCastException in time of tag operation (bug 409021)
+ * Repository location: "normalize URL" function does not handle file:/// protocol correctly (bug 409234)
+ * Update switches subfolder back to trunk from branch (bug 406580)
+ * "Apply incoming changes" on "deleted/deleted" generates an error (bug 407631)
+ * When there's a tree conflict, "Edit conflicts" is also enabled and does nothing (bug 407633)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.0.1.I20130507-1700 [07 May 2013]
+
+Features:
+ * Add "Header" keyword support for svn:keywords property (bug 404239)
+ 
+Fixes:
+ * Auto lock error with maven hierarchy [ID-X5CXN] (bug 374591)
+ * Compare with base: edits not detected (bug 297717)
+ * Subversive keeps to show incoming changes for files and directories after all incoming changes have been updated (bug 403043)
+ * Sometime annotate fails for files in branches (bug 406726)
+ * "Create Patch" creates patch in UTF-8 (without BOM) irrespective of the file encoding (Windows-1252) (bug 404713)
+ * NPE in SVNRemoteStorage.asRepositoryResource [ID-BYM4U] (bug 404979)
+ * NPE in BuiltInAnnotate [ID-IQ1WJ] (bug 404252)
+ * Enablements of Compare and Replace Actions do not respect ResouceMappings (bug 403200)
+ * Disconnect operation fails when project was unmapped from repository provider prior to disconnect operation [ID-LOU8E] (bug 403385)
+ * NPE in LoggedOperation.setConsoleStream [ID-TM2AH] (bug 403644)
+ * Move ActiveChangeSetManager accessor into the SVN Core plug-in (bug 403980)
+ * Move startup extension into a separate plug-in (bug 403975)
+ * Subversive shows empty post-commit warning window after every commit (bug 402491)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.0.1.I20130301-1700 [01 March 2013]
+
+Features:
+ * Improvement: add extension point for declaring custom properties (bug 306806)
+ * Set Property dialog should filter/set properties based on resource type (file or folder) (bug 401612)
+ * Display post-commit error messages to the user (bug 354843)
+ * Provide support for post-commit hook's messages (bug 400575)
+ * Improve Team Annotate with useful default revision values (bug 296239)
+ 
+Fixes:
+ * After modifying properties in "Compare properties" editor, Synchronize View isn't refreshed (bug 401619)
+ * NPE when synchronizing workspace (bug 401898)
+ * Connector install dialog does not open when SVN project exists (bug 401596)
+ * Use the PredefinedProperty class in order to define custom properties (bug 401047)
+ * Move revision properties descriptions into the PredefinedPropertySet class (bug 401041)
+ * Move validation regexp into the PredefinedProperty class (bug 401036)
+ * Use standard internationalization code for a property descriptions (bug 401034)
+ * Add post-commit hook's messages support for 'Mark as Merged' and 'Override and Commit' actions (bug 400583)
+ * Improve annotation UI's performance and usability (bug 400558)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.0.0.I20130122-1700 [22 January 2013]
+
+Features:
+ * Update JavaHL binaries to 1.7.8 (bug 398671)
+ * Use SVN Kit 1.7.8 (bug 398669)
+ 
+Fixes:
+ * Spelling error in the method name SVNTeamUIPlugin.getModelC(h)angeSetManager (bug 398654)
+ * Negative revision number exception when all the lines are skipped by SVN annotate [ID-I71M1] (bug 398565)
+ * several texts are not externalized in preference (bug 398261)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.0.0.I20121228-1700 [28 December 2012]
+
+Features:
+ * Allow to use "Core Configuration Options" extension point (bug 389933)
+ * SVN Connectors failed to install in Eclipse 64 bit for RCP and RAP Developers [Win64 support]. (bug 376317)
+ * Enable error logging for SVN lightweight decorator (bug 395971)
+ * "Clear selection" in the commit dialog unchecks all the items, not only the selected ones (bug 370254)
+ * Human/Numeric ordering option for branches e tags (bug 390467)
+ 
+Fixes:
+ * Being prompted too aggressively to install SVN connectors (bug 319292)
+ * Charset failure when Applying Patch to a resource (bug 363289)
+ * Got wrong contents for remote file in Subversive (bug 375633)
+ * Text selection extremely slow in C++ editor (bug 350306)
+ * JavaHL connector fails to commit svn:ignore property (bug 395063)
+ * Some tree conflicts caused by merge won't be shown and won't allow user to commit merged changes (bug 395295)
+ * Checkout of a java project from Subversion needs to mangled project name (bug 394761)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.0.0.I20121109-1700 [09 November 2012]
+
+Features:
+ * Update JavaHL binaries to 1.7.7 (bug 393486)
+ * Use SVN Kit 1.7.6 (bug 393484)
+ 
+Fixes:
+ * Format code on a source directory with some hundreds of files: takes ages [slowed down by SVN change sets] (bug 392979)
+ * Default change set is not refreshed in the Synchronize View after it is changed (bug 393483)
+ * Mylyn active change set shouldn't be removed automatically when all its changes were moved to another change set (bug 393481)
+ * If Mylyn task is active but empty it does not reappear automatically after IDE restart in SVN change-sets (bug 393480)
+ * Updating an operating system locked file corrupts the project repository (bug 392955)
+ * ampersand in project name (bug 392049)
+ * "Upgrade working copy" action is always disabled for SVN Kit 1.7.5 (bug 393431)
+ * After latest update, icons in synchronize view sometimes not shown (bug 392884)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.0.0.I20121013-1700 [13 October 2012]
+
+Fixes:
+ * Synchronize window showing add icon decoration instead of delete icon for outgoing change Eclipse 4.2 (bug 388445)
+ * "Edit conflicts" does nothing with a merge conflict caused by properties (bug 390168)
+ * Property change statuses are shown incorrectly when incoming/outgoing deletion is involved (bug 390171)
+ * "Workbench has not been created yet" exception after "out of PermGen space" crash (bug 390177)
+ * "Expand All" is in wrong toolbar group in the "Models" Synchronize View mode (bug 390181)
+ * When working with SVN 1.7-compatible connectors deleted folders are handled improperly (bug 390851)
+ * Moved folder's status is shown wrongly when models support is enabled (bug 390858)
+ * On a repository that is accessed using the file protocol SVN Kit leads to an excessive password prompt (bug 390865)
+ * Resource '...' does not exist exception in AbstractSVNSubscriber [ID-GZMNK] (bug 388899)
+ * Shortcut for "Show Properties" overrides the sign "|" in Slovenian keyboard scheme [CTRL+ALT+W -> CTRL+ALT+T] (bug 390005)
+ * Error when trying to modify a file with the property "svn:needs-lock" in the JSP editor (bug 377013)
+ * Show a user friendly error message if the merge/update/switch caused an unresolved conflict over the .project file [ID-UOAA9] (bug 365867)
+ * Wrong error message text spelling [when resources refresh fails] (bug 391575)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0.I20120818-1700 [18 August 2012]
+
+Fixes:
+ * Inaccurate preference names and documentation regarding "freeze svn:externals" feature (bug 387324)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0.I20120803-1700 [03 August 2012]
+
+Fixes:
+ * Edit conflict can not find -right.r file with the SVN 1.7-compatible connectors (bug 383183)
+ * "Check Out As" shouldn't delete an empty project folder, since folder creation later may be impossible due to security restrictions (bug 321810)
+ * [Subversive] - svn:externals syntax check too strict (bug 316114)
+ * Branch/Tag/Copy dialogs should notify about possible ways of "/" character usage (bug 382311)
+ * Refresh on location/root nodes in SVN Repositories View shows multiple credential dialogs (bug 385690)
+ * Unchecked "Save password" repository location option shouldn't prevent user name from being saved (bug 385890)
+ * Using svn+ssh:// repositories with private key authentication causes subversive to popup ssh login dialog two times for every repository operation. (bug 239871)
+ * NPE in FreezeExternalsOperation [ID-IP4PU] (bug 385818)
+ * NPEs in Override and Commit in models mode [ID-BOO7P] (bug 372098)
+ * ClassCastException in time of branch/tag operation [ID-M43MD] (bug 385530)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0.I20120601-1700 [01 June 2012]
+
+Features:
+ * Graduation release
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20120520-1700 [20 May 2012]
+
+Fixes:
+ * Incorrect console color preferences handling (bug 376929)
+ * NPE in SVNUtility when repository is unavailable [ID-S1M7B] (bug 377166)
+ * Correct supported Eclipse Platform version restriction according to the used API (bug 377864)
+ * "Resource '/.../.svn' does not exist" exception while checking for SVN meta-information [ID-BHMBD] (bug 378922)
+ * NPE while sharing project using the SVN 1.7 connector [ID-FMF5P] (bug 379628)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20120417-1700 [17 April 2012]
+
+Features:
+ * Create the SVNKit-based SVN 1.7 compatible connector (bug 374582)
+ * Update JavaHL 1.7 connector to the 1.7.4 version
+
+Fixes:
+ * NPE in ScanLocksOperation.createLockFile [ID-OKCDI] (bug 375150)
+ * "Document is closed" exception while writing to the console [ID-UODT8] (bug 374884)
+ * Missing Text fields in Commit dialog (bug 375038)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20120316-1700 [16 March 2012]
+
+Features:
+ * Add SVN 1.7 support (bug 365627)
+ * Include JavaHL 1.7 connector into the early access/Juno simulatenous release builds (bug 372781)
+
+Fixes:
+ * NPE in EditTreeConflictsPanel due to wrong enablement (bug 373821)
+ * Class SVNConsole shouldn't extend MessageConsole (bug 373049)
+ * SVNConsole class shouldn't be initialized at plug-in startup (bug 370374)
+ * [KeyBindings] SVN Sync and Commit keybindings no longer work (bug 309074)
+ * Commit UI extension fails to set a commit message prior to opening the dialog (bug 372027)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20120210-1700 [10 February 2012]
+
+Features:
+ * Rename "Commit Templates" preferences node to the "Comments and Input History" (bug 367026)
+ * Smartcard Login on Windows (MSCAPI Support) (bug 351510)
+   + special thanks for the contribution to Markus Oberlassnig (ilogs information logistics GmbH) 
+
+Fixes:
+ * org.eclipse.team.svn.ui.compare.ResourceCompareInput.ResourceElement fails to return an InputStream from getContents when compare is invoked against a folder (bug 363845)
+ * If there were no SVN-related activities on the workspace startup, Subversive can't see that imported projects are linked to SVN (bug 336689)
+ * Provide "Edit properties conflicts" to edit conflicts on properties (and mark as merged) (bug 364407)
+ * "Edit Conflicts" action should cover both: property and content conflict cases (bug 370072)
+ * "Mark As Merged" seemingly has no effect on projects with property conflicts (bug 370071)
+ * Exception produced on Show Revision Graph for a source folder (bug 369217)
+ * Move refactoring cause NPE (bug 368325)
+ * Shift and Enter in the commit message window -annoyingly- always causes a commit (bug 366954)
+ * Add "path history depth" setting (bug 367027)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20111123-1700 [23 November 2011]
+
+Fixes:
+ * There are Eclipse 3.7-specific API usage due to misleading documentation (bug 364572)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20111119-1700 [19 November 2011]
+
+Features:
+ * Add SVN 1.7 API support (bug 361257)
+ * Replace with Revision fails to notice trivial changes on locked files (bug 353875)
+   + special thanks to Neels Hofmeyr
+ * New decoration mode for branches and tags [fullpath] (bug 359650)
+ * UI commit extensions improvement (bug 356025)
+   + special thanks to Jc Temp
+ * Create patch to Workspace could default location to current project (bug 356042)
+ * IRepositoryLocation state listener (bug 356024)
+   + special thanks to Jc Temp, Eike Stepper
+ * ISVNConnector calls interception API (bug 356023)
+   + special thanks to Jc Temp, Eike Stepper, Adrian
+
+Fixes:
+ * Subversive doesn't refresh synchronize view after commit (bug 329555)
+ * JavaHL: Commit across multiple project atomically does not work (bug 362182)
+ * Collapse All and Expand All buttons are separated in Team Sync view (bug 230868)
+ * "Subversive JDT ignore recommendations" plug-in deadlocks on Eclipse startup (bug 359199)
+ * Problem with RevisionComposite_Reverse (bug 363635)
+   + special thanks to Satoru Yoshida
+ * Problem with MarkAsMergedAction.tooltip (bug 363634)
+   + special thanks to Satoru Yoshida
+ * SVN Compare does not allow new files to be copied (bug 362652)
+ * NPE while obtaining IProxyData data for the specified host [ID-ELYHN] (bug 362983)
+ * If there were no SVN-related activities on the workspace startup, Subversive can't see that imported projects are linked to SVN (bug 336689)
+   + special thanks to Brice Laurencin, Kris De Volder
+ * ClassCastException in ShowHistoryViewOperation [ID-L8NW8] (bug 362570)
+ * Team-private members are marked at wrong time while importing the already shared project (bug 361831)
+   + special thanks to Kris De Volder
+ * There are no notification about the repository node absence while synchronizing workspace (bug 361829)
+ * ReplaceWithRemoteOperation ignores cancellation event (bug 359652)
+ * When updating depth "Recursively" should be the default option (bug 359651)
+ * SVN: '0x00400113: Show Conflict Editor' operation finished with error: null (bug 358998)
+ * FileNotFoundException in ReplaceWithLatestRevisionAction [ID-PASE4] (bug 323684)
+ * Unable to compare files from different branches (bug 356870)
+ * False warning about tag modification (bug 358068)
+ * Create branch from revision not work on project (bug 357562)
+ * NPE in SwitchOperation [ID-LK5LW] (bug 351434)
+ * NPE in ResourceCompareInput [ID-H92AC] (bug 356872)
+ * NPE in MarkAsMergedOperation [ID-WZ3PP] (bug 357104)
+ * Problem during Replace with Latest from repository (temporary path is too long) (bug 297721)
+ * Changes model initialization shouldn't cause an I/O exception [ID-AI4E7] (bug 355901)
+ * Class Preferences, methods savePluginPreferences() and getProxyDataForHost() are deprecated (bug 355996)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20110819-1700 [19 August 2011]
+
+Features:
+ * Add "record-only" option to the merge dialog (bug 354996)
+
+Fixes:
+ * GetRemoteFolderChildrenOperation implementation depends on the JDK specific (bug 352947)
+ * Do not mess svn:externals order (bug 350143)
+   + special thanks to Julien HENRY
+ * Duplicate folder name for svn:externals if same destination (bug 353009)
+   + special thanks to Julien HENRY
+ * Performance problem with Create Patch (bug 333785)
+ * Refactor SVN locks support code (bug 354058)
+ * Data processing error is mistakenly recognized as a bug in the CreatePatchOperation code [ID-W32HV] (bug 354062)
+ * When i "create patch". The patch file don't encode in utf-8. (bug 284081)
+ * Missing Resources dialog does not resize correctly (bug 304486)
+ * JavaHL is independent of Windows, please properly document this (bug 307397)
+ * Exceptions when eclipse start (bug 302569)
+ * Validation of the issue number using bugtraq:logregex is broken (bug 300402)
+ * SetRevisionAuthorNameOperation shouldn't be performed if original (commit, copy etc.) operation failed [ID-WP0UC] (bug 354812)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20110715-1700 [15 July 2011]
+
+Features:
+ * Make SVN: 'Save Authorization Info' operation optional (bug 349111)
+ * Update Subversive help regarding persistent SVN+SSH connection option (bug 349139)
+ 
+Fixes:
+ * Negative revision numbers are not allowed [ID-VBVYH] (bug 296094)
+ * 'Replace with revision' fails when using javahl16 connector (bug 351370)
+ * SVN repositories view blocks UI thread (bug 295110)
+ * Useless reordering in the SVN Repositories View (bug 351649)
+ * Team Hook does not work while moving versioned files or folders into unmanaged project (bug 254846)
+ * NPE in CompareEditorInput.setDirty in Eclipse 3.7 [ID-MAMS9] (bug 348787)
+ * SVNKitconnector may access uninitialized CoreExtensionsManager (bug 351357)
+ * IllegalArgumentException in AbstractActionOperation [ID-CUA4N] (bug 350077)
+ * extremely poor refreshLocalResourceImpl performance (bug 259287)
+ * FileReplaceListener performs time consuming actions at inappropriate time (bug 321542)
+ * svn perspective launches svnserve which never close (bug 305658)
+ * Correct french translation for PerformancePreferencePage_enableCache (bug 349138)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20110602-1700 [2 June 2011]
+
+Fixes:
+ * Correct help section regarding latest changes in Merge Dialog behaviour (bug 347143)
+ * Bug fix: update version number to the actual 1.6.15 (bug 347568)
+ * Indigo requires license update (bug 346698)
+ * Sometimes SVN Kit does not throw an exception when repository is inaccessible [ID-VIT54] (bug 347737)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20110523-1700 [23 May 2011]
+
+Features:
+ * Provide a flexible way to traverse resources tree in operation execution context (bug 345170)
+
+Fixes:
+ * Deadlock when starting Eclipse with Synch View open [ID-V0QM2] (bug 313866)
+ * Indigo requires license update (bug 346698)
+ * Make revision selection dialog more intuitive (automatically include lesser revision changes into the selected range) (bug 319962)
+ * No way to specify correctly a name for the resources traversal operation (bug 345855)
+ * Rename Class/Interface causes code garbage with Subversive and keyword substitution (bug 315279)
+ * MarkAsMergedOperation ignores cancellation event (bug 345169)
+ * SVNMoveDeleteHook does not report any errors happened while moving resources (bug 344361)
+ * Unused NLS message (bug 343439)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20110419-1700 [19 April 2011]
+
+Features:
+ * Provide several modes for a branch/tag creation based on the working copy (bug 343073)
+ * Undo and Redo doesn't work in Commit Dialog (bug 298556)
+
+Fixes:
+ * Malformed network data during synchronization (bug 337151) [allow usage of the older SVN Kit version without the issue]
+ * Branch/Tag action from the "Team" menu blocks UI thread (bug 342743)
+ * "Keep resource history" option name in the "Team->Copy To" dialog causes misunderstanding (bug 341723)
+ * Set Keywords action is enabled for new resources (bug 311665)
+ * NPE in SVNHistoryPage resource state listener [ID-Q5KRR] (bug 341896)
+ * Undo Delete does not restore the latest file state but the version before (bug 340318)
+ * Missing NLS string in plugins.properties (bug 341364)
+ * UIMonitorUtility is not equipped to handle applications with more than one shell (bug 341271)
+ * IndexOutOfBoundsException during cache update (bug 315544)
+ * Correct connectors compatibility ID [ID-D1U3Y] (bug 340527)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20110318-1700 [18 March 2011]
+
+Features:
+ * Add the svn:mergeinfo property into the SVN Property editor list (bug 339832)
+ * Improve bug report facilities (bug 337250)
+
+Fixes:
+ * Correct Mylyn integration feature dependencies (bug 340376)
+ * IllegalStateException in discovery feature when network problem or cancellation occurs [ID-FEJWD] (bug 334408)
+ * Extract operation fails with exception [ID-BOAKP] (bug 339469)
+ * "Unrecognized node kind" error while comparing resources [ID-RTYVU] (bug 338876)
+ * Unhandled EOF exception in Revision Graph [EID-NVOHU] (bug 338485)
+ * No error dialog appears if commit fails (bug 338641)
+ * "Find/Check out as": destination folder browser should open location of actual workspace [ID-P1ILO] (bug 334252)
+ * ResourceContentStorage does not implement equals() (bug 305866)
+ * Update Subversive help regarding installation and updating workflow (bug 338289)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20110207-1700 [07 February 2011]
+
+Features:
+ * Allow to branch/tag files and folders in single transaction in the SVN Repositories view (bug 335922)
+ * Provide API to open the History view on a specific revision range (bug 335421)
+
+Fixes:
+ * Remove Subversive menu in Help (bug 229495)
+ * The "svnconnector" extension point is broken (bug 336207)
+ * SWTException in SVNTeamModificationValidator when lock is required (bug 336064)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20110124-1700 [24 January 2011]
+
+Features:
+ * Use the latest SVN Kit version (1.3.5) (bug 334452)
+ * There is no access to the SVN 1.6-related method signatures (bug 333211)
+ * Allow repository creation with the latest SVN Kit-based connector (bug 333202)
+
+Fixes:
+ * Extract operation fails under certain conditions (bug 335079)
+ * Remove duplicated code parts (bug 333061)
+ * Pressing Cancel during compare results in invalid GUI message (no differences) (bug 328820)
+ * Calls to the deprecated function in the SelectPatchFilePage (bug 332775)
+ * There is a compilation issue in the core plug-in under Eclipse 3.7 (bug 332528)
+ * Connectors from polarion update site not detected (bug 328104)
+ * No serialVersionUID for the serializable class ActionIDList (bug 332235)
+ * Finish to create new SVN repository and share project in single operation fails (bug 330780)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20101203-1700 [03 December 2010]
+
+Fixes:
+ * IWorkspaceRoot.findFilesForLocation() is deprecated (bug 331373)
+ * IWorkspaceRoot.findContainersForLocation() is deprecated (bug 331188)
+ * [ID-ZT6S5] "Negative revision numbers are not allowed" error while performing "Mark As Merged" operation (bug 330737)
+ * Eclipse-LazyStart option is deprecated in Eclipse 3.3 and later versions (bug 331003)
+ * Lots of warnings in the build.properties files (bug 330843)
+ * Use Shell from the FileModificationValidationContext if possible (bug 330638)
+ * Eclipse 3.5 discovery feature connector source code produces compilation errors (bug 330637)
+ * SVNTeamModificationValidator does not take into account LockProposeUtility.proposeLock(..) returned status (bug 330290)
+ * Error in menu item title: "Comapre With" (bug 330228)
+ * Ability to reject incoming changes (make Mark as Merged active) (bug 297821)
+ * Finish button on "Select Resource" dialog not enabled until a different revision is selected (bug 329756)
+ * Correct simple share mode option name (bug 329726)
+ * Wrong French translation for a SVN error (bug 329201)
+ * Some NLS messages should be removed (bug 329187)
+ * SWTException when Subversive UI plugin starts in a worker thread (bug 326684)
+ * No tooltip for clock icon on merge dialog (bug 326074)
+ * NPE starting target workspace (bug 328149)
+ * Properties conflict on project makes Subversive totally unusable. (bug 283999)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20101001-1700 [01 October 2010]
+
+Fixes:
+ * Update javahl binaries to 1.6.12 version (bug 326829)
+ * Subversive does not start correctly under Eclipse 3.5.x with discovery feature enabled (bug 326834)
+ * Remove SVN 1.4-related connectors from the discovery feature list (bug 326831)
+ * Discovery feature do not starts under Eclipse 3.6 (bug 326564)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20100917-1700 [17 September 2010]
+
+Features:
+ * Add documentation about Revision Graph options dialog (bug 317802)
+ * [Revision Graph] Allow to hide merge connections by pressing on merge icon (bug 319383)
+ * Make lighter comment color for selected node in Revision Graph (bug 317699)
+ * Allow to call revision graph for multi-selection (bug 318719)
+ * Add help about Properties View contribution in Revision Graph (bug 319109)
+ * Show nodes info in Properties View in Revision Graph (bug 319104)
+ * Show example of date in preferences (bug 299908)
+ * Save revision graph setting in options dialog (bug 317839)
+ * [Revision Graph] Allow to search revision nodes on graph (bug 319968)
+ * [Revision Graph] Allow to specify revisions range (bug 319249)
+ * Support set-depth option (bug 295217)
+
+Fixes:
+ * The conflict editor ignores custom file encoding on the right hand side, uses encoding from container instead (bug 325122)
+ * Resolving Tree Conflicts - Apply Local Changes doesn't work on 2.2.2 (bug 320843)
+ * Subversive should not set forcibly svn:mime-type to text/plain (bug 322772)
+ * NPE in SVNRemoteStorage [ID-AFBM0] (bug 324394)
+ * Default key binding in editors prevents AT from working properly (bug 316097)
+ * Commit Comments history depth doesn't have any effect, when i change it to lower value (bug 302571)
+ * [Revision Graph] Add ... to Show Revision Graph action (bug 319138)
+ * Handle missing resources in Commit dialog (bug 312874)
+ * [Revision Graph] Increase vertical offset between neighbor nodes (bug 319133)
+ * Create patch file filter not working (bug 302937)
+ * [Revision Graph] Increase graph margin (bug 319129)
+ * Error when calling SVN Info for moved resource (bug 315545)
+ * [Revision Graph] Show graph for called resource (bug 319243)
+ * Error in annotation if there are specified revisions (bug 317612)
+ * Connector discovery says it's retrieving list from eclipse.org, but connects to community.polarion.com (bug 320955)
+ * Show History failure - No such revision (bug 312464)
+ * [Revision Graph] Improve comment presentation (bug 319228)
+ * [Revision Graph] Improve tooltip presentation (bug 319148)
+ * Allow to truncate paths in Revision Graph (bug 319029)
+ * Handle if errors happen during revision info fetching at Revision Graph (bug 317801)
+ * NPE in create patch (bug 300720)
+ * Cache directory is empty for revision graph (bug 317266)
+ * All updates in a merge marked as conflicts (bug 312585)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20100617-1700 [17 June 2010]
+
+Features:
+ * Add merge information to revision graph (bug 313134)
+
+Fixes:
+ * [Show History] Error: Retrieval of mergeinfo unsupported (bug 257669) 
+
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20100528-1600 [28 May 2010]
+
+Fixes:
+ * Lock user account with Subversive (bug 314490) 
+	
+ * Realm credentials are not used in auth prompt (bug 314639) 
+		
+ * Unable to customize preferences when Subversive is embedded in an eclipse product (bug 311019) 
+	
+--------------------------------------------------------------------------------
+
+Version 0.7.9.I20100512-1900 [12 May 2010]
+
+Features:
+ * Allow to manage revision graph caches (bug 311015)
+
+ * Allow to expand/collapse revision nodes (bug 310979)
+
+ * Provide view with graph of changes: branches, tags etc. (bug 211253)
+
+ * Correctly support externals in actions (bug 290386)
+ 
+Fixes:
+ * Invalid action contribution by revision graph (bug 312624)
+  
+ * Add help for revision graph (bug 312562)
+ 
+ * SVN Deadlock while trying to open Password Dialog (bug 301417)
+
+ * SSH settings are not correctly switched in repository locations dialog (bug 310088)
+
+ * Ssh port not being saved between eclipse restarts (bug 249074)
+
+ * Make consistent licenses (bug 310430)
+
+ * org.eclipse.team.svn.ui.lock package isn't exported (bug 310422)
+ 
+ * Allow to specify operation id from multiple message bundles (bug 309290)
+
+ * Error during decoration in Helios M6 (bug 307203)
+
+ * Subversive Connector Discovery fails on Helios (bug 295156) 
+
+ * Any key binding for rename in SVN Repositories view, should be "F2" (bug 299592) 
+
+ * SVN Workspace Synchronization: Synchronize function does not display proper Icon Decoration for an "Incoming Deletion" (bug 282338) 
+
+ * FileUtility#getPathNodes is inefficient for large change sets (bug 266492) 
+
+ * One slash in URL during Share Project (bug 303085) 
+
+ * Problems when project contains folder called "tags" (bug 303032) 
+
+ * Label for SVN URL changes after restart (bug 298862) 
+ 
+ * Reintegrate says "No changes found" (bug 297720)
+
+ * Change bugs title (bug 298574)
+
+ * Filter JVM Properties when creating Mylyn task (bug 298575)
+
+ * Compare with branch doesn't work with externals (bug 298573)
+
+ * Undo after directory move causes irrecoverable data loss (bug 297779)
+
+ * NPE in getNationalizedString if Localization is not installed (bug 300592)
+
+ * Can not get Subversive working in I20100122-0800 (bug 300591)
+  
+ * Subversive Connector Discovery fails on Helios M3 (bug 295156) 
+
+ * Subversive is halting the UI (note that jconsole doesn't detect a deadlock, but still it becomes halted) (bug 296707)
+   
+ * NPE in IStateFilter$AbstractStateFilter.accept() (bug 296402) 
+
+ * StackOverflowError when getting authentication info (bug 296689)
+   
+ * File is disappeared from Sync view if update finished with error (bug 295984)
+
+ * Correctly show files copied with different register case on Windows (bug 295983)
+
+ * Subversive fails to initialize due to corrupted .svnRepositories file (bug 295954)
+
+ * dead lock on Linux on startup due to password prompt (bug 295951)
+
+ * Eclipse UI stalls for more than 5 minutes in the main thread executing SVNRemoteStorage code (bug 296230)
+    
+ * Subversive tries to connect to repository for Compare With -> Base from Working Copy (bug 245326)
+
+ * Use Equinox secure storage (bug 295079)
+
+ * Changing svn:ignore on project root directory without updating incoming changes before causes strange behavior (bug 256868)
+
+ * Support lightweight decorations for Synchronize View (bug 245873)
+     
+ * Start from copy uses trunk instead of branch copy revision (bug 294022)
+ 
+ * Problems with locks (bug 294207)
+ 
+ * shortcut stops working after first time (bug 293003)  
+ 
+ * Commit externals problem (bug 290385)
+ 
+ * svn:externals definition for a sub-sub-directory breaks after running svn update (bug 270022)
+ 
+ * Error during reporting an invalid error (bug 293588)
+ 
+ * Make user friendly name for subscriber (bug 293562)
+ 
+ * New NLS unused message with latest update (bug 293464)
+ 
+ * An empty console window defaults to SVN console (SVN Console should be a console that also display under the opened consoles list) (bug 290797)
+ 
+ * Adding file to svn ignore from "Add To SVN Version Control" dialog problem (bug 254902)
+ 
+ * An internal error occurred during: "Overwriting 1 resource.". (bug 292577)
+ 
+ * Extend SVN Info properties (bug 293016)
+ 
+ * NPE when calling Edit Conflicts action (bug 293172)
+ 
+ * Make more precise statuses in Commit dialog (bug 293017)
+ 
+ * Properties decoration problem (bug 293015)
+      
+--------------------------------------------------------------------------------
+
+Version 0.7.8.I20091023-1300 [23 October 2009]
+
+Features:
+ * Add ability to make relative urls in Set External Definition dialog (bug 292674)
+ 
+ * Add ability to specify comments for revision links (bug 292280)
+ 
+ * Add 'Add Revision Link' action to Team menu (bug 292424)
+
+ * Provide annotated revision links to save the original revision if switching between trunk and branch (bug 261983)
+
+ * Add dialog for creating external resource (bug 288139)
+ 
+ * In SVN lock view add actions to resources tree (bug 287577)
+ 
+Fixes:
+ * deadlock in org.eclipse.team.svn.core.SVNTeamPlugin - Eclipse fails to start (bug 291603)
+
+ * Problems with Set External Definition dialog (bug 292781)
+
+ * Commit says dir is not part of commit, but it is (bug 292477)
+
+ * [Subversive] - Bug report ID-L9VHB (bug 254477)
+
+ * There are no new files in outgoing change sets (bug 292927)
+
+ * Selection of a single revision to merge results in no changes (bug 287872) 
+
+ * Send Notifications' operation finished with error - repeated dialog (bug 282000) 
+
+ * "Accept" action in the Merge View does not work (bug 289680)
+
+ * "Edit tree conflicts" action is enablement does not corresponds to what it does (bug 289710) 
+
+ * NPE in SVN Kit 1.3.0 (bug 289812) 
+
+ * "Show History" action from the "Synchronize View" is ineffective (bug 289313) 
+
+ * Merge View incorrectly shows conflicting statuses (bug 289691) 
+
+ * ClassCastException in Override and Update in Merge view (bug 290691) 
+
+ * Trim spaces in repository location (bug 290678) 
+
+ * Add key bindings for Merge action (bug 290718) 
+
+ * Problems with URL field in Merge dialog (bug 290717) 
+
+ * Merge and Synchronize interfered with each other (bug 289689) 
+
+ * Context menu actions in the Merge View does not correctly work (bug 290508) 
+
+ * Change connectors string in SVN Connectors list (bug 290677) 
+
+ * Recommended small change in SVNRemoteStorage.isFileExists() to massively improve performance (bug 291089) 
+
+ * "Local" and "Remote" sub-menus of "Synchronize view" do not appear in my RCP app (bug 290574) 
+
+ * Bad trailing character after french translation "En attente" (bug 274961) 
+
+ * Share Project Wizard dialog typo (bug 264685) 
+
+ * error message when resource location does not match repository location (bug 277787) 
+
+ * Ascendant/Descendant Text Decorations Incorrect (bug 248033) 
+
+ * Synchronize action is hanged (bug 291566) 
+
+ * NPE in SVNRemoteStorage (bug 291580) 
+
+ * NLS unused message (bug 291583) 
+
+ * [Subversive] - "Team -> Switch..." should prefill the input URL with selected resource URL (bug 271297) 
+
+ * Merged files are absent from SVN change Sets (TeamSynchronisation) (bug 282677) 
+
+ * svn externals not working for path/subpath entries (bug 272526) 
+ 
+ * [Subversive] - Bug report ID-AUVIL (bug 286552)   
+ 
+ * Preview of merge reintegrate fails (bug 287301)
+ 
+ * Support spaces in local path in svn:externals (bug 288107) 
+ 
+--------------------------------------------------------------------------------
+
+Version 0.7.8.I20090904-1300 [04 September 2009]
+
+Features:
+ * Add Capabilities feature
+ 
+ * Support reading Subclipse-generated project set files (bug 276947) 
+
+ * Support reading svn-pde-plugin compatible map files (bug 276949)
+  
+ * Connector discovery UI (ala Mylyn) (bug 280889) 
+
+ * List all locked files in a project (bug 279602) 
+    
+Fixes:
+ * Possible bugs in Subversive Fetch Factory (bug 273230) 
+
+ * Deleting and replacing a resource is a SVN delete/add instead of a modify (bug 276018) 
+
+ * Show annotations does not work in files opened by the XML Editor (bug 267347) 
+
+ * "Compare with Each Other" grayed out (bug 275287) 
+
+ * [Subversive] - Unused NLS Strings for SVN UI (bug 275155) 
+
+ * No assist from "Ignored resources" list. (bug 274793) 
+
+ * RFE: provide Subscriber (bug 272594) 
+
+ * SVNRemoteResourceRevision always returns content of latest revision (bug 271931) 
+   Thanks to Steffen Pingel
+
+ * Attempting to commit files in a folder that has not been added to SVN, locks up Eclipse (bug 251098) 
+
+ * Override and Update deletes all unversioned files disregarding the svn:ignore-list (bug 264500) 
+
+ * A tilde (~) in the repository URL can not be handled (bug 269665)          
+
+ * Concurrent thread access to SVNTeamProvider instance leads to HiddenException (bug 249943) 
+ 
+ * Usability improvement for repository table in "Checkout from SVN" wizard (bug 263435) 
+
+ * Remember the "Keep Locks" Setting in the Commit Dialog (bug 271742) 
+
+ * [Subversive] - Tip for improvement ID-Q11B5 (Default behaviour of double click in the commit dialog) (bug 257808) 
+
+ * Incorrect previously entered comment in commit dialog (bug 278606) 
+
+ * Handle external definitions in svn commands (bug 255009) 
+
+ * Add ability to specify revision for operations (bug 279083) 
+
+ * Compare with branch/tag doesn't work as expected (bug 279797) 
+
+ * SVN PDE Build uses wrong default path value (bug 279590) 
+
+ * Adding a dated revision link fails (bug 279828) 
+
+ * Selected revisions at bottom of list don't populate Revisions text field in the Merge dialog (bug 279612) 
+
+ * Check Out As Wizard not usable with keyboard. (bug 279355) 
+
+ * cross-project refactoring (bug 281253) 
+
+ * Show History + Export doesn't work (bug 283917) 
+
+ * SelectProjectNamePage (bug 282583) 
+
+ * Error message is incorrect: Window->Preferences->Team->SVN->SVN Client does not exist (bug 281413)
+
+ * Don't override all revisions in Override and Commit (bug 285138)
+
+ * NPE after calling Override and Update (bug 283018)
+
+ * [Subversive] - Incorrect character encoding used for display in Compare view (bug 276138)  
+ 
+--------------------------------------------------------------------------------
+
+Version 0.7.8.I20090506-1500 [06 May 2009]
+
+Features:
+ * Support for files in svn:externals (bug 269155) 
+ 
+ * Detection of tree conflicts (bug 269156) 
+ 
+ * Configuration alternative of a diff viewer for MS-WORD documents (bug 260236)
+
+Fixes:
+ * Compare view on right side is empty (bug 272265)         
+
+ * Call commit dialog for svn:externals (for directory) causes error (bug 272025)       
+ 
+ * svn:externals definition for a sub-sub-directory breaks after running svn update (bug 270022)  
+
+ * All svn:log property values should be normalized to LF endings only (bug 271616) 
+         
+ * Create branch doesn't work in Package Explorer (bug 271656)
+
+ * Synchronize permanently fails with org.eclipse.team.core.TeamException: Resource ?...? does not exist. (bug 267624)
+
+ * Sorting by user, date or comment does not work for SVN Changeset model in Synchronize view (bug 264331)
+
+ * SVN Change sets model: Incoming changes are duplicated to a "Unassiged" node (bug 261185)
+ 
+ * NPE when activating Mylyn task (bug 266826)
+ 
+ * Mylyn Context actions are missing from Team Synchronize view if logical models are enabled (bug 264344)
+ 
+ * Synchronization empties outgoing changes if SVN Changesets model is selected (bug 264772)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.7.I20090224-1900 [24 February 2009]
+
+Features:
+ * Add a pre-commit check for files with errors and warnings (bug 263442) 
+
+ * Add ability to output resources comparison in unified diff format (bug 263657) 
+
+ * Add ability to create SVN repository (bug 263951)   
+
+Fixes:
+ * Compare with Branches/Tags action problem (bug 263790)    
+
+ * Extract bug (bug 264192)
+
+ * o.e.team.svn.core has hard dependency to com.ibm.icu bundle (bug 261413)
+ 
+ * Bugtraq properties problem (bug 261857) 
+ 
+ * Problems with relocating project (bug 259626) 
+ 
+ * Share Projects menu item disabled when multiple projects selected (bug 263003) 
+ 
+ * Resources list isn't updated in "Override and Update..." (bug 254900)
+ 
+ * Add key shortcuts to controls (bug 254726)
+ 
+ * Revisions Range dialog isn't correctly resized (bug 261328) 
+ 
+--------------------------------------------------------------------------------
+
+Version 0.7.6.I20081229-1900 [29 December 2008]
+
+Fixes:
+ * Error when trying to create new tag or branch using repository view (bug 259655)
+ 
+--------------------------------------------------------------------------------
+
+Version 0.7.6.I20081222-1900 [22 December 2008]
+
+Features:
+ * Implement ModelProvider for change sets using IChangeGroupingRequestor (bug 245869)
+
+ * Implement SVN specific ModelSynchronizeParticipant (bug 245872) 
+ 
+ * Implement SVN specific SubscriberMergeContext (bug 245870)
+ 
+ * Add synchronize pane to commit panel (bug 245874)
+ 
+ * Sort changes by status in extract log (bug 255545)
+ 
+ * Message Bundles (bug 253520)
+ 
+ * Localization - ICU4J (bug 254198)
+
+Fixes:
+ * When extracting only remote changes the conflicted resources are not written to log. (bug 253672)
+
+ * Extra projects in synchronize view (bug 253887)
+ 
+ * Problem with creating a branch/tag (bug 255487)
+ 
+ * Subversive deleting unselected and non svn managed files/folders when doing "Override and Update" (bug 251094)
+ 
+ * Check out from SVN repository fails when any workspace project uses the RSE file system (bug 230331)
+ 
+ * java.util.EmptyStackException in SVNUtility (fetching log entries) (bug 249285)
+ 
+ * ClassCastException SVNKit 1.5 getValidReference (bug 252103)
+ 
+ * missing "locked message" for a file already locked (bug 247614)
+ 
+ * Bug report ID-G6B5P (bug 256949)
+ 
+ * Unable to merge: exception when selecting "Revision" radio in merge dialog. (bug 255975)
+ 
+ * Creating a patch with a file that does not end with a newline places the "no newline" marker incorrectly (bug 254545)
+ 
+ * Tags include trunk subdir (bug 246268)    
+ 
+--------------------------------------------------------------------------------
+
+Version 0.7.5.I20081029-1900 [29 October 2008]
+
+Features:
+ * Browse button in Share dialog (bug 211233)
+
+ * Allow to select resources only under repository location in Share project's simple mode (bug 249623)
+ 
+ * There is no way to type in the repository path when doing a Checkout from SVN (bug 231984)
+ 
+ * Add 'Drag and Drop' listeners to the Subversive views (bug 211236)
+   + thanks to Nick Entin for patches
+
+Fixes:
+ * Closing project with file in editor and reopening project generates NPE (bug 246147)
+
+ * URL decoration with bugtraq properties does not work properly (bug 252563)
+ 
+--------------------------------------------------------------------------------
+
+Version 0.7.4.I20091001-1900 [01 October 2008]
+
+Features:
+ * Export History log (bug 211415)
+   + thanks to Igor Burilo for the patch
+ 
+ * There is no way to type in the repository path when doing a Checkout from SVN (bug 231984)
+ 
+ * Allow "override and commit" for non-conflicting resources (bug 241422)
+
+Fixes:
+ * Authentication problems (bug 243914)
+ 
+ * Extract from HistoryView fails if the folder has modification and modified children with greater names. (bug 245504)
+   + thanks to Igor Burilo for the patch
+
+ * Null Pointer Exception in Revision Properties View (bug 248355)
+ 
+ * Improve extract log (bug 245509)
+
+ * Serious usability regression: Replace With merges with revision instead of replacing with revision (bug 240473)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.3.I20080814-1500 [14 August 2008]
+
+Features:
+ * Add date selection options to History View (bug 211408)
+   + special thanks to Gabor Liptak
+   
+ * Allow different behavior for Checkout action (bug 211237)
+   + special thanks to Felipe Carasso, Jacob Robertson
+
+ * Extract Changes action should not create deletions.log file if no deletions occurs (bug 243395)
+
+Fixes:
+ * butraq:logregex property display disgresses from specification (bug 243678)
+   + special thanks to contributor Jens Scheidtmann
+   
+ * Use standard create patch dialog in Synchronize View (bug 243713)
+   + special thanks to Noah Roberts
+   
+ * getRepository failed: exception AssertionFailedException: null argument (bug 240133)
+   + special thanks to Chomat Stephane
+
+ * SVN hangs in SVNRepositoryResource.getRoot() method (bug 242130)
+   + special thanks to Neale Upstone
+
+ * UI pops up dozens of error dialogs making eclipse unusable (bug 220292)
+   + special thanks to David Green
+
+ * Cannot create a new branch (bug 243181)
+   + special thanks to Jonathan Marston
+
+ * Synchronize View's Local and Remote submenus are disappeared in Eclipse 3.4 after first call (bug 243045)
+   + special thanks to Noah Roberts, Owen Rees
+   
+ * NPE in Share Project wizard when a project is already exists in the repository (bug 243446)
+   + special thanks to Stephan Heffner
+   
+ * Synchronize doesn't show incomming changes (bug 243401)
+   + special thanks to Tony Poppleton, Channing Walton, Radoslaw Jozwik
+
+--------------------------------------------------------------------------------
+
+Version 0.7.2.I20080801-1500 [1 August 2008]
+
+Features:
+ * When a project is relocated outside Eclipse, and the new URL matches an already-existing repository location, Subversive should automatically update its metadata (bug 231427)
+   + special thanks to Max Bowsher
+
+ * Improve "Import Project Set" behaviour (bug 230826)
+   + special thanks to Michael Murphree
+
+ * Provide "Headless" update site (bug 211420)
+   + special thanks to Panagiotis Korros, Thomas Hallgren
+
+ * decorate working sets in Package Explorer (bug 242249)
+   + special thanks to Igor Fedorenko
+
+ * Popping up of History View can't be disabled when Compare With action is performed. (bug 242192)
+   + special thanks to Radoslaw Jozwik
+
+ * Include information about merged revisions into annotation (bug 240156)
+ * Show merged revisions in History View (bug 239819)
+ * Support sparse actions (checkout, import, export) [REOPENED] (bug 231552)
+ * Allow multiple selection for repository operations (export, add revision link). (bug 241249)
+ * Ensure that merge action serves merge-tracking functionality (bug 239818)
+ * Allows to select multiple revisions in merge dialog (bug 239820)
+ * Support merge --reintegrate mode (bug 241500)
+ * Use latest SVN 1.5 binaries [REOPENED] (bug 218472)
+ * Improve "Extract Changes" operation (bug 242557)
+
+Fixes:
+ * ArrayIndexOutOfBoundsException in Create Patch action (bug 242670)
+   + special thanks to Ulli Hafner
+
+ * Stack overflow while disconnecting a project (bug 241814)
+   + special thanks to Vadim Dmitriev
+
+ * NPE in MergePanel.getSelection (bug 242753)
+   + special thanks to Igor Fedorenko
+
+ * New resources are not decorated as outgoing changes (bug 242248)
+   + special thanks to Igor Fedorenko
+
+ * NPE in MessageDialog (bug 242085)
+   + special thanks to Eugene Babikhin
+
+ * 'Select' button in 'Replace With' window should have a better name (bug 240462)
+   + special thanks to Max Gilead
+
+ * Replace With -> URL should have better name (bug 240461)
+   + special thanks to Max Gilead
+
+ * NPE when creating a new project from a repos (bug 242142)
+   + special thanks to Marshall Pierce
+
+ * NPE while calculating project name before checkout (bug 241777)
+   + special thanks to Wang Lihui
+
+ * All protocols: Subversive uses incorrect credentials with SVN Kit 1.1.7-based connector (bug 221094)
+   + special thanks to Christopher Smith, Fabio N. Kepler, Antony Jones, Heath Borders, Martin Oberhuber, Jeroen, Nathan Vick, Cinly Ooi
+
+ * Replace confirmation before main dialog window doesn't make sense (bug 240471)
+   + special thanks to Max Gilead
+   
+ * Merge problem "File not found: revision..." when opening 3-way comparator (bug 240291)
+   + special thanks to Alexey Kamenchuk
+   
+ * "Overwrite and Update" doing merge (bug 237218)
+   + special thanks to Tony Poppleton
+   
+ * Branch from working copy failed with SVN 1.5-compatible connectors (bug 240258)
+   + special thanks to Larry Edelstein
+
+ * Check out deleted files on my system without asking about it (bug 238916)
+   + special thanks to Vesa Jaaskelainen 
+
+ * Commiting not up to date directory results in uninformative console message only (bug 239105)
+   + special thanks to Max Gilead
+
+ * Migrate Projects and Settings throws NullPointerException, perhaps on Closed Projects (bug 238863)
+   + special thanks to Brett Randall, Steffen Pingel
+
+ * view settings wording: contiguous should be incremental (bug 238834)
+   + special thanks to Andrew Bachmann
+
+ * Properties Configuration preference uses the wrong scrollbars (bug 238389)
+   + special thanks to Kristoffer Peterhansel
+
+ * Auto-properties not importing from my Subversion config file (bug 238390)
+   + special thanks to Kristoffer Peterhansel
+
+ * Deadlock when moving multiple sources from one project to another. (bug 233956)
+   + special thanks to Ulli Hafner
+
+ * SVN replaces files with second last revision after commit (bug 237204)
+   + special thanks to Fabricio Silva
+
+ * Relocate outside plugin control, then "Share with another repository location" fails (bug 231426)
+   + special thanks to Max Bowsher
+
+ * NPE in SVN 1.5 compatible connectors when user has no access to repository revision (bug 237408)
+   + special thanks to Darren Hodges
+   
+ * The 'New Working Set' dialog should come up with the default text in the 'Name' textbox already selected (bug 234397)
+   + special thanks to Dan Berindei
+   
+ * NPE in acquireSVNProxy after plug-in is upgraded from the old version (bug 237422)
+   + special thanks to Edward Willink
+   
+ * Share Project should run in background (bug 237304)
+   + special thanks to Lars Vogel
+   
+ * Synchronize View's "Edit Conflicts" action should not touch folders (bug 237264)
+   + special thanks to Markus Dangl
+   
+ * NPE in ClearUpdateStatuses operation (bug 235317)
+   + special thanks to Ulli Hafner
+   
+ * SVNRemoteStorage.asLocalResource() should never return null (bug 216629)
+   + special thanks to Gene Huang
+
+ * Update help according to plug-in changes (bug 225568)
+ * NPE while refreshing repository browser (bug 240795)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.1.I20080612-1500 [12 June 2008] [build ids are changed corresponding to guidelines]
+
+Features:
+ * Support latest SVN 1.5 API changes (bug 216473)
+
+Fixes:
+ * JavaHLConnector creates a huge amount of short living threads (bug 235764)
+   + special thanks to contributor Micha Riser
+   
+ * Using a proxy server doesn't work (bug 233962)
+   + special thanks to Enrico Ehrich, Francois Masurel
+   
+ * The last added line is ignored in the new file while creating a patch. (bug 236399)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080609 [09 June 2008]
+
+Features:
+ * additional date formats for label decorations (bug 217561)
+   + special thanks to Jae Gangemi
+   + special thanks to contributor Thomas Champagne
+   
+ * Revision properties viewer (bug 232728)
+
+Fixes:
+ * Avoid potential deadlock while prompting credentials (bug 236259)
+ * Support Mylyn 3.0 API changes (bug 236100)
+ * NPE in Properties View when "Add" action is called (bug 233407)
+ * Repositories View ignores case sensitivity option (bug 233424)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080521 [21 May 2008]
+
+Fixes:
+ * NoClassDefFoundError: org/eclipse/ui/internal/util/SWTResourceUtil (bug 232972)
+   + special thanks to Jorg von Frantzius
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080517 [17 May 2008]
+
+Features:
+ * Allow to set/modify revision properties (bug 231554)
+   + special thanks to Neale Upstone
+
+ * Support latest SVN 1.5 API changes [REOPENED] (bug 216473)
+ * Support relative paths and peg-revisions for svn:externals property (bug 231546)
+ * Support sparse checkouts (bug 231552)
+ * Minimize transactions count where it is possible regarding to SVN 1.5 API changes (bug 231548)
+
+Fixes:
+ * NPE in "Replace with Tag" operation (bug 226025)
+   + special thanks to Mark Addleman, Georg Lippold, Chris Myers
+
+ * Problem with tagging from branches (bug 229761)
+   + special thanks to Damir Murat
+
+ * Precise Team menu enablements must be disabled by default (bug 230461)
+   + special thanks to Rafael Chaves, Pavel Zuev, Assaf Almaz
+
+ * Automatic project share makes more than one repository location for the same repository (bug 232649)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080425 [25 April 2008]
+
+Fixes:
+ * Feedback on Documentation Page (bug 228692)
+   + special thanks to Nathan Gervais
+
+ * Attempt to synchronize closed projects produces error (bug 228789)
+   + special thanks to Leo Dos Santos
+
+ * Mylyn integration won't install due to Mylyn version update to 3.0.0 (bug 228507)
+   + special thanks to Martin Oberhuber
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080423 [23 April 2008]
+
+Features:
+ * Merge property editor (bug 211411)
+   + special thanks to Francois Fernandes
+
+ * Enhance copy and move behaviour (bug 227491)
+   + special thanks to Eric Jain
+
+ * Create M2Eclipse integration plug-in [generalized extension point] (bug 224074)
+   + special thanks to contributor Eugene Kuleshov
+
+ * Use Quick-Diff annotate for repository files also (bug 228369)
+
+Fixes:
+ * Show Annotations using Quickdiff - Show Author doesn't work (bug 220027)
+   + special thanks to Steve
+
+ * "Negative revision number" when comparing renamed resources (bug 225972)
+   + special thanks to Jukefox
+
+ * Team Synchronization very slow (bug 222632)
+   + special thanks to Marc Guenther, Nikolaus Heger
+
+ * Unable to resolve conflicts (bug 228015)
+   + special thanks to Jesse Eichar
+
+ * Not asking to save resource before synchronize (bug 224651)
+   + special thanks to Aldo Bongio
+
+ * Subversive commit key shortcut stops working after first time (bug 225930)
+   + special thanks to Mark Powell
+
+ * The commit dialog doesn't show the modified files at the top anymore (bug 227136)
+   + special thanks to Paolo
+
+ * Cleanup plug-in initialization (bug 225884)
+   + special thanks to contributor Eugene Kuleshov
+
+ * Negative Revision number exception in InfoOperation when SVN Kit is selected (bug 226896)
+   + special thanks to Marijn, Jarkko Lietolahti, Aslam, Steffen Pingel
+
+ * Incoming change sets are not shown for external resources (bug 227118)
+ * Properties status is not reported while merge. (bug 227102)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080404 [04 April 2008]
+
+Features:
+ * Use Eclipse IDE proxy settings (bug 225289)
+   + special thanks to Anders Sveen
+
+ * Create M2Eclipse integration plug-in (bug 224074)
+   + special thanks to Eugene Kuleshov
+
+ * Export/Import of repository locations settings (bug 211248)
+ * Rework repository and authentication setting storing. (bug 224616)
+ * Affected path drop-down improvements. (bug 223630)
+ * Update help according to plug-in changes (bug 225568)
+ * Enable Extract for single selection in HistoryView. (bug 223632)
+
+Fixes:
+ * Minimize repository root access (bug 211391)
+   + special thanks to Pavel Zuev
+
+ * ClassCastException on Override and Update from Synchronize View (bug 224842)
+   + special thanks to Daniel Hirscher, Genady Beryozkin, Edoardo Comar, Leo Dos Santos
+
+ * Freeze externals uses wrong revision when external reference points to tag or branch without modifications (bug 224597)
+   + special thanks to Marco Perrando
+
+ * Patch files created under subversive not compatible with patch program [REOPENED] (bug 222669)
+   + special thanks to Mike
+
+ * Password Management Pref Page improvements (bug 223510)
+ * "Delete" action enablement in Select Resources composite is wrong. (bug 223628)
+ * Enable filter actions for all filtered (History View) (bug 223627)
+ * Some operations can't be sent to background. (bug 223631)
+ * Information about file locker (bug 211254)
+ * Improve Progress Reporting in Composite Operations (bug 223343)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080321 [21 March 2008]
+
+Features:
+ * Changed Path filter for history view (bug 222943)
+ * Provide filter management for ILogNode table (bug 222413)
+ * Add drop-down menu to revert dialog. (bug 219983)
+
+Fixes:
+ * Merge changes does not show conflict when file has been renamed (bug 222541)
+   + special thanks to Remi Nodet
+
+ * Package org.eclipse.team.svn.ui.history.model is not exported (bug 223129)
+   + special thanks to Michael Valenta
+
+ * Team Synchronization very slow (bug 222632)
+   + special thanks to Marc Guenther
+
+ * Patch files created under subversive not compatible with patch program (bug 222669)
+   + special thanks to Mike
+
+ * svn merge view graphical synchronize overwrites changes in local version (bug 221239)
+   + special thanks to Andrew Bachmann, Daniel Hirscher
+
+ * Advanced merge: Comparison uses empty "Remote File" (bug 220737)
+   + special thanks to Hubert Bildstein
+
+ * ClassCastException in ShowConflictEditor operation (bug 211390)
+ * Remove Property Editor references. (bug 222388)
+ * Extract improvements (bug 222944)
+ * Synch View Set Property Action bug (bug 223101)
+ * Improve Progress Reporting in Composite Operations (bug 223343)
+ * Update action in Synchronize View performs update to HEAD instead of revision of synchronization (bug 223322)
+ * URL validation is incorrect (bug 223222)
+ * Merge URLs selection dialog should disable revision selection if entered URL is invalid (bug 223221)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080311 [11 March 2008]
+
+Fixes:
+ * Fixed incorrect update URL's
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080307 [07 March 2008]
+
+Features:
+ * Add "Extract Changes..." actions to Synchronize View. (bug 219985)
+ * Add Extract changes action description to Subversive User Guide (bug 221293)
+ * Add "Extract Changes..." action to log messages presentation in History View (bug 220540)
+ * Reuse compare editor when comparing same resource revisions or compare called for revisions from the History View (bug 219628)
+ * Improve History View (new actions in Affected Paths) (bug 218480)
+ * Update JavaHL 1.5.0 connector binaries to alpha2 version (bug 221506)
+
+Fixes:
+ * Compare window opens behind Revert dialog (bug 219775)
+   + special thanks to Steve Streeting
+
+ * Importing folder from SVN using New Project Wizard - strange behaviour (bug 212746)
+   + special thanks to Michael Spector, Gadi Goldbarg
+
+ * Check compatibility with Mylyn 2.3.0 task creation API (bug 221498)
+ * The '~' sign is not accepted while defining svn:ignore property (bug 221472)
+ * Revise and simplify History View code (bug 219793)
+ * In Synchronize View operation starts before dialogs (bug 221133)
+ * Properties View has old data, while reading new props. (bug 219572)
+ * Update base table sorter (bug 219583)
+ * Fix images disposing (bug 219455)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080218 [18 February 2008]
+
+Fixes:
+ * Change sets on an unavailable Subversive repository disappear (bug 219212)
+   + special thanks to Pim Broekhof
+   
+ * Buttons works incorrectly in history view
+ * Deleted files stay present in synchronize view after commit
+ * NPE when deleting resource inside commit dialog
+ * Invalid date ranges for revision folding in history view 
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080214 [14 February 2008]
+
+Features:
+ * Implement compare and replace actions for branches and tags. (Bug 217553)
+   + special thanks to Andrea Polci
+   
+ * Enhance automatic project share (bug 211399)
+   + special thanks to Max Rydahl Andersen
+   
+ * Two URLs merge mode also should use Merge View (bug 217856)
+ * Add revision folding ability to History view (bug 211410)
+ * Use latest SVN 1.5 binaries (bug 218472)
+ * Open external editor if no built-in editors exists for this file type (bug 218485)
+ * Improve History View (new actions in Affected Paths) (bug 218480)
+ * Add local history to History View (bug 218468)
+
+Fixes:
+ * Team Synchronization reset "remove from view" after each file change (bug 207026)
+   + special thanks to Pawel Piskunowicz
+   
+ * Reported progress is incorrect almost always (it is doubled) (bug 216883)
+   + special thanks to Ilya Klyuchnikov
+   
+ * Conflicts are not shown in Incoming Mode with ChangeSets (bug 189094)
+   + special thanks to Marko Schulz
+   
+ * Some jsp files which have utf-8 encoded characters don't displayed correctly in compare window (bug 211568)
+   + special thanks to YounJung Park
+   
+ * Add warnings for operations, which modify tags. (bug 217844)
+   + special thanks to Edoardo Comar
+   
+ * Replace errors in creating tags and branches with warnings. (bug 217845)
+   + special thanks to Chris Velevitch
+   
+ * java.lang.StackOverflowError when trying to share a new project to SVN (bug 217529)
+   + special thanks to Leo Dos Santos
+   
+ * Replace With > Revision... should mark replaced files dirty (bug 218600)
+   + special thanks to Daniel Hirscher
+   
+ * Problematic configuration in build 20080129 (bug 218647)
+   + special thanks to Alon Peled
+    
+ * Keep ignored resources for "Replace With..." actions (bug 211241)
+ * UI blinks when commit window is called from Package explorer (bug 218136)
+ * Change sets commit fails (NPE) (bug 217291)
+ * Merge two repository browsers for dialogs into one. (bug 217289)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080129 [29 January 2008]
+
+Features:
+ * Add "Create patch file" action to the synchronize view drop-down. (bug 216141)
+   + special thanks to Felix Berger
+
+ * Show conflicting resources in Commit dialog (bug 211404)
+   + special thanks to Gabor Liptak
+
+ * Allows to override committer name for different protocols (bug 211417)
+   + special thanks to Mark
+
+ * Allow to select resources for Create Patch action (bug 211413)
+   + special thanks to Kaneider Daniel, Konstantine Kirenko
+
+ * Add Ignore action to Commit dialog (bug 211407)
+ * Add "Resolve conflicts" and "Mark as merged" actions to Commit dialog (bug 215963)
+ * Add 'Lock" and "Unlock" actions to Commit dialog (bug 215968)
+ * Add "Create patch file" action to Commit dialog (bug 215962)
+ * Add "Replace With" action to Commit dialog (bug 215966)
+ * Add "Compare With" action to a Commit dialog (bug 215964)
+ * "Add to svn:ignore" action in "Add to version control" dialog drop down (bug 216004)
+ * Add "Lock" and "Unlock" actions to synchronize view drop-down menu. (bug 216142)
+ * Add "Show Properties" action to a synchronize view drop down. (bug 216144)
+ * Add "Set properties" and "Set keywords" actions to synchronize view drop-down menu. (bug 216143)
+ * Improve drop-down menu in SynchronizeView (bug 216140)
+ * Improve History View Affected Path Composite drop-down menu. (bug 216264)
+ * Support latest SVN 1.5 API changes (bug 216473)
+
+Fixes:
+ * Commit errors seems to not be shown in console (bug 215188)
+   + special thanks to Kristoffer Peterhansel
+   
+ * It is impossible to install connectors sources on Linux (bug 216699)
+   + special thanks to Ilya Klyuchnikov
+
+ * "Report revision change" option does not work (bug 216090)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20080116 [16 January 2008]
+
+Features:
+ * Improve SVN properties support (bug 211403)
+   + special thanks to Olavo Lira
+
+ * Improve validation in SVN Properties dialog (bug 211402)
+ * Allow to work with non-conflicting resources for "Override and ..." operations (bug 211239)
+ * Implement full tsvn properties support (bug 214894)
+
+Fixes:
+ * Subversive feature not installable from Ganymede Staging Update Site (bug 213975)
+   + special thanks to Markus Knauer
+   
+ * Project migration from polarion to eclipse didn't work (bug 213727)
+   + special thanks to George Lindholm
+
+ * error when trying to commit with enabled bugtraq properties (bug 214609)
+   + special thanks to Steve Ulrich
+
+ * Comparing remote files in SVN Repositories view doesn't work (bug 207923)
+   + special thanks to Matthias Erche
+
+ * Compare: client library returns null value (bug 211260)
+   + special thanks to Samyem
+   
+ * Initial project share to a new repository URL is shared to path "null" under certain circumstances (bug 214839)
+   + special thanks to Daniel M. Zimmerman
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20071221 [21 December 2007]
+
+Fixes:
+ * Subversive 1.1.7 Bugreport broken (bug 204970)
+   + special thanks to Werner Keil
+   
+ * Create Unified Diff action handles direction incorrectly (bug 211272)
+   + special thanks to Artem Tikhomirov
+   
+ * Imporve "Problem Dialog" (bug 211398)
+   + special thanks to Joern Zaefferer
+ 
+ * Show the difference between the modified version and the current SVN revision (bug 211250)
+ * SVN 1.5 support changes (bug 213289)
+ 
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20071214 [14 December 2007]
+
+Fixes:
+ * Subversive Preferences dialog is substantially too wide (Bug: 212033)
+   + special thanks to Jonathan Amir
+   
+ * Label Decorations preview widget in preferences window is too small (Bug: 212029)
+   + special thanks to Jonathan Amir
+   
+ * bugtraq properties not read for new files (Bug: 211422)
+   + special thanks to Ben Turner
+
+ * Check compatibility with the Eclipse Ganymede version (Bug: 212732)
+ * tsvn:logminsize is not handled (Bug: 212996)
+ 
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20071210 [10 December 2007]
+
+Features:
+ * Spell checking support in Commit dialog and Add/edit commit template is absent (bug 210797) 
+
+Fixes:
+ * Rework old-style plug-in manifests (bug 212125)
+   + special thanks to Thomas Hallgren
+   
+ * NPE in SVNRemoteStorage (bug 211392)
+   + special thanks to Mike Price
+   
+ * ClassCastException in LocalShowAnnotationOperation (bug 211275)
+   + special thanks to Frank Bille
+   
+ * Handling % in svn+ssh URLs (bug 211418)
+   + special thanks to Scott Riggins, Jack Newton
+   
+ * CPU hogging (bug 207953)
+   + special thanks to Jorg von Frantzius
+   
+ * GUI hangs (bug 204038)
+   + special thanks to Jappe
+   
+ * classes are packaged in jar files and not in the normal folders structure
+   + special thanks to Alon Peled
+
+ * Incorrect peg revision used for incoming update on svn:externals resources in Synchronize View (bug 211439) 
+ * Make an Hyperlink in the comment clickable (eg. in the history view) (bug 211244)
+ * NPE in Show History (bug 211276)
+ * ArrayIndexOutOfBoundsException in MigrateToEclipse operation (bug 211277)
+ * Attempted to beginRule: P/..., does not match outer scope rule... (bug 211269)
+
+--------------------------------------------------------------------------------
+
+Version 0.7.0.v20071123 [23 November 2007]
+
+Features:
+ * Add "ignore externals" option to "Find/Checkout As" wizard
+
+Fixes:
+ * Port changes in the connection window do not affect the connection (bug 208256) 
+   + special thanks to Yaron Mazor
+ 
+ * merge UI does not show any changes
+   + special thanks to Chris West
+
+ * Share Project(s) does not recognize SVN-meta if location with same repository root exists (bug 210683)
+ * Merge UI very slow and fails for projects which names on FS differs in compare to repository (bug 210643)
+ * Error while representing the remote content of the folder with incorrect externals property. (bug 210387)
+ * Rename does not work in SVN Repositories view
+ * ClassCastException is logged when annotating resources from the Synchronize View
+ * Merge UI uses incorrectly encoded URL's (bug 210399)
+ * Compare after refactoring problems (bug 210272)
+ * Fixing issues with "Migrate To Eclipse" action
+ * Add "Migrate to Eclipse" action description into help
+ * build.properties for UI localization plug-in was corrected
+ * SVN client library connector interfaces reworked according to Eclipse guidelines (naming conventions etc.)
+ * switched and svn:externals resources support enhancement
+ * issue in reconstruction URL and PEG pairs from history
+ * incorrect labels in compare UI panels
+ * not encoded URL in AffectedPathsComposite.java
+ * branch operation works incorrectly for multiple project layout when called for working copies
+ * history messages fetched for outgoing changes in context of Incoming Change Set's
+ * file:// and file:/// protocol URL's also should be encoded
+ * support of svn:externals which is not a direct children for the resource on which svn:externals is specified
+ * LocateResourceURLInHistory now works for deleted resources also
+ * incorrect log messages in Change Set mode of merge UI
+ * Mylyn integration refers to incorrect class name
+ * New resources inside new folder does not appear in the Synchronize View
+ * merge UI does not work in "reverse" mode
+ * Enhance compare editor titles readability
+
+--------------------------------------------------------------------------------
+
+Version 1.1.8 [23 October 2007]
+
+Features:
+ * Allow project disconnection from the "Discard Location" dialog (SBV-6187)
+   + special thanks to Scott Harper
+
+ * Make the history of the entered comments configurable. 5 comments are way too less. (SBV-5832)
+   + special thanks to Paolo Vedovato
+ 
+ * Allow checking out projects as folder into nonversioned folders. (SBV-6286)
+ * Allow new resources to be committed into the branch created from the working copy (SBV-6268)
+ * Rework merge UI in order to use standard API's instead of proprietary extensions (SBV-6034)
+ * Add option which enables/disables svn:externals browsing in the SVN Repository Exploring perspective (SBV-5665)
+ * Add decoration on SVN Repositories perspective for resources linked with svn:externals (SBV-5666)
+
+Fixes:
+ * Password prompt is shown time-to-time when svn:externals present even if "save" option specified (SBV-6307)
+   + special thanks to Lira Olavo, CARASSO Felipe
+
+ * Incompatibility between svn:1.4.3 and svn:1.4.4 working copies (SBV-5630)
+   + special thanks to Fischer
+
+ * SaveProjectMeta operation copied lot of needless files (SBV-6245)
+   + special thanks to Michal Staruch
+ 
+ * Share Projects operation fails with new repository location (SBV-6094)
+   + special thanks to Alexander Wahl (synchronity GmbH)
+
+ * NPE in Share Projects operation (SBV-6180)
+   + special thanks to Michel, Marko Korhonen
+
+ * NPE in RepositoryContentProvider when repository is not accessible (SBV-6045)
+   + special thanks to Dennis Vredeveld
+
+ * Problems with class import when using Subversive API (plug-in is incorrectly packaged) (SBV-6033, bug 204421)
+   + special thanks to Matthias Erche (forum member), Alon Peled, Nikolaos Tsanakas, Yaron Mazor
+
+ * NPE in HistoryView when it is being initialized (SBV-6063)
+   + special thanks to Jens Gabe, Mark Homan
+
+ * Messages are shown in Change Set's mode only if Change Set's enabled before synchronize with repository is started (SBV-6032)
+   + special thanks to Vladimir Lapacek (forum member) 
+
+ * Disallow error reporting when status cache load is cancelled (SBV-5877)
+   + special thanks to Belousov Eugeny
+
+ * "Negative revision number" for quick-diif annotate over empty file (SBV-6314)
+ * Deleted projects detection time-to-time fails (SBV-6311)
+ * Add validation in the plug-in preferences (SBV-6183)
+ * ClassCastException when importing project from SVN (SBV-4513)
+ * Disallow error reporting for SaveProjectMetaOperation (SBV-6113)
+ * ClassCastException if working copy is damaged (SBV-5906)
+ * Exception when hotkey is used without selection (SBV-5944)
+ * svn:externals browse in SVN Repositories view fails if whitespace is present between revision number and revision key (SBV-5943)
+ * Provide user with the correct notification if the selected client library cannot be loaded (SBV-6061)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.7 [23 August 2007]
+
+Features:
+ * Browse svn:externals in SVN Repositories Explorer [apply patch] (SBV-5641)
+   + special thanks to contributor Rob Clark
+
+Fixes:
+ * Compare on renamed files fails (bug 188306)
+   + special thanks to Marko Schulz
+
+ * {Date} tag in label decoration is always showing date in european standard (SBV-5593)
+   + special thanks to George Michelson
+
+ * Credentials prompt is always shown with the Native JavaHL client (SBV-5625)
+ * Apply SVN Kit client library fixes (SBV-5626)
+ * Problems in the Subversive help plug-in (SBV-5244)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.6 [15 August 2007]
+
+Features:
+ * Move localization into the separate feature (SBV-5562)
+ * Subversive help plug-in improvements (SBV-5244)
+
+Fixes:
+ * [package explorer] Should Collapse MT Parent Packages in Hierarchy Presentation (bug 189976)
+   + special thanks to Adam Cabler, Michael Valenta
+
+ * Subversion 1.1.5 breaks my PKI usage (SBV-5560)
+   + special thanks to Chris West
+
+ * Incorrect peg revision specified for "Add Revision Link" action (SBV-5522)
+   + special thanks to Chris West
+
+ * The "Tip for improvement form" needs work (SBV-3663)
+   + special thanks to Ken Geis
+
+ * Projects inside Projects not showing incoming changes (SBV-5547)
+   + special thanks to crashedworld (forum member)
+
+ * Incorrect replacement of file:// to file:/// (SBV-5532)
+   + special thanks to Marcel Albert
+
+ * Access violation in libsvnjavahl-1.dll (Revert binary to version 1.4.3) (SBV-5449)
+   + special thanks to Carolin Koehler
+
+ * Repository locations are lost when Eclipse IDE is crashed with "PermGen space: OutOfMemory" error (SBV-5460)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.5 [31 July 2007]
+
+Fixes:
+ * Resources cannot be added to source control with SVN Kit client (SBV-5376)
+   + special thanks to Erik Dick, Mark Smithson, Denis Souza, akg-i, 
+   
+ * NPE when synchronizing empty working sets with repository (SBV-5353)
+   + special thanks to Carlo Teubner, Robert Einsle, Lubomir Marinov
+ 
+ * Synchronous server access freezes eclipse (SBV-5428)
+   + special thanks to Hans-Christoph Wirth
+
+ * Create Subversive help plug-in [resolving help plug-in issues] (SBV-5244)
+ * "No changes found" message when comparing two files with different names on repository (SBV-5426)
+ * Add to working set does not work when "Find Projects" is selected in the Checkout wizard (SBV-5424)
+ * Invalid radio button selection on the first page of Share Projects wizard (SBV-5420)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.4 [27 July 2007]
+
+Features:
+ * Apply french translation patch sent by Prophessi - SD-mdA (SBV-5291)
+   + special thanks to contributors Prophessi - SD-mdA and Stephane DUCAS, Victoria Anghel, Imed Mami, Sandy Lescaudron
+
+ * Option to switch off deleted projects detection (SBV-5197)
+   + special thanks to Muchu (forum member)
+
+ * Adding projects to synchronized working set's (SBV-5198)
+   + special thanks to chrisahn (forum member)
+
+ * Sort repository locations in the Repositories tree (SBV-5199)
+   + special thanks to chrisahn (forum member)
+
+ * Create Subversive help plug-in (SBV-5244)
+
+Fixes:
+ * NPE in AbstractSVNTeamAction under Eclipse 3.3 if selection is empty (SBV-5232)
+   + special thanks to Stanislaw Osinski, Mikael Uvebrandt
+
+ * Command conflict messages under Eclipse 3.3 (SBV-5208)
+   + special thanks to Will Horn
+
+ * NPE in Show History operation with Native JavaHL client (SBV-5179)
+   + special thanks to Alexey
+
+ * NPE in Quick-diff based annotation under Eclipse 3.3 (SBV-5183)
+ * NPE in WorkingSetDecorator under Eclipse 3.3 (SBV-5258)
+ * NPE when Show History/Show Annotation called from Synchronize View for deleted file (SBV-5311)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.3 [13 July 2007]
+
+Features:
+ * Add SVN menu and toolbar button (SBV-2501)
+   + special thanks to contributor Rene Link
+   + special thanks to Marcel Schulte, Daniel Winterstein, Bjorn Schorre
+
+ * Add global shortcut keys for SVN actions (SBV-3494)
+   + special thanks to contributor Rene Link
+   + special thanks to Thomas Bayen, Stig Kleppe-Jorgensen
+
+ * Support Mylar to Mylyn project name change (SBV-4971)
+   + special thanks to Jim Lombardo, Omry Yadan, Nikola Milutinovic, Kevin Baughman, Antonel Pazargic
+
+ * Check compatibility with Eclipse 3.3.RC3 IDE (SBV-4973)
+ * Use latest Subversion binaries (SBV-5045)
+ * Use SVN Kit 1.1.2 binaries (SBV-5035)
+ * Use open-source JavaMail version (1.4) (SBV-4986)
+ * Add option to switch off console pattern matcher (SBV-4761)
+
+Fixes:
+ * Usage of disposed font in the History View (SBV-5048) 
+   + special thanks to Jorg von Frantzius
+   
+ * Workaround for the deadlock bug in the Eclipse IDE console (194456) 
+   + special thanks to Rafael Chaves
+   
+ * Remove the annoying dialog of resource history (Eclipse.org, Bug #188311)
+   + special thanks to Marko Schulz
+
+ * NPE in SaveProjectMeta operation (SBV-4871)
+   + special thanks to Karl Godel
+
+ * Zend Technologies patch: fixes deadlock problem in SVNTeamPlugin activation (SBV-4589)
+   + special thanks to Zend Technologies
+ 
+ * NPE in SVN Properties when view is disconnected in background thread (SBV-4869)
+ * Negative revision number in Show Annotation operation (SBV-4179)
+ * BadLocationException in "Add hyperlink to console" operation (SBV-4421)
+ * NPE in "Get File Content" operation on files without extensions (SBV-5094)
+ * Cache incorrectly filled after case-sensitive rename on Windows-based platforms (SBV-5100)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.2 [28 April 2007]
+
+Features:
+ * Create Subversive SDK (SBV-4329)
+   + special thanks to Yaron Mazor
+
+ * Make resources clickable in the SVN Console (SBV-2709)
+   + special thanks to Vladimir Lapacek (forum member)
+
+Fixes:
+ * Speedup Pattern's usage (SBV-4396)
+   + special thanks to contributor Gabor Liptak
+
+ * peg revisions for compare operation (SBV-4397)
+   + special thanks to contributor Pavel Zuev
+
+ * ClassCastException in Show History View operation (SBV-4007)
+   + special thanks to Epichler, Volker Berlin, Alessandro Damiani, Bruce Alspaugh, Alan MacKenzie
+ 
+ * NPE in Show History View operation (SBV-4088, SBV-4047)
+   + special thanks to Bjorn Voss, Tom Allantonie, Paolo Vedovato, Omry Yadan, J.Ramsdale, Tom Hensel
+ 
+ * Widget is disposed exception in History View (SBV-4079, SBV-4374, SBV-4082)
+   + special thanks to Uwe Peuker
+
+ * NPE in Subversive integration for Mylar (SBV-4380)
+   + special thanks to Thomas Spiessens (forum member) 
+
+ * SVN History implementation does not respect Local History (SBV-4204)
+ * ClientException error code should be copied to ClientWrapperException (SBV-4362)
+ * "Team->Copy To" action does not allow copying into non-versioned folders if "Keep History" is not selected (SBV-4402)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.1 [6 April 2007]
+
+Features:
+ * Integration with Eclipse 3.2 History View (PLC-1111)
+   + special thanks to eu
+
+ * Revert or delete any file on the commit screen (SBV-2621)
+   + special thanks to Gabor Liptak
+
+ * Eclipse 3.2 IFileHistoryProvider interface should be implemented (SBV-3886)
+   + special thanks to Armin Bruckhoff
+ 
+ * Enhance Mylar integration (SBV-3865)
+   + special thanks to Eugene Kuleshov
+
+ * Copy/paste from SVN history (SBV-2655)
+   + special thanks to Felipe Carasso
+
+ * Remove unversioned files while reverting (SBV-3230)
+   + special thanks to Reinhard Brandstaedter
+
+ * Refine project dependencies (move JDT dependency to extension point)(SBV-2687)
+   + special thanks to Lothar Werzinger, benza (forum member)
+
+ * Allow users to define --ignore-ancestry option (SBV-3721)
+   + special thanks to mburns (forum member)
+
+ * Place to specify the SSH port (SBV-2665)
+   + special thanks to Mike De Haan
+
+ * Proxy tab is missing when non-default client selected (SBV-3720)
+   + special thanks to Benjamin Zeiss
+ 
+ * Disable immediate switch while branch/tag from WC if selected resources contains added but not committed resources (SBV-3854)
+
+Fixes:
+ * Share existing projects under Linux rewrites local changes (SBV-3722)
+   + special thanks to Vincent Munier
+
+ * "Operation is cancelled" dialog. This is a GUI blooper. No dialog like this should come up. (SBV-3714)
+   + special thanks to Adam Kiezun, Omry Yadan
+
+ * Mark As Merged failure (SBV-3898)
+   + special thanks to A. Fachat, Lars Vogel, Kannky, A. Schmidt
+
+ * Subversive 1.1.0 with SVN Kit 1.1.1 not working properly with PKI (SBV-3813)
+   + special thanks to Chris West
+
+ * "Update To" silently reverts all changes (SBV-2418)
+   + special thanks to Hochsteger Andreas (OI&T V)
+
+ * Incorrect team menu enablement (SBV-3732)
+   + special thanks to Fredy
+ 
+ * Widget is disposed exception (SBV-3910)
+ * Projects names are displayed incorrectly while Checkout As with Find project option (SBV-3872)
+ * Set property is not applied recursively to added but not comitted resources (SBV-3916)
+ * Deletion of svn:externals property processed incorrectly (SBV-3936)
+ * Branch/tag misbehaviour (SBV-3961)
+ * Setting svn:ignore property is not reflected properly (SBV-3977)
+ * NPE in History View if project is deleted outside Eclipse IDE (SBV-3987)
+ * NPE while connecting to project with damaged SVN-metainformation (SBV-3990)
+ * Reduce temporary files usage when opening files from repository (SBV-3994)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0 Release [6 March 2007]
+
+Features:
+ * Externals freezes in TAG (SBV-3698)
+   + special thanks to Olavo Lira, Felipe Carasso
+
+ * Internationalization. Prepare all string resources to be internationalized (PLC-276)
+
+Fixes:
+ * Wrong internationalization (SBV-3604)
+   + special thanks to Diego Pires Plentz, Martin Gilday, Ken Geis
+
+ * Subversive seems to be creating extra displays which are unsupported on SWTon GTK (SBV-3691)
+   + special thanks to Michael R. Head
+
+ * Duplicated objectContribution IDs (SBV-3658)
+   + special thanks to oliviert (forum member)
+
+ * Conflict editor failed to open (SBV-3711)
+ * "Path is not a working copy directory" error with Native JavaHL client (SBV-3557)
+ * NPE while 'Check out as' with option 'Find projects in the subdirectories of the selected resources' (SBV-3626)
+ * NPE in CheckoutAs Wizard while choosing "Checkout as folder" option and perform finish (SBV-3726)
+ * NPE while repair project's svn meta in "Repair Project" dialog (SBV-3724)
+ * NPE in HistoryView (SBV-3671)
+ * Check out project as folder into existing project misbehaviour (SBV-3625)
+ * Checkout as folder rewrites svn:externals property (SBV-3683)
+ * Branch/Tag from working copy operation creates branch/tag from repository resources (SBV-3692)
+ * Share tracker project action have visual defects + exception in the end (SBV-3499)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.RC6 [23 February 2007]
+
+Features:
+ * Text decoration improvments (SBV-3457)
+   + special thanks to contributor Dann Martens
+   
+ * Japanese Localization: apply provided patch (SBV-3598)
+   + special thanks to contributors Takashi Okamoto, Yae Suzuki
+   
+ * Export/Import Subversive preferences: apply provided patch (SBV-3599)
+   + special thanks to contributor Rene Link
+
+ * Import and Export automatic properties (SBV-3485)
+   + special thanks to Gregory Gerard
+
+ * Add ability to enter target resource name in "Copy To" action (SBV-3417)
+   + special thanks to Stefan Zeiger
+
+ * Include SVN Kit 1.1.1 (SBV-3490)
+ * Include latest Subversion binaries (1.4.3) (SBV-3492)
+ * API: Checkout into existing projects like in CVS (PLC-1156)
+
+Fixes:
+ * NPE in Interactive Merge UI (SBV-3537)
+   + special thanks to contributor Rene Link
+
+ * Checkout into the folder which is a symbolic link failed (SBV-3540)
+   + special thanks to Krystian Nowak
+ 
+ * Problems with SVN ignore (SBV-2842)
+   + special thanks to Piet Ritzen
+
+ * API: Fetching file content in synchronize view is not cancellable (SBV-2867)
+   + special thanks to Adam Kiezun
+
+ * Allow semicolon-separated properties in "Auto-props" settings (SBV-3506)
+   + special thanks to Gregory Gerard
+
+ * NPE if synchronize with repository completely failed (SBV-3476)
+   + special thanks to Rostronic
+
+ * "URL is not related to the repository" for externally relocated projects in RC5 (SBV-3459)
+   + special thanks to Leigh Warren
+
+ * Subversive does not see command-line svn switch (SBV-3481)
+   + special thanks to irobertson (forum member) 
+ 
+ * SSH Port Problem (SBV-3434)
+   + special thanks to Nils Grabbert (forum member)
+
+ * RestoreProjectMetaOperation shouldn't report file system security exceptions (SBV-3483)
+   + special thanks to Valerio Scuderi
+
+ * Not all temporary files are deleted (SBV-3477)
+   + special thanks to Lukjel
+
+ * Refactor fails when refactoring one of top packages (SBV-3498)
+   + special thanks to zartc (forum member), cmenzel (forum member), Diego Pires Plentz, Ken Dobson, Richard Musiol
+ 
+ * "Cannot non-recursively commit a directory deletion" error with native client (SBV-3497)
+   + special thanks to Paul
+
+ * "Unrecognized node kind" exception while synchronizing with repository (SBV-3161)
+   + special thanks to Roberto Gonzalez, Ben Christensen, John Francis, Renato Bonomini, Thomas Jachmann
+  
+ * Share multiple projects wizard misbehaviour (SBV-3525)
+ * Repository location URL cannot be changed to non-valid even if no project attached (SBV-3538)
+ * Fetch Content Operation Failure (SBV-3482)
+ * NPE if resources is inaccessible due to some reason (f.e. deleted in background thread) (SBV-3450)
+ * Restore Default Preferences operation cannot be canceled (SBV-3570)
+ * Deleted resources overlay image is not shown if the resource that is scheduled for deletion is external resource (SBV-3583)
+ * All the preferences should be saved in the UI plugin store (SBV-3571)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.RC5 [2 February 2007]
+
+Features:
+ * API: Multiple project share required (SBV-2531)
+   + special thanks to Peter M. Murray, Alouf, jtonic, mgcinoz (forum members)
+
+ * API: Multiple projects merge (SBV-1955)
+   + special thanks to Peter M. Murray, Alouf, jtonic, mgcinoz (forum members)
+
+ * API: Multiple projects switch (SBV-3398)
+   + special thanks to Peter M. Murray, Alouf, jtonic, mgcinoz (forum members)
+
+ * Add Open With submenu to HistoryView pop-up menu (SBV-3439)
+
+Fixes:
+ * Allow branching/tagging from Package Explorer even if resources are modified (SBV-3284)
+   + special thanks to Sibylle Peter
+
+ * Widget is disposed in update operation (SBV-3360)
+   + special thanks to Crumley, Christopher Bradford
+
+ * Create Patch: at least one revision must be local for a pegged diff (SBV-3406)
+   + special thanks to Adam Kiezun, WhiteFang (forum member)
+   
+ * svn:externals commit behavior (SBV-3433)
+   + special thanks to Lorenzo (forum member)
+
+ * NPE in Share Project operation (SBV-3271)
+ * Apply Recursively Multiple Properties (SBV-3420)
+ * Export Operation Failure (SBV-3419)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.RC4 [20 January 2007]
+
+Features:
+ * API: Improve IMailSettingsProvider extension point (SBV-3234)
+   + special thanks to Bjorn Schorre
+
+ * Show created report when sending fails (SBV-2615)
+   + special thanks to Ruediger Gubler, Andreas Mayer, Peter Riishoj Brinkler
+
+ * Add UI for specifying auto-props (like in svn config file) (SBV-3237)
+ * API: Check package layout and refactor if required (SBV-3235)
+
+Fixes:
+ * OutOfMemoryError throwed for very large projects (SBV-3221)
+   + special thanks to Samyem Tuladhar, Leigh Warren
+
+ * NPE in RemoteStatusOperation (SBV-3275)
+   + special thanks to Paul Kendall
+
+ * Infinite loop while caching SVN meta-information (SBV-3258)
+   + special thanks to Felipe Carasso, Daniel Hoh, szeiger (forum member), apetrov (forum member), WhiteFang (forum member), Alouf (forum member), jtonic (forum member), asaremba (forum member)
+
+ * Exception in org.eclipse.team.svn.core.SVNTeamPlugin.start() (SBV-3168)
+   + special thanks to Fabio Zadrozny
+
+ * 404 Not found from time to time (SBV-3175)
+   + special thanks to Robert Einsle
+
+ * NPE while caching SVN meta-information (SBV-3206)
+   + special thanks to Jon
+
+ * ActivityCancelledException sometime processed by mail reporter (SBV-3197)
+   + special thanks to Martin Brehm, Dean, rzeznic, Kurt Zettel
+
+ * NullPointerException in RepositoryPropertiesComposite (SBV-3269)
+ * Merge does not work for resources checked out with svn:externals property (SBV-3236)
+ * Exceptions when file replaced with folder without file deletion committing (SBV-3340)
+ * Team->Set Property action works incorrectly (SBV-3338)
+ * Annotation does not work for incoming additions (SBV-3327)
+ * Team menu does not work properly (SBV-3315)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.RC3 [12 January 2007]
+
+Features:
+ * Browse button in the simple mode of the Branch/Tag dialogs (SBV-3149)
+   + special thanks to Alouf (forum member)
+
+ * Allow quick switch between revisions during compare operation (SBV-1930)
+   + special thanks to Chris Melikian, Francois Fernandes
+
+ * Support svn:externals property (PLC-445)
+   + special thanks to Bjorn Schorre, Thomas Jachmann, Reinhard Brandstadter, Andreas Boeckler
+
+ * Add ability to navigate up to parent level in repository browser (SBV-3042)
+
+Fixes:
+ * Excessive work in history view (SBV-3145)
+   + special thanks to contributor Rene Link
+
+ * Incorrect old SVN clients filtering (SBV-3144)
+   + special thanks to carfield (forum member)
+
+ * NPE while synchronizing with repository (SBV-3088)
+   + special thanks to Roland Oldenburg
+
+ * Fix bugtraq integration bug (when bug id is empty) (SBV-3051)
+   + special thanks to contributor Takashi Okamoto
+
+ * Errors are suppressed in time of commit operation with SVN Kit selected (SBV-2767)
+   + special thanks to Tom Hensel
+ 
+ * NPE when svn:externals working copy is damaged (SBV-3173)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.RC2 [22 December 2006]
+
+Features:
+ * "Stop revision can not be less than start revision" validation in Merge dialog has no sense (SBV-3030)
+   + special thanks to Judith Burgstein
+
+ * Allow switch to be performed not only for projects but for folders and files too (SBV-2825)
+   + special thanks to L.Simon
+
+ * Show versioned resources at the top of the list when doing a commit (SBV-2982)
+   + special thanks to Chris Dail
+
+ * Integrate Eclipse 3.2 table sorting with our current solution (SBV-2281)
+   + special thanks to Andreas Mayer
+
+ * Support of BugTraq properties (SBV-1619)
+   + special thanks to Christopher Pierce (forum member)
+
+ * Make Mylar integration compatible with Mylar 1.0.0 version (SBV-2907)
+   + special thanks to Eugene Kuleshov
+
+ * Show missing resources status separatelly in the Commit Dialog and warn before update if missing resources was found (SBV-2768)
+ * Show all available information about repository resource in Repository Tree using tooltips (SBV-3022)
+ * Add selected resources count label at the right bottom corner of the commit dialog (SBV-3024)
+
+Fixes:
+ * Change "Subversive" submenu item position in the Eclipse IDE Help menu (SBV-2437)
+   + special thanks to Cristinel Angheluta, Daniel Spiewak
+
+ * Location is copied after editing its properties (SBV-2940)
+ * Testing and bug fix for the 1.1.0.RC1 Synchronize View (SBV-2937)
+ * NPE in HistoryView on restricted folders (SBV-3009)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.RC1 [08 December 2006]
+
+Features:
+ * Paste selected resource names to the commit message in Commit Dialog (SBV-2438)
+   + special thanks to StefanC (forum user)
+
+ * Add ability to show the immediate parent, direct child of (...) and full path up to root for the tag and branch in the project label (SBV-2805)
+   + special thanks to Dann Martens (contributor), Alouf (forum member)
+
+ * Allows to select revision manually in "Add Revision Link" dialog (SBV-2785)
+   + special thanks to J S Green (forum member)
+
+ * Support unified method of multiple and single branch/tag operations (SBV-2074)
+   + special thanks to Thomas Spiessens (forum member), Felipe CARASSO
+
+ * Include the latest native Subversion binaries and the latest JavaSVN (SVNKit) (SBV-2766)
+ * Make Mylar integration compatible with the latest Mylar version (SBV-2907)
+ * Introduce crash recovery API for the SVN Team Core module (SBV-2856)
+
+Fixes:
+ * New files are added and committed even when they are unchecked (SBV-2803)
+   + special thanks to jmiller (forum member)
+
+ * Slow down while synchronyzing with repository (SBV-2787)
+   + special thanks to Panagiotis Korros (forum member), Adam Kiezun, afasano (forum member)
+
+ * FW: SVN History - Compare shows svn rev tag wrong version (SBV-2900)
+   + special thanks to David Koontz, Marco Perrando
+
+ * NPE in SVNFolderListener (SBV-2875)
+   + special thanks to Laurent Gaches
+
+ * NPE in Checkout As wizard in case of background project disconnection (SBV-2846)
+   + special thanks to Marcello Ceschia (Univerty of Leipzig)
+
+ * Excessive repository callbacks after Eclipse restart (SBV-2658)
+   + special thanks to Thomas Feldmann
+
+ * Get Repository Folder Children operation failure (SBV-2534)
+ * Error when stopping version 1.1.0.M8 (SBV-2714)
+ * Remove leading slashes in the Resource Selection composite (SBV-2831)
+ * SVN Location change unconditionally causes relocate of existing shared projects (PLC-1066)
+ * Content presence detection works incorrectly for single/multiple project layout in Share wizard (SBV-2827)
+ * NPE in Info operation when project is closed/disconnected from source control in background thread (SBV-2889)
+ * NPE while caching resources (SBV-2886)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M9 [17 November 2006]
+
+Features:
+ * Remember size of dialog for comparison of revisions and allow to maximize it (SBV-2725)
+   + special thanks to Andreas Mayer
+
+ * Enable synchronizing and comparing with previous revisions for the copied files (SBV-2485)
+   + special thanks to Tomas Normark, Nimda Cinatas (forum users)
+
+ * Contribute SVN Project Reference Analizer for Project Set pligin (SBV-2053)
+
+Fixes:
+ * NPE in Compare operation (SBV-2558)
+   + special thanks to Mark Cooke, Samuel Monsarrat, Pavel, Samant Maharaj, Mark Stralka, Dan Harmer, Patrick, Ignasi Marimon-Clos, Harlan Iverson, Samyem, Stefano Bagnara, Leonid Vasilenko, Barry Kaplan, J. Henne, Dirk, Lee Mercury, Tushar Pokle, B.O.Smievoll, Ben R Vesco, Lars S.-Helldorf
+
+ * Projects are sometimes disconnected after eclipse restart (SBV-2576)
+   + special thanks to Gordon, Uwe Peuker, Stefan Wurzinger, tom hensel <th@macina.com>
+
+ * Initialize Project operation failure (SBV-2628)
+   + special thanks to Michael Goddard
+
+ * Native JavaHL does not support null as username or password (SBV-2555)
+   + special thanks to Uwe Peuker
+
+ * NPE in Get Resource List operation Failure Report (SBV-2569, SBV-2570)
+   + special thanks to Lee Mercury, Alex Nistico, A. Antivero, Andy Czerwonka, Euler, Robert Sanders
+
+ * Share sub-project fails (SBV-2604)
+   + special thanks to Joe Toth
+
+ * Checking out using New Project Wizard works incorrect (SBV-2536)
+   + special thanks to Arakasi, mortensi (forum users) 
+
+ * svn:ignore does not work in Subversive 1.1.0.M8 (SBV-2550)
+   + special thanks to alexandrupopescu, afasano (forum members), Jon Stevens, Andreas Boeckler 
+
+ * NPE in Share Project operation (SBV-2546)
+ * Compare with revision: IllegalArgumentException: negative revision numbers are not allowed (SBV-2549)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M8 [27 October 2006]
+
+Features:
+ * Support of Subversion 1.4 working copy format (SBV-2450)
+   + special thanks to Ian Rowlands, Stefan Chyssler, Stefan Wurzinger, Tom Hensel
+
+ * Add file protocol support (SBV-2527)
+   + special thanks to Thorsten Vitt
+
+ * Improve repository location layout (fonts, coloring, exceeding nodes) (SBV-2519)
+   + special thanks to Pavel Zuev
+
+ * Allow copying without history for "Copy To" action (SBV-2525)
+   + special thanks to Reinhard Brandstadter
+
+ * Allow to link History and Property Views with Synchronize Compare editor (SBV-2509)
+   + special thanks to Hubert Grininger
+
+Fixes:
+ * Checking out using New Project Wizard works incorrect (SBV-2536)
+   + special thanks to Arakasi (forum user), Mortensi (forum user) 
+
+ * Define peg revision for actions from Team menu (SBV-2502)
+   + special thanks to Marcel Schulte
+
+ * Test JavaHL Client usage, fix problems if found (SBV-2406)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M7 [20 October 2006]
+
+Features:
+ * Automatic recognition of repository structure (TRUNK, BRANCHES, TAGS) instead of current static layout (SBV-2389)
+   + special thanks to Diego Ernesto Malpica Chauvet, Felipe Carasso
+
+ * Respect project repository layout in "Create Branch", "Create Tag" operations (SBV-2388)
+   + special thanks to Diego Ernesto Malpica Chauvet, Felipe Carasso
+
+ * Compare file on double-click in commit and revert dialogs (SBV-2408)
+   + special thanks to Dario Lopez-Kasten
+
+ * Show text and property statuses separatelly in the resource selection dialog (PLC-640)
+
+Fixes:
+ * NPE in commit if repository is inaccessible (SBV-2476)
+   + special thanks to Roman Bruggisser, Dario Lopez-Kasten
+
+ * Add validation to comment view of "Problem Report" and "Tip for Improvement" dialogs (SBV-2498)
+   + special thanks to Hubert Grininger
+
+ * Incorrect behaviour of "Single Project" layout when sharing project (project shared into branches instead of trunk) (SBV-2445)
+   + special thanks to Kristoffer Peterhansel
+
+ * Enable checkout of svn:externals (SBV-2497)
+   + special thanks to Hubert Grininger, Reinhard Brandstadter
+
+ * ClassCastException in experimental merge (SBV-2475)
+   + special thanks to Stas, Alexandre, Andrew Bate, Doug Clinton, Lee Mercury
+
+ * NPE in Resources Changed operation (SBV-2503)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M6 [13 October 2006]
+
+Features:
+ * Define an option to provide case-sensitive as well as case-insensitive sort (SBV-2363)
+   + special thanks to candyman (forum user)
+
+ * "expand all" button in synchronize view (SBV-2392)
+   + special thanks to Pavel
+
+ * Place a splitter into Commit Dialog (SBV-2431)
+   + special thanks to vlp (forum user)
+
+ * Reconnect projects which metainformation is dropped (PLC-10750)
+ * Add Subversive menu items to the working sets team menu (SBV-2414)
+
+Fixes:
+ * Compare two files from repository shows inverted labels (SBV-2466)
+   + special thanks to Ken Geis
+
+ * Temporary files should be deleted (SBV-2442)
+   + special thanks to Pavel Zuev
+
+ * Optimize memory usage and speed up operation performance (PLC-1451)
+   + special thanks to Clint Dovholuk, Daniel Spiewak, Bart Elberg, Richard Vanhook, Samuel Charron, Marvin Toll
+
+ * NullPointerException in Override and Update for restricted folders (SBV-2447)
+ * SWT error in Annotate View when annotated file is empty (SBV-2448)
+ * 'Select All' and 'Deselect All' button work incorrect at resource selection panels (SBV-2446)
+ * NullPointerException in resource selection panel (SBV-2429)
+ * NullPointerException in "Share Project" wizard when "Single Project" layout selected (SBV-2428)
+ * "Access denied" in Override And Update operation (SBV-2424)
+ * Project names are obtained for two times while checkout (SBV-2426)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M5 [29 September 2006]
+
+Features:
+ * Integration with Mylar (PLC-1099)
+   + special thanks to jae (forum member)
+    
+ * Add ability to choose desired revision by hands (not from the list) (SBV-2362)
+   + special thanks to candyman (forum member)
+   
+ * Add ability to create an unified diff on any two revisions (SBV-2364)
+   + special thanks to candyman (forum member)
+ 
+ * Provide integration interfaces for Buckminster project (SBV-2412)
+ * Label decorations are not propagated to working sets (PLC-438)
+ * Check out to Working Set (PLC-901)
+ * Allow non-precise menu enablement in case of large projects (SBV-2417)
+
+Fixes:
+ * Compare from Repository View doesn't work on renamed files (SBV-2416)
+   + special thanks to Laszlo Varadi
+ 
+ * "Recources Changed" task frequently blinks in the right bottom IDE corner (SBV-2401)
+   + special thanks to Jorg von Frantzius, Dovholuk, Clint
+ 
+ * Spelling error in the menu item "Help > Subversive > Send Tip for Improvement" (SBV-2403)
+   + special thanks to Yesudeep J Mangalapilly
+ 
+ * JavaSVN reports statuses not only for requested resource but for it parents also [Remove debug exception] (SBV-2233)
+   + special thanks to Francois Struman
+ 
+ * Unknown node kind exception in time of update operation (SBV-2365)
+   + special thanks to Michael Mauthner
+
+ * NullPointerException in time of add to SVN operation (SBV-2368)
+   + special thanks to Matias Rodriguez
+   
+ * Poping up project context menu is very slow (PLC-485)
+ * Memory leak in commit dialog (SBV-2397)
+ * Find/Checkout as | Find disabled when called over .polarion folder in polarion project. (SBV-2355)
+ * NullPointerException in interactive merge implementation (SBV-2386)
+ * NullPointerException in time of share project with "multiple" layout selected (SBV-2400)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M4 [15 September 2006]
+
+Features:
+ * Add 'Branch from Revision' and 'Tag from Revision' actions to the History View (SBV-2352)
+
+Fixes:
+ * Problem with specifying user name directly in URL for svn+ssh protocol (SBV-2383)
+   + special thanks to Bronzegraf, reavertm (forum members)
+   
+ * Run Compare Operation in background (SBV-2366)
+   + special thanks to candyman (forum member)
+   
+ * Poping up project context menu is very slow (PLC-485)
+ * Enhance JavaSVN diffStatus() function behavior (SBV-2382)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M3 [8 September 2006]
+
+Features:
+ * Add an ability to edit share project commit message (SBV-2347)
+   + special thanks to bugmenot (forum user)
+
+ * Open system editors for repository files (SBV-2351)
+   + special thanks to Chris Melikian
+
+ * Support of the monolitic layout in share operation (SBV-2308)
+   + special thanks to Ken Geis
+
+ * Support of Quick Diff feature (PLC-1147)
+   + special thanks to Benjamin Pasero
+
+ * Add 'Link With Editor' button to the History View toolbar (SBV-2325)
+   + special thanks to Adam Brod
+
+ * Implement built-in annotation [like CVS "based on Quick Diff"] (SBV-2338)
+ * Provide ability to send bug report or tip for feature directly from Subversive UI (SBV-2346)
+ * Create 'Password Management' preferences page (SBV-2341)
+ * Create Property View and implement 'Link with Editor' feature for it (SBV-2329)
+ * AnnotationView improvement [merge lines with the same revision into on bundle] (PLC-286)
+
+Fixes:
+ * Deadlock with Subversive Plugin (SBV-2349)
+   + special thanks to rauar (forum user), Michael Valenta
+
+ * NullPointerException when project is deleted in time of internal cache refresh (SBV-2350)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M2 [1 September 2006]
+
+Features:
+ * Add an ability to choose if double-click opens or compares files in the History View (SBV-2326)
+ * Add 'Compare Current with Revision' menu item to the History View pop-up menu (SBV-2327)
+ * Interrelate items in drop-down menu and toolbar in the History View (SBV-2330)
+
+Fixes:
+ * Apply patch: change wrong "General" tab name to correct "Advanced" in repository settings validation (SBV-2313)
+   + special thanks to contributor Ken Geis
+ 
+ * NullPointerException in AbstractDecoratorWrapper (SBV-2312)
+ * Modified resources are not decorated with specified font and colors if they are locked (SBV-2314)
+ * The folder cannot be created in the location root if trunk/branches/tags are disabled (SBV-2315)
+ * 'Save password' checkbox is always checked after browsing repository (SBV-2317)
+ * FileNotFoundException while Get Contents action is performed for needs-lock file (SBV-2322)
+
+--------------------------------------------------------------------------------
+
+Version 1.1.0.M1 [23 August 2006]
+
+Features:
+ * Avoid subversive activation when there is no project shared with subversive (SBV-2288)
+   + special thanks to contributor Panagiotis Korros
+ 
+ * Commit sets like in CVS (PLC-1097)
+   + special thanks to contributor Alessandro Nistico
+ 
+ * Multiple resources properties edit (SBV-2011)
+   + special thanks to Erik (forum user)
+ 
+ * Customize resource text colors (PLC-1352)
+   + special thanks to Daniel Spiewak
+ 
+ * Add links to "Colors and Fonts" and "Label Decorations" pages on SVN Label Decorations page (SBV-2291)
+ * Improve SVN Console (SBV-2206)
+
+Fixes:
+ * diffStatus() function reports incorrect URL for moved resources (SBV-2248)
+   + special thanks to Adam Brod, Leonardo Barros, BalkanBoy (forum user), vsizikov (forum user)
+
+ * Plugin doesn't like semicolons in resource names (SBV-2294)
+   + special thanks to Ryan Levering
+
+ * 'Compare with revision' doesn't work for copied/moved resources (SBV-2287)
+   + special thanks to BalkanBoy, vsizikov (forum users)
+ 
+ * NullPointerException in CheckoutAs wizard (SBV-2283)
+ * 'Needs lock' files cannot be modified right after they are locked by callback (SBV-2289)
+ * Short URL decorator is not correctly displayed in preview (SBV-2290)
+ * Ignored resources are decorated as new (SBV-2293)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.2 [19 August 2006]
+
+Features:
+ * Decorate files which are read-only and need lock (SBV-2226)
+   + special thanks to simas, ftorres (forum users), Chris West
+ 
+ * Import from SVN Wizard (PLC-296)
+ * Improve SVN Console (SBV-2206)
+ * Show authentication realm in callback dialog (instead of location URL) (SBV-2236)
+ * Add an ability to represent short url of a project in the package explorer (SBV-2235)
+ * Automatic project share (SBV-2156)
+ * Add 'Checkout subdirectories' option to the checkout wizard (SBV-2216)
+
+Fixes:
+ * Open Repository File operation: NullPointerException in AffectedPathsComposite (SBV-2085)
+   + special thanks to Fabio Frumento
+ 
+ * Bug in 1.0.1: Subversive reset editors font settings (SBV-2215)
+   + special thanks to Theo Wilms
+ 
+ * Check Out operation: Cannot create a directory (SBV-2200)
+   + special thanks to D. Strauss, Marcus Bitzl, Barry Davies, Marcos Cesar de Oliveira
+ 
+ * Update operation: Access denied (SBV-2164)
+   + special thanks to biniobill, Runar Bjarnason
+ 
+ * Auto properties support (SBV-2075)
+   + special thanks to Georg (forum member)
+ 
+ * Crippling SVN+SSH Bug (SBV-2203)
+   + special thanks to Daniel Spiewak
+ 
+ * Get Resource List operation: Unrecognized node kind (SBV-2037)
+   + special thanks to Sandro Orlando, Christian, Jaime Ramos
+ 
+ * Show Conflict Editor: ClassCastException while editing conflicts on a *.png files (SBV-2196)
+   + special thanks to Brett Atoms
+ 
+ * Check Out operation: Prefix string too short (SBV-2174)
+   + special thanks to Dave Cameron
+
+ * Improve composite operation performance (SBV-2242)
+ * Project is automatically disconnected while upgrading FastTrack. (SBV-2173)
+ * project share wizard - finish button should be dissabled in FastTrack (SBV-2222)
+ * Merge preview panel becomes gray and empty after resizing (under Eclipse 3.0) (SBV-2237)
+ * Get Resource List: NullPointerException in some complex cases (SBV-2232)
+ * Improve progress monitoring for the operations in the History View and Property Editor (SBV-2218)
+ * checkout projects with its tracker checkouts duplicate projects + project called ".polarion" (SBV-2194)
+ * Malformed SVN console output during Rename Resource (SBV-2209)
+ * Show original SVN "conflict" message when commit fails (SBV-2207)
+ * Check Out operation fails when user checked out projects with the same name but in different case (SBV-2042)
+ * Update does nothing if the project has been switched to the earlier revision (SBV-2034)
+ * IMailSettingProvider has been changed (SBV-2193)
+ * NPE in time of Override And Update operation (SBV-2176)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.1 [28 July 2006]
+
+Features:
+ * SVN Console (SBV-1591)
+   + special thanks to lithium (forum user), dcorbin (forum user), aochsner(forum user), patrek(forum user), markphip(forum user) 
+   
+ * Commit/synchronize dialog after share operation (PLC-1421)
+   + special thanks to Daniel Spiewak
+ 
+ * Copy change buttons should work in case of compare operations (SBV-1951)
+   + special thanks to Panagiotis Korros
+ 
+ * Add an ability to choose the method of project name selection while checkout (SBV-2147)
+   + special thanks to Paul (forum user) 
+   
+ * Change File/Class headers with Eclipse standard (SBV-2154)
+ * Moving JavaSVN to extension point (SBV-2135)
+
+Fixes:
+ * Workspace start Problem with IBM RSA 6.0.1.1 and Subversive (SBV-2139)
+   + special thanks to Andreas Graesser
+
+ * Quick fix for JavaSVN merge() problem (SBV-2158)
+   + special thanks to contributor Tobias Bosch
+ 
+ * WTP support: Checkout using new project wizard deletes .settings directory (SBV-2067)
+   + special thanks to angelcervera (forum user) 
+ 
+ * SVN+SSH: "Unknown authentication method" in JavaSVN SBV-2005
+   + special thanks to CVD (forum user), Anton Fletcher
+
+ * 'Resource does not exist' exception after updating incoming deletion (SBV-2171)
+ * [Subversive] Report ID-Y6AUL - Import Team Project Set Operation Failure Report (SBV-2137)
+ * Invalid thread access (SBV-2127)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 Release [14 July 2006]
+
+Features:
+ * Enhance Add/Edit properties (SBV-2065)
+   + special thanks to wusch (forum user)
+   
+ * Support of different merge modes (SBV-2069)
+   + special thanks to yagee (forum user)
+
+ * Add an ability to apply lock to the resourses recursively (SBV-2097)
+ * Support conflicitng files editing (SBV-2079)
+ * Implement standard JavaHL merge (SBV-2098)
+
+Fixes:
+ * Incorrect URL when only one file is merged (SBV-2101)
+   + special thanks to Danny Mandel
+   
+ * NPE while synchronizing projects (SBV-2091)
+   + special thanks to Kevin Ross, biniobill
+   
+ * Share Project operation: Negative revision number (SBV-2061)
+   + special thanks to Chad Woolley
+   
+ * Bug in synchronize view after merge (SBV-1949)
+   + special thanks to Clint Dovholuk
+   
+ * Can't relocate a project (SBV-2076)
+   + special thanks to smonsarr (forum user)
+   
+ * Compare operation fails in complex case (SBV-2118)
+   + special thanks to J.J. Kiers
+   
+ * WTP support: Checkout using new project wizard deletes .settings directory (SBV-2067)
+   + special thanks angelcervera (forum user) 
+
+ * Strange strings in decorators preference page (SBV-2064)
+   + special thanks Panagiotis Korros
+   
+ * reduces memory consumption by 15% (SBV-2103)
+   + special thanks to contributor Panagiotis Korros for provided patch
+   
+ * .svn folder is deleted by subversive (SBV-2102)
+   + special thanks to contributor Panagiotis Korros for provided patch
+
+ * NullPointerException in Annotate View (SBV-1818)
+   + special thanks to Sébastien Sahuc
+ 
+ * Enable Finish button on Share project (SBV-2056)
+ * Revision '-1' is set to added resources in property editor title (SBV-2095)
+ * NullPointerException in Get Remote Properties operation (SBV-2060)
+ * Repository Browser decoration is not refreshed after 'Break lock' action (SBV-2072)
+ * Checkout using 'New Project Wizard' should not suggest to overwrite existing project (SBV-2071)
+ * Selecting repository location label works incorrect (SBV-2070)
+ * Incomplete presentation of project URL's in 'Find / Checkout Projects As' wizard (SBV-2078)
+ * 'Start development with' option for branch/tag actions doesn't work sometimes (SBV-2073)
+ * Override and update doesn't work for new resources (SBV-2096)
+ * NullPointerException in Add to SVN operation (SBV-1921)
+ * Cannot change credentials for svn+ssh protocol (SBV-2115)
+
+JavaSVN features (in cooperation with TMate team):
+ * Add "force" option to SVNClientEx::merge() function (SBV-2049)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 RC4 [30 June 2006]
+
+Features:
+ * Enhance properties support (SBV-1784)
+   + special thanks to Erik (forum user)
+ 
+ * Add menu item 'Add Revision Link' to the History View (SBV-2032)
+ * Add getSelectedLogMessages() method to SelectRevisionPanel class (SBV-2038)
+ * Add error and warning decoration to the resources in commit dialog (SBV-2059)
+ * Add an ability to choose if the new resources should be selected in commit dialog or not (SBV-2058)
+
+Fixes:
+ * Problem adding property names with more than 1 ':' character. (SBV-2014)
+   + special thanks to Alexis O'Connor
+   
+ * Set focus to password field when callback dialog is shown (SBV-2012)
+   + special thanks to Chris West
+   
+ * ResourceException: A resource exists with a different case (SBV-2040)
+   + special thanks to Maarten Meijer
+
+ * Some entry fields information is not correctly passed to the operations (SBV-2013)
+ * Create folder operation fails for the folders which are repository roots (SBV-2021)
+ * 'Widget disposed error' after dialog is closed by 'Esc' and 'Ctrl+Enter' is pressed (SBV-2022)
+ * Affected paths tree does not contain statuses information for some folders (SBV-2023)
+ * Cannot create branch in the root of repository (SBV-2024)
+ * 'Show history' action should be disabled in synchronize view for the deleted from repository resources (SBV-2025)
+ * NullPointerException in decorators (SBV-2009)
+ * Peg revision specified incorrectly for revision links (SBV-2026)
+ * Incorrect highlight of current revision in case of repository resource history (SBV-2027)
+ * Override and Update does not work for ignored resources (SBV-2028)
+ * Refresh does not work on Repository View if same resource shown twice (SBV-2029)
+ * Incorrect pop-up menu in case of file opened from repository. (SBV-2030)
+ * Too big indention between controls on UI forms under Eclipse 3.0 (SBV-2031)
+ * Current revision is not highlighted in histiory view after 'Update To' operation is performed (SBV-2035)
+ * Relocate for the projects works incorrect if repository changes (SBV-2033)
+ * Respect "conflicted" mark on working copy resource (SBV-1806)
+
+JavaSVN fixes (in cooperation with TMate team):
+ * java.lang.IllegalArgumentException: Negative time (SBV-1952)
+   + special thanks to ngyen, yongyut
+   
+ * Get Resource List operation: ArrayIndexOutOfBoundsException (SBV-1934)
+   + special thanks to Danny Mandel
+   
+ * Atomic commit fails for the projects checkouted from different repository locations (SBV-2007)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 RC3 [16 June 2006]
+
+Features:
+ * Improve usage of Subversive together with external SVN clients (SBV-2006)
+   + special thanks to pkorros (forum user)
+   
+ * Copy resource URL to clipboard (SBV-1931)
+   + special thanks to Chris Melikian
+   
+ * Add an ability to submit all forms by pressing Ctrl+Enter (as it is in commit dialog) (SBV-1980)
+ * HistoryView - properties(). Support view of revision properties. (PLC-283)
+ * In History View operations should be executed in background (SBV-1953)
+ * Move property view to editor area (PLC-613)
+
+Fixes:
+ * Timing out when URL is encoded (contains %20 entries etc.) (SBV-1978)
+   + special thanks to Turadg Aleahmad
+   
+ * Compare repository resources failure (SBV-1970)
+   + special thanks to Danny Mandel
+
+ * NPE in Show Messages operation (SBV-1938)
+   + special thanks to Larry Edelstein
+
+ * ClassCastException in Subversive code (SBV-1932)
+   + special thanks to Larry Colson
+
+ * NPE in Compare Resource with Revision operation (SBV-1936)
+   + special thanks to Gregory Gerard
+   
+ * Trunk, branches and tags default values are not stored if they are disabled while creating new location
+   + special thanks to contributor Sergey Vasilchenko for provided patch
+
+ * Export does not work if destination folder entered manually (not selected from picker) (SBV-1993)
+ * Validate all UI forms layout and optimize their content if it's necessary (SBV-1981)
+ * AssertionFailedException while closing Repository Browser (SBV-1964)
+ * NPE while disposing AnnotateView (SBV-1990)
+ * "Hide unrelated" option works incorrectly in case of moved/copied resources (SBV-1998)
+ * Create Tags/Branches/Trunk does not work in some cases (SBV-1992)
+ * NullPointerException in merge dialog (SBV-1973)
+ * Override And Commit: NullPointerException (SBV-1977)
+ * Separate SSL callback from the general one (SBV-1958)
+ * Repository locations is not refreshed some time (SBV-1946)
+ * Subversive doesn't allow underscore in repository host name. Add ability to support. (SBV-1943)
+ * Delete operation: Errors occurred while refreshing resources with the local file system (SBV-1940)
+ * ArrayOutOfBoundsException in HistoryView (SBV-1929)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 RC2 [2 June 2006]
+
+Features:
+ * Add Break Lock operation to Repository View (SBV-1895)
+ * Notification of Resource Selection Change  in ICommentDialogPanel (SBV-1882)
+ * Remember & prefill comment message when "Cancel" is pressed in previous commit try (SBV-1803)
+ * Incoming deletion for project should disconnect project from source control without meta-inforamtion deletion (PLC-1184)
+
+Fixes:
+ * Some time default editor is not opened if the editor registered to specific file type is not opened (SBV-1925)
+   + special thanks to Robert r. Sanders
+   
+ * ConcurrentModificationException while changing repository location properties (SBV-1884)
+   + special thanks to Tjedrzejczak
+   
+ * Missing import "org.eclipse.help" in feature.xml (SBV-1914)
+   + special thanks to Christian Buggle
+   
+ * Override And Update: Errors occurred while refreshing resources with the local file system (SBV-1903)
+   + special thanks to Matias
+   
+ * Can't find file when synchronising (SBV-1910)
+   + special thanks to Chris Melikian
+   
+ * Deadlock while opening project (SBV-1701)
+   + special thanks to Jeremy Hare
+   
+ * Compare Resource with Revision fails for replaced files (SBV-1885)
+   + special thanks to Joerg von Frantzius
+   
+ * BadLocationException in SVN Annotate View (SBV-1780)
+   + special thanks to Alex Ostrovsky
+   
+ * [Subversive] Report ID-TDB4K - Prepared Tag Operation Failure Report (SBV-1827, SBV-1893)
+   + special thanks to jmilora
+   
+ * Incorrect URL validation on repository properties editing form (SBV-1772)
+   + special thanks to Hans van der Meer
+  
+ * Discard Repository Location operation does nothing if there is at least one location in the set that could not be discarded (SBV-1892) 
+ * Validate forms UI on Linux systems (SBV-1900)
+ * Incoming project deletions does not handled by Override and Update action (SBV-1916)
+ * NPE in time of merge operation (SBV-1902)
+ * "Replace with" actions fails if non-versioned files exists in the directory to be replaced (SBV-1807)
+ * Disable 'Compare with previous revision' item in the pop-up menu for some of affected paths (SBV-1881)
+ * Mark As Merged Operation fails if project tree is not in sync with file system (SBV-1820)
+ * "Compare with previous revision" fails for the affected paths in History View because of malformed url (SBV-1880)
+ * ".project" and ".classpath" file addition cannot be updated (SBV-1879)
+ * Project created using Check out/New Project Wizard should respect project settings (SBV-1889)
+
+JavaSVN features (in cooperation with TMate team):
+ * SVNClientEx::mergeStatus() enhancement (SBV-1888)
+
+JavaSVN fixes (in cooperation with TMate team):
+ * Certificate bug in subversive (SBV-1810)
+   + special thanks to Chris West
+   
+ * Allow caching of SSL certificates (SBV-1887)
+ * SVNClient::info2() acquires authentication four times (SBV-1886)
+ * SVNClientEx::merge() fails when it called second time (SBV-1825)
+ * SVNClientEx::merge() trims resource name and fails (SBV-1894)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 RC1 [19 May 2006]
+
+Features:
+ * Project label decorator improvements (PLC-1089)
+   + special thanks to Arvoreen (forum member)
+   
+ * Support of the tsvn:logtemplate property (PLC-1219)
+   + special thanks to axiom10 (forum member)
+   
+ * Comment Templates like in CVS (PLC-1422)
+   + special thanks to Clint Dovholuk
+   
+ * Support ASP.NET hack (PLC-1365)
+   + special thanks to Clint Dovholuk
+   
+ * It is not possible to branch/tag multiple projects at once (PLC-783)
+   + special thanks to Berserksangr (forum member)
+
+Fixes:
+ * Invalid location of .project and .classpath files after check out (SBV-1822)
+   + special thanks to Angelo (forum user)
+   
+ * Incorrect error message in in time of Checkout if target folder is locked by external process (SBV-1756)
+   + special thanks to Turadg Aleahmad
+
+ * Allow Override and Update for new files (SBV-1589)   
+   + special thanks to Dotjerky (forum user)
+   
+ * NPE in Commit Operation (SBV-1615, SBV-1815)
+   + special thanks to Paul Kendall, Christian
+   
+ * Errors occurred while refreshing resources with the local file system (SBV-1561, SBV-1588)
+   + special thanks to Tjedrzejczak, Dumitru Frunza
+   
+ * Incorrect URL validation on repository properties editing form (SBV-1772)
+   + special thanks to Hans van der Meer
+   
+ * Show Repositories View Operation Failure Report (SBV-1763)
+   + special thanks to Simon Liu, Axel Bock
+   
+ * Problem with Compare (SBV-1710)
+   + special thanks to David Harrigan
+   
+ * Wrong dialog text for browsing url for merging (SBV-1767)
+   + special thanks to Danny Mandel
+   
+ * NoClassDefFoundError [PluginIDVisitor] (SBV-1672)
+   + special thanks to Steve Zadoorian
+   
+ * Report shouldn't be sent for the network communication problems (SBV-1781)
+ * Incoming deletion for project should delete project from workspace (PLC-1184)
+ * URL Validation failed on GNU JVM (SBV-1657)
+ * Check Out As action failed (SBV-1808)
+ * Validate UI forms (SBV-1785)
+ * No actions in the context menu for a resource in "strange" state (PLC-800)
+ * NPE in CreatePatchAction (SBV-1757)
+
+JavaSVN fixes (in cooperation with TMate team):
+ * Exception in case if WC is svn:externals in parent WC (SBV-1692)
+   + special thanks to Sascha Frick
+   
+ * Unknown node kind '3' in merge operation (SBV-1654, SBV-1653, PLC-1380, PLC-1187)
+   + special thanks to Edward Seymour, Danny Mandel
+   
+ * Commit failed with "502 Bad Gateway" error (PLC-1439)
+   + special thanks to Bpasero and Oliverh (forum members)
+   
+ * Unable to register repository with only server name in URL (SBV-1790)
+   + special thanks to Hugi (forum member)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M12 [5 May 2006]
+
+Features:
+ * Add "Stop On Copy" option to History View (PLC-704)
+ * Hide unrelated paths option for History View (PLC-703)
+ * Let user decide to override existing folders while checkout or not (SBV-1686)
+ * Arrange checkout menu items (PLC-1204)
+ * Add UI part of the proxy callback support (PLC-955)
+
+Fixes:
+ * Error encountered: null argument provided to table view (SBV-1582)
+   + special thanks to Yogesh B Kanitkar
+   
+ * [Subversive] Share Project operation FAILURE REPORT (PLC-1402)
+   + special thanks to Peter Rose
+ 
+ * Report ID-CAYHC - Show Properties Operation Failure Report (SBV-1658)
+   + special thanks to Ken Geis
+ 
+ * Unaccessible API's on GNU JRE (SBV-1673)
+   + special thanks to Martin Zuber
+ 
+ * Report ID-HGXUD - Prevented recursive attempt to activate part (PLC-1368)
+   + special thanks to Tom Staubitz
+ 
+ * Compare with BASE requires connections to server (SBV-1567)
+   + special thanks to Erik Dick
+   
+ * Strange merge behavior (PLC-1369)
+   + special thanks to Danny (forum user)
+   
+ * Typo in a dialog (SBV-1695)
+ * Invalid merge()/mergeStatus() behaviour (SBV-1526)
+ * Report ID-MXE52 - ContentViewer must have a content provider [HistoryView]  (PLC-1382)
+ * Report ID-PD8W6 - ContentViewer must have a content provider [AnnotateView] (SBV-1674)
+ * Report ID-B7MW0 - Add Repository Location Operation Failure Report (SBV-1685)
+ * Address already in use: connect (SBV-1574)
+ * Cannot compare resources (PLC-WLG10K)
+ * Hierarchy of added resources not completely visible in the Structure Compare (PLC-791)
+ * Many warning dialogs and log records while comparing two revisions (PLC-790)
+ * "Compare with revision" operation fails for branched(tagged) resource (PLC-592)
+ * Compare two revision is extremely slow (PLC-588)
+ * 'Compare with revision' operation fails after moving the resource (PLC-578)
+ * Refactor fails when changing package name (SBV-1655)
+ 
+JavaSVN fixes (in cooperation with TMate team):
+ * Unrecognized node kind '0' in time of merge action (PLC-1500)
+   + special thanks to Edward Seymour
+   
+ * Checkout failed because of Status-Line '0' (SBV-1592)
+   + special thanks to fjalvingh (forum user)
+   
+ * Malformed network data; Cannot open session, you need to establish a connection first. (SBV-1599, SBV-1597, SBV-1558, SBV-1663)
+   + special thanks to Chad Woolley, Jörg Henne
+
+ * diffStatus fails when two files is compared (SBV-1553)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M11 [21 April 2006]
+
+Features:
+ * Respect hierarchical structure in Checkout Projects (PLC-1397)
+   + special thanks to Memelet (forum member) 
+
+ * Obtain project name from .project file (if so) during checkout from repository (PLC-1413)
+
+Fixes:
+ * Attempted to beginRule: R/, does not match outer scope rule: P/ (SBV-1550, SBV-1587, SBV-1622, SBV-1627)
+   + special thanks to Mathis Hofer; MBertier; Konstantin Haas; Sebastian Hardt; Mitsu Hadeishi; Barry Kaplan
+
+ * Add Repository Location Operation Failure (widget is disposed) (SBV-1532)
+   + special thanks to John N Underwood
+ 
+ * The commit dialog looks confusing (SBV-1606, FastTrack-PLC-1528)
+   + special thanks to Christian Nelson
+
+ * NullPointerException if DefaultDialog::open() fails (SBV-1628)
+ * Check Out Operation Failure Report ID-E3SG4 (PLC-1420)
+ * NullPointerException if SVNClient::info() operations fails due to some reason (SBV-1580)
+ * Repository View "Move To..." action does not work (SBV-1557)
+ 
+JavaSVN fixes (in cooperation with TMate team):
+ * Broken workspace in case of case-sensitive rename (SBV-1528, SBV-1522)
+   + special thanks to Kiel Hodges
+
+ * Check Out Operation Failure Report (IndexOutOfBoundsException) (PLC-1470)
+   + special thanks to Kevin Ross
+
+ * NPE in SVNFileUtil (SBV-1602)
+ * mergeStatus() operation ingnores IProgressMonitor.isActivityCancelled() (PLC-1463)
+ * Resource names is encoded for mergeStatus() (PLC-1462)
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M10 [7 April 2006]
+
+Features:
+ * Support of shortcuts
+   + special thanks to Georges-Etienne Legendre;Christian Nelson
+   
+ * Include changes to commit dialog like in CVS
+   + special thanks to Daniel Spiewak, aochsner (forum user)  
+   
+ * Implement 'Copy' and 'Move' operations for the repository exploring perspective
+ * Implement extension point that alows configure email report properties
+ * Support for synchronize action contributions
+ * Create patch implementation
+
+Fixes:
+ * Could not instantiate provider org.tigris.subversion...
+   + special thanks to Maxim Gordienko; Barry Kaplan; Johannes Matheis; Ralph Navarro;Turadg Aleahmad
+ 
+ * Massive CPU usage - Eclipse slowdown
+   + special thanks to Clint Dovholuk
+    
+ * Excessive "Build Workspace" and slowdown
+   + special thanks to Clint.Dovholuk; Mike (forum user)
+    
+ * NullPointerException in time of Share Project operation
+   + special thanks to Hans van der Meer
+   
+ * NullPointerException when operation is cancelled
+   + special thanks to Tjedrzejczak
+   
+ * NullPointerException in LocalInfoPage
+   + special thanks to Andreas Andreou
+
+ * Incorrect icon for modified resources in preview
+ * Cleanup menu is enabled for non-versioned resources
+ * NPE in time of project set import
+ * Default focus in the New Repository Location Wizard should be to the field Root URL
+ * NullPointerException in FileUtility.getOperableParents
+ * NullPointerException in FileUtility.getResourcesRecursive
+ * NullPointerException in AbstractSVNSyncInfo
+ * NPE in Commit dialog
+ * Checkout projects action reports 75% progress although it finished already
+ * Error report sending is suggested for when SVNException is thrown
+ * Support Eclipse 3.2 linked resources
+ * Resource out of sync with file system error
+
+JavaSVN features (in cooperation with TMate team):
+ * Enhance diff() functionality
+
+JavaSVN fixes (in cooperation with TMate team):
+ * Export operation fails with large files
+ * Import operation fails on read-only path
+ * Incoming addition cannot be merged
+ * Resource names is encoded for mergeStatus()
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M9 [24 March 2006]
+
+Features:
+ * Add support for multiple folder creation in one transaction
+ * Add file in SVN Repository view
+ * Use CVS-like decoration icon for modified resources
+   + special thanks to Eugene Kuleshov; Daniel Spiewak
+ 
+ * Commit and Update buttons in Synchronize view toolbar
+   + special thanks to Georges-Etienne Legendre
+ 
+ * Set 'Don't send' button as a default for the error dialog
+ * User input history should be implemented for name and email field in send error dialog
+ 
+Fixes:
+ * Resource '...' is not open" problem when project is closed under Eclipse 3.2Mx
+ * Daniel Spiewak; Travis Hume
+ 
+ * Switch error: outgoing changes in wc -> no switch possible
+   + special thanks to ayampols our forum user 
+ 
+ * Incorrect page is shown in 'share project' wizard while sharing imported project (Eclipse 3.2Mx freezes)
+   + special thanks to memelet (forum user); Georges-Etienne Legendre
+ 
+ * Time-to-time error report window automatically closed with report sending
+ * 'There is an error occurs..' caption in repository browser
+ * Cleanup operation also for folders
+   + special thanks to Daniel Serodio our forum user 
+ 
+ * Invalid path separator used for UNIX-like systems
+   + special thanks to anathaniel our forum user; D. Strauss; Leonard Soetedjo
+ 
+ * ClassCastException in the SVNRemoteStorage class in time of RepositoryProvider check
+ * Merge, switch dialogs select revision for the wrong resource (should agree with input url)
+ * Error report preview fails under Eclipse 3.2Mx
+ * NPE in History View in some hard cases
+ * NPE during a refresh of a project
+   + special thanks to Frits Jalvingh
+ 
+ * Hiding History View parts works incorrect
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M8 [17 March 2006]
+
+Features: 
+ * Improve merge dialog
+ * Mark top revision in History View in Repository Mode
+   + special thanks to Daniel Spiewak 
+
+ * Rework History View - comment viewer should be shown in the bottom of the log 
+   messages table
+   + special thanks to Eugene Kuleshov
+
+ * Optimize "Edit repository properties" panel
+ * Add Subversive version id to the error report
+ * Add sequence number for the mail error report
+
+Fixes: 
+ * Sort by date in resource history view works incorrect
+ * Concurrent modification exception
+   + special thanks to Cedric Pineau 
+
+ * java.lang.NumberFormatException in repository browser
+ * Composite operation should recognize not executed depended operation.
+ * Checkout as using new project wizard works incorrect
+ * Get Resource List operation FAILURE REPORT
+   + special thanks to Jon our bug reporter. 
+
+ * Pre-close/Pre-delete Clear operation FAILURE REPORT
+   + special thanks to Cedric Pineau 
+
+ * NPE during Share project operation
+   + special thanks to Kevin O'Neill; Cedric Pineau; Barry Kaplan; David Saff 
+
+ * Make error report preview form platform independent
+   + special thanks to Cedric Pineau 
+
+ * Null pointer exception then Synchronize View is closed
+   + special thanks to Leonard Soetedjo 
+
+ * Changes of the New Project Wizard during checkout are lost
+   + special thanks to Armen our forum member
+
+ * Share project fails when project layout structure partially exists on the 
+   repository
+ * Repository view navigator makes unneccessary requests to the server
+ * Null pointer exception in select revision panel when no network available
+ * NPE in LogMessagesComposite
+ * Override and commit & markAsMerged operations work incorrect in case replaced
+   resources
+ * Checkout projects action can't be completed if common error occurs
+ * Repository scanning can't be cancelled
+ * Checkout overrides projects without warning
+ * Simply notify user when an error occurs during send report . Do not ask it 
+   to send this error
+ * Rework SVN views description according Eclipse IDE standart
+ * Invalid working behaviour for replaced resources
+ * Null pointer exception in History view then no network connection available
+ * Repository browsing panel works incorrect in case no network connection 
+   available
+ * All compare with ... operation asks to send report when no network available
+ * Null pointer exception in affected paths composite
+ * ClassCastException in Repository Browsing Panel
+ * Subversive propose to send email report when repository folder already exists
+ * NPE during send a report
+   + special thanks to Danny Mandel 
+
+ * Affected paths view shows incorrect information
+ * NPE in Repository Properties
+   + special thanks to Danny Mandel 
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M7 [10 March 2006]
+
+Features:
+ * Change Preferences->Team UI like in Eclipse/CVS 3.1 [usability]
+ * Improve error reporting dialog [usability]
+ 
+Fixes:
+ * Team menu should be ordered like in CVS
+   + special thanks to Daniel Spiewak for reporting this issue
+ * Widget disposed error
+   + special thanks to Daniel Spiewak for reporting this issue   
+ * Create new repository location operation from 'select wizard dialog' fails
+ * Add ability to show properties on the repository roots (TRUNK, TAGS, 
+   BRANCES and ROOT)
+ * Changing history view layout works incorrect
+ 
+JavaSVN fixes:
+ * Incorrect cancelation of SVN Checkout
+ * Checkout freezes when cancel button is pressed
+
+-------------------------------------------------------------------------------- 
+
+Version 1.0.0 M6 [7 March 2006]
+
+Features:
+ * Add option to mail report (Do not ask me to send report in 
+   future) [usability]
+ 
+Fixes:
+ * Show annotation operation failure
+ * Simply notify user when an error occurs during send report. Do not ask it 
+   to send this error
+ * Authentification problem for "send error report"
+ * Null pointer exception in check out as operation
+ * Add ability to subscribe on project state changed events
+ * Synchronize is called for the project which is not shared yet
+
+-------------------------------------------------------------------------------- 
+
+Version 1.0.0 M5 [4 March 2006]
+
+Features:
+ * Api for PropertyManager [extension points]
+ * Add �Refresh� button to SVN Repository Browser toolbar [usability]
+ * Support Eclipse 3.2 [functionality]
+ * Add ability to open and compare with previous revision for the affected 
+   paths in History View [usability]
+ * Provide ability to send e-mail reports for non-SVN errors [functionality]
+ 
+Fixes:
+ * Refresh on SVN Repository Browser work incorrectly
+ * Action "Edit Properties" throws java.lang.IllegalArgumentException
+ * NPE on the Repositories View when *.psf is imported
+ * Override and Commit operation fails
+ * Error window is shown twice for the same error
+ * Empty select revision dialog is shown
+ * Paging shows correct number of revisions only at first time
+ * Compare reports "operation failed", but in the end the comparison is 
+   displayed
+ * Quick filter doesn't work in the selection picker
+ * Validate and amplify messages on the plugin UI forms
+ 
+JavaSVN fixes (in cooperation with TMate team):
+ * SVNClientEx::diffStatus() should provide all possible information
+ * SVNClient::properties() operations do not report an errors
+ * SVNClientEx::merge() function do not merge files without conflicts
+ 
+-------------------------------------------------------------------------------- 
+
+Version 1.0.0 M4 [24 February 2006]
+
+Features:
+ * Allow all connection modes supported by JavaSVN + its UI [functionality]
+ * How to get IStorage instance in order to convert 
+   IResource->IRemoteResource [extension points]
+ * Add ability to subscribe on project state changed events [extension points]
+ 
+Fixes:
+ * Unable to get unresolved resources from UpdateOperation
+ * Show resource history view fails
+ * Checkout operation works incorrect with equal project names
+ * Annotation view works incorrect in package explorer
+ * Show annotation works incorrect from history view
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M3 [17 February 2006]
+
+Features:
+ * Mark As Merged operation should supports properties [functionality]
+ * Interactive merge [functionality]
+ * Support of following connection modes: HTTP, HTTPS, SVN, 
+   SVN+SSH (password) [functionality]
+ 
+Fixes:
+ * Share project wizard does not work
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M2 [10 February 2006]
+
+Features:
+ * Show resource locks on repository view [functionality]
+ * Show resource locks in the package explorer [functionality]
+ * Add ability to copy() versioned folders between projects [functionality]
+ * Design the default repository perspective layout [usability]
+
+Fixes:
+ * Operation 'move' on directory works incorrect in case different repository 
+   locations
+ * Illegal 'Directory is out of sync with file system' error
+ * ResourceChangeListener handles initial workspace delta badly
+ * Override and commit operation fails
+ * Properties / SVN Info fails
+ * Paging support for the revision history
+ 
+JavaSVN fixes (in cooperation with TMate team):
+ * NullPointerException in time of diffStatus() operation
+ * SVNclientEx::list() methods does not works with the SVN1.1.x repositories
+
+--------------------------------------------------------------------------------
+
+Version 1.0.0 M1 [3 February 2006]
+
+Features:
+ * Lock/UnLock folder emulation [functionality]
+ * Pass selected resource to ITeamHistoryFactory in the log message 
+   panel [extension points]
+ * Repository browser improvements [usability]
+ * ISVNClientInterfaceEx extension (resource deletion 
+   improvements) [functionality]
+ * Enhance SVNClientEx::move() operation behavior (Refactor 
+   improvements) [functionality]
+ * Decorate deleted folders [usability]
+ * Add multi-line viewer for Property view [usability]
+ * Double Atomic Commit [extension points]
+ * Add ability to replace commit dialog [extension points]
+
+Fixes:
+ * Select revision wizard allows multi-selection, but only one revision 
+   is processed
+ * Commit operation fails after deleting file directly from file system
+ * JUnit tests integration to build process
+ * Properties information is missing in the SVN Repositories perspective
+ * Null pointer exception when Synchronize View is closed
+ * NPE in AbstractConflictDetectionOperation.getUnprocessed()
+ 
+JavaSVN fixes (in cooperation with TMate team):
+ * Enhanced SVNClientEx::move() operation works incorrect
+ * NullPointerException at commit time
+ * Invalid lock comment returned
+ * Add to SVN operation failed with NullPointerException
+ * Add to version control operation failed
+ * Checkout Operation failed with NullPointerException
+
+--------------------------------------------------------------------------------
+
+Version 0.9.7 [27 January 2006]
+
+Features:
+ * Show hierarchical resource history [usability]
+ * Add Import/Export ability to Repository View [usability]
+
+Fixes:
+ * Background operations cancellation
+ * Wrong behavior of the synchronize action when SVN is not accessible
+ * Validate UI forms
+
+--------------------------------------------------------------------------------
+
+Version 0.9.6 [20 January 2006]
+
+Features:
+ * Validate user input on the UI forms [usability]
+ * Add repository to IRevisionProvider [extension points]
+ * Add "Keep Locks" option to commit dialog [usability]
+ * Paging support for the revision history [usability]
+ 
+Fixes:
+ * Validate Forms UI
+ * Java Compare Structure should be improved
+ * Ugly error message after cancelled update
+ * Cryptic and not entirely visible message if commit fails
+ * Commit compare editor shows that remote file does not exist for all 
+   changed files
+ * Cancel on the Resource History quick filter invokes an operation
+ * Background operations cancellation
+ * Close project operation fails
+ * Copied from URL doesn't render real URL
+ * Non default date/time pattern used
+ * Synchronization progress monitor shows more than 100% done
+ 
+JavaSVN Fixes (in cooperation with TMate team):
+ * NullPointerException in time of checkout() operation
+ * NullPointerException in status() operation with "remote" option set to true
+ 
+--------------------------------------------------------------------------------
+
+Version 0.9.5 [13 January 2006]
+
+Features:
+ * Progress of update is not available in the sync. tree 
+   continuously [functionality]
+ * Replacing properties without warning in Property View [functionality]
+ 
+Fixes:
+ * Null pointer exception on 'splitRepositoryLocations' operation
+ 
+JavaSVN Fixes (in cooperation with TMate team):
+ * No statuses about incoming updates if repository root is checked out
+ * JavaSVN doesn't report any error while SVN Server does
+ * Files in the root of the repository are not commited
+ * JavaSVN does not support non-english resource names
+ * Spelling error
+ * Most of the operations (commit, update, cleanup etc) finish with 
+   obscure error
+
+--------------------------------------------------------------------------------
+
+Version 0.9.4 [4 January 2006]
+
+Features:
+ * Enhance History View functionality ("Update To Revision..." and 
+   "Copy From URL/Rev") [functionality]
+ * New repository location browser [usability]
+ * "Reset Changes" button for "edit repository location" dialog [usability]
+ 
+Fixes:
+ * Project switches to branch, despite creating branch finishes with error
+ * Properties View should works in standard way (using IActionOperation 
+   framework)
+ * Revision number '-1' in synchronize view
+ * Commit operation fails
+ * A package and its file are reflected as damaged after deletion
+ * Synchronize view shows incorrect information after commit deletion
+ * "No changes" result on the parent of ignored resource, while it has conflict 
+   with the repository file
+ * Second commit for the same file fails
+ * Fixed ArrayIndexOutOfBoundsException
+ * No changes found after rename operation
+ * Choosing 'Show Annotation' action for the second time on the same file shows 
+   empty Annotate View
+ * Double-click on the file in repositories view and history view doesn't 
+   switch to this file editor
+ * Adding resource to svn:ignore by wildcard extension works incorrect
+ * No warning dialog is shown while checking out development root (TRUNK, 
+   BRANCHES, TAGS) if it already exists in workspace
+ * File shown incorrect revision number
+
diff --git a/changelogs/releasenotes-mars.txt b/changelogs/releasenotes-mars.txt
new file mode 100644
index 0000000..d155844
--- /dev/null
+++ b/changelogs/releasenotes-mars.txt
@@ -0,0 +1,46 @@
+********************************************************************************
+*                          Subversive Release Notes                            *
+*                                                                              *
+* Subversive - a brand new Eclipse Client for Subversion (SVN)                 *
+* See details at http://www.eclipse.org/subversive                             *
+********************************************************************************
+
+Version 3.0.4.I20160131-1700 release date: 31 January 2016
+
+1. What's New
+
+   The version 3.0.4 is a service release.
+   
+   Changes comparatively to the previous release version are listed below. The full list of 
+   changes you can find in Change Log.
+		
+	Features:
+	 * Make 'Project Structure' preferences page more compact (bug 486862)
+	 * SVN Plugin does not provide option to set default checkout directory (bug 486009)
+	
+	Fixes:
+	 * Typo in "Getting Started" documentation (bug 485185)
+	 * Information in "Trust server certificate" dialog is hard to read (bug 485344)
+	 * "Compare with" dialogs exit with "A path under version control is needed for this operation" error message (bug 485622)
+	 * An exception occurs while moving a resource into a package whose SVN text status is set to "Deleted" (bug 486496)
+	 * "Inappropriate resource state" exception while adding replaced but not yet added folder to source control (bug 486835)
+	
+	
+2. Information
+
+2.1. System Requirements
+
+   Subversive requires JDK 1.6 or higher and supports following versions of Eclipse:
+    * 4.3
+    * 4.4
+    * 4.5
+   
+   Subversive supports 
+    Migration for Subversion below version 1.6 to version 1.7 and higher,
+    Subversion version 1.7 with SVN Kit 1.7.14 and JavaHL 1.7.9,
+    Subversion version 1.8 with SVN Kit 1.8.11 and JavaHL 1.8.14
+
+2.2 Known issues
+
+	* "Deadlock when JNA is loading" problem on Mac OS X [using SVN Kit 1.7.14 connector]
+	
\ No newline at end of file
diff --git a/changelogs/releasenotes.txt b/changelogs/releasenotes.txt
index 892f1bb..d155844 100644
--- a/changelogs/releasenotes.txt
+++ b/changelogs/releasenotes.txt
@@ -5,24 +5,25 @@
 * See details at http://www.eclipse.org/subversive                             *
 ********************************************************************************
 
-Version 3.0.2.I20151028-1700 release date: 28 October 2015
+Version 3.0.4.I20160131-1700 release date: 31 January 2016
 
 1. What's New
 
-   The version 3.0.2 is a service release.
+   The version 3.0.4 is a service release.
    
    Changes comparatively to the previous release version are listed below. The full list of 
    changes you can find in Change Log.
 		
 	Features:
-	 * Provide interface to use SVN 1.8 diff output options (bug 476177)
+	 * Make 'Project Structure' preferences page more compact (bug 486862)
+	 * SVN Plugin does not provide option to set default checkout directory (bug 486009)
 	
 	Fixes:
-	 * NPE in CompareWithLatestRevisionAction [ID-D9JJ1] (bug 480129)
-	 * Attempted to beginRule: P/xxxx, does not match outer scope rule in SVNRemoteStorage [ID-HTT9T] (bug 325407)
-	 * NPE in SVNRepositoryLocation.asRepositoryContainer [ID-W6HFD] (bug 477111)
-	 * Grammatical error (bug 476637)
-	 * Unversioned deleted files may reappear in patch dialog if called from Synchronize View (bug 476171)
+	 * Typo in "Getting Started" documentation (bug 485185)
+	 * Information in "Trust server certificate" dialog is hard to read (bug 485344)
+	 * "Compare with" dialogs exit with "A path under version control is needed for this operation" error message (bug 485622)
+	 * An exception occurs while moving a resource into a package whose SVN text status is set to "Deleted" (bug 486496)
+	 * "Inappropriate resource state" exception while adding replaced but not yet added folder to source control (bug 486835)
 	
 	
 2. Information
diff --git a/latest-releases.php b/latest-releases.php
index bf63e86..642fdeb 100644
--- a/latest-releases.php
+++ b/latest-releases.php
@@ -32,8 +32,8 @@
 			This is the stable Subversive plug-in release that is a part of Eclipse Mars Simultaneous Release. The Subversive plug-in is included into Mars Update Site, so you can install Subversive directly from Eclipse Mars.
 		</p>
 		<p>
-			<b>Release Date:</b> 28 October 2015<br/>
-			<b>Version:</b> 3.0.2.I20151028-1700 (<a href="/subversive/changelogs/releasenotes.txt">Release notes</a>)
+			<b>Release Date:</b> 31 January 2015<br/>
+			<b>Version:</b> 3.0.4.I20160131-1700 (<a href="/subversive/changelogs/releasenotes.txt">Release notes</a>)
 		</p>
 		<p>
 			<b>Update Site:</b><br/>
@@ -41,7 +41,7 @@
 		</p>
 		<p>
 			<b>Archived Update Site:</b><br/>
-			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/3.0/builds/mars/Subversive-3.0.2.I20151028-1700.zip">Subversive-3.0.2.I20151028-1700.zip</a>
+			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/3.0/builds/mars/Subversive-3.0.4.I20160131-1700.zip">Subversive-3.0.4.I20160131-1700.zip</a>
 		</p>
 		<h2>Latest Stable Build</h2>
 		<p>
@@ -71,6 +71,22 @@
 			<b>Archived Update Site:</b><br/>
 			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/2.0/builds/Subversive-2.0.4.I20150123-1700.zip">Subversive-2.0.4.I20150123-1700.zip</a>
 		</p>	
+		<h2>Early Access</h2>
+		<p>
+			This is the most up-to-date version of the Subversive plug-in. It's aimed to the integration developers and provides you with access to the latest Subversive features before they become available in the Subversive build included into the yearly Eclipse Simultaneous Release.
+		</p>
+		<p>
+			<b>Release Date:</b> 08 April 2016<br/>
+			<b>Version:</b> 4.0.0.I20160408-1700 (<a href="/subversive/changelogs/changelog4.txt">Change log</a>)		
+		</p>
+		<p>
+			<b>Update Site:</b><br/>	
+			<a href="http://download.eclipse.org/technology/subversive/4.0/update-site/">http://download.eclipse.org/technology/subversive/4.0/update-site/</a>		
+		</p>
+		<p>
+			<b>Archived Update Site:</b><br/>
+			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/4.0/builds/Subversive-4.0.0.I20160408-1700.zip">Subversive-4.0.0.I20160408-1700.zip</a>
+		</p>	
 		<h2>Requirements</h2>
 		<p>
 			The latest version of Subversive is compatible with JDK 1.6, Eclipse 4.3 and later versions. It supports SVN versions 1.7-1.8 and migration from SVN 1.1-1.6. Subversive SVN Connectors are available for different platforms. For Windows x86/x64, you can install the JavaHL with corresponding binaries or SVNKit connectors. For other platforms, you have to install the SVNKit connector or if you're installing JavaHL, additionally install a package that contains JavaHL binaries for the platform (check the <a href="/subversive/installation-instructions.php">installation instructions</a>).
diff --git a/special-builds.php b/special-builds.php
index c9da41d..1f6927f 100644
--- a/special-builds.php
+++ b/special-builds.php
@@ -41,6 +41,22 @@
 			<b>Archived Update Site:</b><br/>
 			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/3.0/builds/Subversive-headless-3.0.4.I20160131-1700.zip">Subversive-headless-3.0.4.I20160131-1700.zip</a>
 		</p>	
+		<h2>Early Access</h2>
+		<p>
+			The version aimed to the integration developers.
+		</p>
+		<p>
+			<b>Release Date:</b> 08 April 2016<br/>
+			<b>Version:</b> 4.0.0.I20160408-1700		
+		</p>
+		<p>
+			<b>Update Site:</b><br/>	
+			<a href="http://download.eclipse.org/technology/subversive/4.0/headless-update-site/">http://download.eclipse.org/technology/subversive/4.0/headless-update-site/</a>		
+		</p>
+		<p>
+			<b>Archived Update Site:</b><br/>
+			<a href="http://www.eclipse.org/downloads/download.php?file=/technology/subversive/4.0/builds/Subversive-headless-4.0.0.I20160408-1700.zip">Subversive-headless-4.0.0.I20160408-1700.zip</a>
+		</p>	
 		<p>
 			<b>Previous Release:</b> 23 January 2015<br/>
 			<b>Version:</b> 2.0.4.I20150123-1700
