Back to the CVS Main Page
Eclipse Reference
Platforms
|
|||
---|---|---|---|
Operating system | Processor architecture | Window system | Tester |
Microsoft Windows XP | Intel x86 | Win32 | Michael Valenta |
Red Hat Enterprise Linux WS 3 | Intel x86 | GTK | Michael Valenta |
Since:
Last Modified: $Date: 2006/11/13 15:33:12 $
You should be able to create a repository location from the toolbar of the view or via the context menu. Try expanding the location, the HEAD, Versions and Branches categories. Also, try the failures cases from Connections. Things to try:
Since: 3.0 M5
Last Modified: $Date: 2006/11/13 15:33:12 $
Since:
Last Modified: $Date: 2006/11/13 15:33:12 $
The checkout wizard should be available from the following parts of the workbench: import, new project, empty workspace CVS synchronize action, toolbar in CVS perspective. The checkout wiard is also available from the context menu of the repositories view as the Checkout As menu item.
The following variants should be tested:
Since: 3.0
Last Modified: $Date: 2006/11/13 15:33:12 $
Since: 3.0 M6
Last Modified: $Date: 2006/11/13 15:33:12 $
Perform the following steps:
Ensure that the project was shared properly (i.e. remote folders were created).
Since: Single select a project and select share. Since: 3.0 M6
The following scenario represents how a user would reconnect a project that does
not contain CVS meta-data to it's remote counterpart. It is assumed that the local project
was derived from a previous version of the remote project but both the local project and
the remote may have been modified since then.
Perform the following steps: Perform the following steps: Since: 3.0 M8 Perform the following steps: Perform the following steps: Since: 2.1 Since: Ensure that replace srubs the local resources leaving to outgoing changes. And verify the following:
Since: Check the following for all cases of replace:
Also ensure that the tag filtering in the dialog works properly.
Since: Since: 2.0 You can run an update and open the console to see the files that are being updated. You can run the update and switch to another branch, this should keep your outgoing changes and update all other non-changed files. Since: 3.0 M5 Perform the following steps: Repeat the above steps for a project in a branch and a project version. Repeat the above steps for a selected folder and a selected file. Perform the following steps: Repeat the above for various conbinations (branch + version, version + branch,
branch + branch, version + version). Repeat the above steps for a selected folder and a selected file. Perform the following steps: Since: M8
You should be able to select a project/folder/resource and compare againts
another branch or version. Multi-select should work across projects in
different repositories. Once the comparison is shown it should be possible to
merge changes into the local workspace. It should also be possible to remember
the comparison, which will cause it to appear in the synchronize view.
We should support multi-selection of files, but I'm not sure what should be
shown to the user in those cases. Entire contents of the folder are compared deep. If changes are found the user is notified and they are
shown in a dialog. If no changes are found the user is notified. The dialog should allow the user to browse
the changes and merge anything into his workspace. If the user wants to keep the comparison non-model, he
can add it to the synchronize view. There is a button to do so on the compare dialog.
When the compare dialog is showing several changes you should be able to selectively merge anything into the local workspace. Specific attention should
be made to the following cases:
Since: M8 Since: Enable CVS quick diff for text and java files via the Workbench > Editors > QuickDiff preference. Then try the following
scenarios. Since: 3.0
Synchronizing means to compare your local workspace contents with the contents
in another location with the goal that the two locations should contain the
same contents at some point.
There are a few ways of launching a synchronize operation. They all open the same dialog but the initial
selection is affected by where the operation is launched. Here is the list of ways to start a
synchronize along with the expected initial selection.
Once launched, a synchronize will run in the background. Currently, the user is prompted to
switch perspectives when the synchronize is launched. When a synchronize completes, the user is prompted either with a dialog stating there is no changes
or one that contains a details area that shows the incoming changes. The user
is given the option to supress the post-synchronize dialog.
In case you can select a file, it will be refreshed with the server, and if changes are found the compare editor is opened
that will allow browsing the changes. If no changes are found, you will be prompted. Select a folder or group of files and Team > Synchronize will open the sync view and automatically refresh with
the remote repository.
Since: 3.0
Ensure that choosing direction modes result in proper filtering.
Basics
Last Modified: $Date: 2006/11/13 15:33:12 $
Reconnecting an existing project
Last Modified: $Date: 2006/11/13 15:33:12 $Scenario 1: Existing location using project name
Scenario 1: New location using curstom module name
Sharing a new project
Last Modified: $Date: 2006/11/13 15:33:12 $Scenario 1: Existing location using project name
Scenario 2: New location using different name
Project Sets
Last Modified: $Date: 2006/11/13 15:33:12 $
Replacing
With latest
Last Modified: $Date: 2006/11/13 15:33:12 $
With another branch of version
Last Modified: $Date: 2006/11/13 15:33:12 $
With file revision
Last Modified: $Date: 2006/11/13 15:33:12 $
Updating
Last Modified: $Date: 2006/11/13 15:33:12 $Comparing
Remote resources
Last Modified: $Date: 2006/11/13 15:33:12 $Compare With... in Repositories view
Compare on two selections in Repositories view
Compare on two selections in Resource History view.
Compare with another branch or version
Last Modified: $Date: 2006/11/13 15:33:12 $On file selected
Multiple selection
Merging changes
Reverting deleted resources
Last Modified: $Date: 2006/11/13 15:33:12 $Quick Diff
Last Modified: $Date: 2006/11/13 15:33:12 $
Synchronizing
Performing a Synchronize
Last Modified: $Date: 2006/11/13 15:33:12 $Performing a Synchronize operation
Notice a file is out-of-sync in another view (e.g. packages explorer, types) and want to see the changes
From another view would like to browse the outgoing/incoming changes for several resources
In the sync view and would like to refresh to see if there are new changes from the server
Synchronize View
Last Modified: $Date: 2006/11/13 15:33:12 $Synchronize View Modes
Also ensure that there are no empty containers (e.g folders or projects) in any of the modes.
Ensure that each model contains the appropriate output. Models to test include:
Also ensure that mode switching works properly for each model type.
Ensure Commit and Update buttons:
Ensure Update menu action:
Ensure Commit menu action
Ensure Override and Update
Ensure Override and Update
Ensure Mark as Merged
Ensure Refresh button refreshes all projects regardless of mode, selection or working set.
Ensure Refresh menu action refreshes only the selection
All actions on large sets
The following table can be used to determine what operations are appropriate and what result to expect.Change Type | Action | Result |
Incoming File Change | Update | Remote contents become local. Try with both Text and Binary files. |
Incoming File Change | Mark as Merged | File becomes an outgoing change. |
Incoming File Addition | Update | Remote contents become local. Try with both Text and Binary files. |
Incoming File Addition | Mark as Merged | File becomes an outgoing deletion. |
Incoming File Deletion | Update | Local file is deleted. |
Incoming File Deletion | Mark as Merged | File bcomes an outgoing addition. |
Outgoing File Change | Commit | Prompt for release comment. Cancel aborts, OK commits local file to server. |
Outgoing File Change | Override and Update | Remote contents become local. Try with both Text and Binary files. |
Outgoing File Addition | Add to Version Control | Adds the file to version control. The icon should change in the sync view, and Commit should now be enabled. |
Outgoing File Addition | Add to .cvsignore | Adds the file to .cvsignore. The file should disappear from the sync view. The .cvsignore file should appear (if it wasn't visible already). The file should not appear in subsequent syncs. |
Outgoing File Addition | Commit | Prompt for release comment shoudl also include prompt for file type if the type of the new file is not known. Cancel aborts, OK commits local file to server. |
Outgoing File Addition | Override and Update | Local file is deleted. |
Outgoing File Deletion | Commit | Prompt for release comment. Cancel aborts, OK commits deletion to server. |
Outgoing File Deletion | Override and Update | File is re-created, remote contents become local. |
Conflicting File Change | Update | If the change is auto-mergable, the file becomes an outgoing change and includes the remote changes and the local changes. Otherwise, the user is prompted to indicate that a merge was not possible. |
Conflicting File Change | Mark As Merged | File becomes an outgoing change. |
Conflicting File Change | Override and Update | Dialog prompts user to replace local changes. If user cancels nothing happens. If user chooses OK, then local changes are discarded and remote contents replace local. No .# files created, no CVS markup, and the file is not dirty as a result. |
Conflicting File Addition | Mark as Merged | File becomes an outgoing change. |
Conflicting File Addition | Override and Update | Remote contents become local. |
Since: M8
Last Modified: $Date: 2006/11/13 15:33:12 $
Conflicting changes should be propagated to parent resources such that you can easily see, when the tree is collapsed that there are conflicts. When the conflict is resolved, the parent conflict markers should be removed.
Error and warning makers are shown on resources and propagated to parent resources such that you can easily see if you are releasing errors or warnings.
Changes to branches, revisions, should be updated automatically in the views decorators. For example, if you branch from the sync view the branch name should appear.
Since: 3.1 M2
Last Modified: $Date: 2006/11/13 15:33:12 $
Since:
Last Modified: $Date: 2006/11/13 15:33:12 $
Create a conflicting file change. Manually edit the left source pane in the sync view. Hit "Save" on the popup menu. The file should remain a Conflict. Choose Mark as Merged in the popup menu of the tree. The file should change to an outgoing change. Commit the outgoing change.
Try Override and Update with different combinations of Auto-Mergeable and Non-Mergeable conflicts in the selection. If all conflicts are Non-Mergeable, then the only choice is to replace with remote or cancel. If one or more conflicts are Auto-Mergeable, the choices are (a) Auto-Merge any applicable files, and replace the rest with remote, (b) Replace all files with remote or (c) Cancel.
Choose Remove from View. Selected nodes should disappear. Refresh the view. The nodes should reappear.
Try any and all of the above, but use a branch instead of HEAD. Behaviour should be identical. The sync view decorator should show you the name of the branch.
Using Team->Branch, Replace With->Branch or Version, and Team->Tag as Version, you can create a project which has different tags mixed into it. For example, one folder may be shared as V2_0, a single file may be attached to the branch NEW_FEATURE_BRANCH, and the root of the project may be attached to HEAD. We need to test usage of these projects in the sync view. For example, if developer 1 has project P shared with HEAD, and folder P/F is shared with branch B, have developer 2 release a change to folder F in HEAD, and have developer 1 perform a sync. In this case developer 1 should not see the incoming change.
Since: 3.1 M4
Last Modified: $Date: 2006/11/13 15:33:12 $
Some things to try:
Since: 3.1 M4
Last Modified: $Date: 2006/11/13 15:33:12 $
In each of these places, typing in the tag text field will filter the list of shown tags. The option to Refresh and Configure tags should also be present. Refreshing behavior should be as follows:
Since: 3.1 M4
Last Modified: $Date: 2006/11/13 15:33:12 $
Since: 3.1
Last Modified: $Date: 2006/11/13 15:33:12 $
Using Team>Merge, merge the changes from a branch into HEAD. Once completed, in the synchronize view, update the incoming changes, resolve any conflicts and ensure they worked, After updating, redo the same merge. A no-changes dialog should be presented since the local contents match the end-point.
Things to try:
Delete the merge from the synchronize view using the remove toolbar button. The merge subscriber should be removed from the view.
Since: 3.0 M5 Since: 3.1 M4
Some things to try:
Since: 3.0 M6 This scenario captures one means of patching. It assumes that a zip file contains
a previous version of a project that has been modified in some way and added to
a zip archive (without CVS directories). Perform the following steps: Since: 3.0 M5 Repeat the above with the Resource History view hidden and ensure that no revision
history is fetched (i.e. no jobs appear in progress view). Since: 3.2 RC2 Purpose: Test the functionality of the various buttons common to both the Local File History page and the CVS History page
Synchronize View
Last Modified: $Date: 2006/11/13 15:33:12 $
Branching
Last Modified: $Date: 2006/11/13 15:33:12 $
Patching
Importing a zip over a shared project
Last Modified: $Date: 2006/11/13 15:33:12 $
History View
Editor Linking
Last Modified: $Date: 2006/11/13 15:33:12 $
Common Toolbar Buttons
Last Modified: $Date: 2006/11/13 15:33:12 $
Compare Mode
See Pin History View
See Link With Editor
See Refresh
Since: 3.2 RC2
Last Modified: $Date: 2006/11/13 15:33:12 $
Purpose: Test the group by date mechanism for both local history and cvs history.
The above should be tested with history from both an unmanaged file and a CVS file.
Since: 3.2 RC2
Last Modified: $Date: 2006/11/13 15:33:12 $
Purpose: Test the DND mechanism for unmapped files.
Drag another file over to the History View from a project that is shared with a CVS repository. Repeat the above and make sure that the View updates.
Since: 3.2 RC2
Last Modified: $Date: 2006/11/13 15:33:12 $
Purpose: Test the page activation mechanism for unmapped files.
Populate the History View with another file from a project that is shared with a CVS repository. Repeat the above and make sure that the View updates.
Since: 3.2 RC2
Last Modified: $Date: 2006/11/13 15:33:12 $
Purpose: Test the DND mechanism for CVS files.
Drag another file over to the History View from a project that is not shared with a CVS repository. Repeat the above and make sure that the View updates.
Since: 3.0 M6
Last Modified: $Date: 2006/11/13 15:33:12 $
Since: 3.2 RC2
Last Modified: $Date: 2006/11/13 15:33:12 $
Purpose: Test the mode switching for the CVS History Page.
Since: 3.2 RC2
Last Modified: $Date: 2006/11/13 15:33:12 $
Purpose: Test the pinning behaviour of the history view.
If a one of the views already contains a file, that file should always update the pinned view.
Since: 3.2 RC2
Last Modified: $Date: 2006/11/13 15:33:12 $
Purpose: Test the two types of refresh behaviour available in the history view
When a local file is modified and saved, a refresh event is sent out and the history view should show the newest revision. This will work for both local history and CVS history files. (CVS files need to have the history view in the appropriate viewing mode: either "Remote and Local Revisions" or "Local Revisions".)
There is also a Refresh button on the toolbar. This is mainly useful for CVS file histories if you want to check if any revisions have been committed. Note that its not really of any use for local revisions as they are updated automatically.
Since: 3.0 M5
Last Modified: $Date: 2006/11/13 15:33:12 $
Repeat the steps and purge the CVS meta-data in step 5).
Repeat the above steps but change the operation in step 5) to the following:
Repeat the above steps but change the operation in step 5) to the following:
Since: 3.0 M5
Last Modified: $Date: 2006/11/13 15:33:12 $
Scenario 1
Scenario 2
Since: 3.0 M6
Last Modified: $Date: 2006/11/13 15:33:12 $
The following GUI preferences in the Synchronize View are persisted between workbench sessions. Also they are persisted for each participant. You should be able to create a merge and workspace participant, then change the settings on each. Restart Eclipse and the settings should be maintained for each participant. The persisted settings are:
Since: M6
Last Modified: $Date: 2006/11/13 15:33:12 $
Since:
Last Modified: $Date: 2006/11/13 15:33:12 $
Since:
Last Modified: $Date: 2006/11/13 15:33:12 $
Since:
Last Modified: $Date: 2006/11/13 15:33:12 $
Since: 3.0 M3
Last Modified: $Date: 2006/11/13 15:33:12 $
Annotate a non-managed file, binary file, plugin.xml file... Be creative.
Ensure that the annotate view, editor, and history view stay synched.
Since: 3.0 M7
Last Modified: $Date: 2006/11/13 15:33:12 $
The CVS decorators should not be enabled at start-up. Verify the label decorator preference page.
When sharing or checking out a project, the decorators will be enabled automatically.
Disabling after they have been enabled and restarting. The decorators should be disabled. Checkout should not enable them again.
Enable the decorations again, then disconnecting a project should clear the decorators on the project.
Since: 3.1
Last Modified: $Date: 2006/11/13 15:33:12 $
You can customize the label decorations via the preference page. The customizations will take effect when apply is pressed. Resetting the defaults should work.
You can also configure the font and color used for various resources states.
There should be a link from the CVs label decorations preference page to the
general colors and fonts preference page.
Since: 3.0 M8
CVS text label decorations should be visible in the CVS synchronize participants. We don't bother to show
the images because the sync view already shows the state images. The labels should also update if the
'show change in label' preference is changed.
Also, in the CVS synchronize view the revisions shown are the
Ensure that when the local tag changes the decorators in the sync view and navigator get updated. Ensure that there is no flicker in packages view when cvs decorator updated on commit, update. Since: To setup, goto the CVS preference page and enable watch edit for all projects checked out from CVS. And then set the prompt option to always prompt. Saving files - setup is the same as previous validateEdit fails Refactoring Since: Test that you can properly show the editors on a file. Since: 3.0 Since: 3.0 Since: Since: Since: Since: Test that authentication, connection errors result in appropriate error messages and that these don't pollute the log file or console. to setup for these tests
ensure there are a couple of shared projects in your workspace. Since:
Test the error reporting when authentication fails due to either, invalid username, password, hostname. This should be
tried with each CVS connection method: pserver, extssh, ext.
Since:
These are:
Decorations in the Synchronize pages
Last Modified: $Date: 2006/11/13 15:33:12 $Watch/Edit
Basic scenarios
Last Modified: $Date: 2006/11/13 15:33:12 $
Editors View
Last Modified: $Date: 2006/11/13 15:33:12 $Performance
Timings
Last Modified: $Date: 2006/11/13 15:33:12 $Overview
The purpose of this section is to provide a small set of tests that can
be used to benchmark the Eclipse CVS client. The areas tested are:
Setup
The following should be considered when obtaining timings:
The following numbers were obtained on a 2.8GHz PC running GTK, Sun 14.2
with autobuild off and operations run in the forground. The project used was
org.eclipse.jdt.tests.refactoring. It has a large number of folders and files
which give interesting times. The date the timings were obtained were May 31st, 2004
so similar numbers can be obtained for comparison using the project snapshot at that time
(which can be obtained using a Date tag).
Checkout
Checkout of org.eclipse.jdt.tests.refactoring as of 2004/05/31. The timings are
in "mm:ss" and were obtained by obervation (i.e. stopwatch).
Synchronize
Synchronizing of org.eclipse.jdt.tests.refactoring as of 2004/05/31. The timings are
in "mm:ss" and were obtained by obervation (i.e. stopwatch).
Synchronize with no changes
Synchronize with all outgoing, no incoming
Synchronize with incoming changes
Incoming changes were simulated by loading version v20040106 and
then removing the tag (using a special utility action). This resulted
in 393 incoming changes.
The timing for Eclipse also includes the status command to fetch the revisions for the 393 incoming changes.
Update
These timings were obtained using Team>Update for Eclipse and "cvs update ." for the CLI.
Update with no changes
Update with all false outgoing changes (using touch)
Update with incoming changes
Incoming changes were simulated by loading version v20040106 and
then removing the tag (using a special utility action). This resulted
in 393 incoming changes.
Resource Data Structures
Last Modified: $Date: 2006/11/13 15:33:12 $CVS Workspace Sync info caches
Checking of the cahce usage requires the use of the Core spy tools. To
obtain the memory footprint, perform the following steps.
The following snapshot of the resource element tree was taken after checking out all of the projects
(294 as of 2004/05/31) in dev.eclipse.org.
Total resource count: 89,466
Team private: 10,186
Phantom: 4,055
Markers: 0
SyncInfo: 10,432
Number of layers: 15
Number of nodes: 89,514
Number of non-identical strings: 48,456
Total memory used by nodes: 23,141,343
Nodes and ResourceInfo: 8,586,108
Strings: 3,584,724
Markers: 0
Sync info: 1,447,861
Session properties: 9,522,650
class [B: 2,618,076
class [Ljava.lang.Object;: 2,564,448
class org.eclipse.core.internal.utils.ObjectMap: 1,700,240
class [C: 1,454,994
class java.lang.Long: 610,800
class java.lang.String: 286,580
class org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo: 285,292
class java.util.ArrayList: 768
class org.eclipse.team.internal.ccvs.core.util.StringMatcher: 660
class org.eclipse.team.internal.ccvs.core.util.FileNameMatcher: 320
class [Ljava.lang.String;: 300
class org.eclipse.core.runtime.QualifiedName: 160
class java.lang.Object: 12
The top 20 equal but non-identical strings are:
A.java->2,002
in->1,219
plugin.xml->913
out->794
A_out.java->489
A_in.java->487
eclipse->431
org->421
Test.java->412
B.java->345
build.properties->297
I.java->269
internal->256
about.html->253
plugin.properties->243
.cvsignore->227
.classpath->209
ui->185
src->184
package.html->165
CVS Merge memory usage
Merging in CVS makes use of the Core synchronizer. Perform the following steps
with the Core Spy Tool installed to
ensure proper memory management.
Looking For Leaks
Last Modified: $Date: 2006/11/13 15:33:12 $Removing synchronize view entries
Closing the Synchronize view
Close all instances of the Synchronize view and ensure that no instances
of ISynchronizeView remain.
Team Data Structures
Last Modified: $Date: 2006/11/13 15:33:12 $
CVS Specific data structures
CVS uses several caches to improve performance. Tools should be provided to query the
size of these caches as well.
Scalability
Last Modified: $Date: 2006/11/13 15:33:12 $
Failure Cases
Connections
Last Modified: $Date: 2006/11/13 15:33:12 $
Authentication Problems
Last Modified: $Date: 2006/11/13 15:33:12 $Misc
CVS Console
Last Modified: $Date: 2006/11/13 15:33:12 $
Since: 3.0 M9
Last Modified: $Date: 2006/11/13 15:33:12 $
Since: 3.0 M9
Last Modified: $Date: 2006/11/13 15:33:12 $
Since: 2.0
Last Modified: $Date: 2006/11/13 15:33:12 $
Since: 3.1
Last Modified: $Date: 2006/11/13 15:33:12 $
Activate the CVS menu and assign keybindings to the various CVS commands. Ensure that they work as expected.
Since:
Last Modified: $Date: 2006/11/13 15:33:12 $
These tests are to sanity check editors behavior relating to calling validateEdit. The tests will try to cover all cases where files are changed by the validateEdit handler and changes are made to the read-only bit.
These test cases outline the expected behavior of single file editors in terms of calling validateEdit and handling of error conditions. All scenarios assume that a repository provider is mapped to a project and has created a sandbox with files that are marked read-only.
The org.eclipse.team.example.filesystem plugin is a repository provider that simulates a pessimistic workflow. You can use it to run these tests and validate (no pun intended) your validateEdit editor support. To use the pessimistic provider, share a project with the repository provider called "File System Pessimistic Example" and then you can add to control the files and checkin/checkout will toggle the read-only bit and touch the file. You can change the behavior of the validateEdit call via the pessimistic preference page. For example, you can force the operation to fail and update contents of the file when checked out.
These tests should be run against the following combinations of tools:
The following scenarios are stated in terms of the Navigator view and JDT. Other tools should translate them to a set of scenarios that make sense for the tool.
Since: 3.1
Last Modified: $Date: 2006/11/13 15:33:12 $
Ensure that CVS operations such as Update and Commit are performed only
on the files in a Java package and not on the subpackages when the operations
are launched from the Java Packages Explorer.
Since: 3.1
Configure the Java Packages Explorer to show Working Sets. Populate the
working sets with various combinations of shared and unshared projects and
ensure that CVS operations can be performed directly on the working sets if they
contain at least one shared project.
Working Sets
Last Modified: $Date: 2006/11/13 15:33:12 $