diff --git a/changelogs/changelog-1.txt b/changelogs/changelog-1.txt
new file mode 100644
index 0000000..4700665
--- /dev/null
+++ b/changelogs/changelog-1.txt
@@ -0,0 +1,3448 @@
+********************************************************************************
+*                            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 1.1.3.I20140206-1700 [06 February 2014]
+
+Fixes:
+ * 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)
+ * Exception in "Extract All" after resource were moved [ID-ALWO7] (bug 422453)
+ * Eclipse freezes when synchronizing with SVN repository (bug 417832)
+ 
+--------------------------------------------------------------------------------
+
+Version 1.1.2.I20131116-1700 [16 November 2013]
+
+Features:
+ * "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-luna.txt b/changelogs/releasenotes-luna.txt
new file mode 100644
index 0000000..bb3e175
--- /dev/null
+++ b/changelogs/releasenotes-luna.txt
@@ -0,0 +1,44 @@
+********************************************************************************
+*                          Subversive Release Notes                            *
+*                                                                              *
+* Subversive - a brand new Eclipse Client for Subversion (SVN)                 *
+* See details at http://www.eclipse.org/subversive                             *
+********************************************************************************
+
+Version 2.0.4.I20150123-1700 release date: 23 January 2015
+
+1. What's New
+
+   The version is 2.0.4 service release. 
+   
+   Changes comparatively to the previous release version are listed below. The full list of 
+   changes you can find in Change Log.
+		
+	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)
+	
+	
+2. Information
+
+2.1. System Requirements
+
+   Subversive requires JDK 1.6 or higher and supports following versions of Eclipse:
+    * 4.2
+    * 4.3
+    * 4.4
+   
+   Subversive supports 
+    Migration for Subversion below version 1.6 to version 1.7 and higher,
+    Subversion version 1.7 with SVN Kit 1.7.13 and JavaHL 1.7.9,
+    Subversion version 1.8 with SVN Kit 1.8.7 and JavaHL 1.8.10
+
+2.2 Known issues
+
+	* "Deadlock when JNA is loading" problem on Mac OS X [using SVN Kit 1.7.13 connector]
+	
\ No newline at end of file
