|
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$
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$
Since:
Last Modified: $Date$
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$
Since: 3.0 M6
Last Modified: $Date$
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: M8
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 M5 Ensure Commit and Update buttons: Ensure Update menu action: Ensure Commit menu action Ensure Override and Commit and Override and Update Ensure Refresh button refreshes all projects regardless of mode, selection
or working set. Ensure Refresh menu action refreshes only the selection Ensure that choosing modes and working sets All actions on large sets (Mark as Merged as well)Basics
Last Modified: $Date$
Reconnecting an existing project
Last Modified: $Date$Scenario 1: Existing location using project name
Scenario 1: New location using curstom module name
Sharing a new project
Last Modified: $Date$Scenario 1: Existing location using project name
Scenario 2: New location using different name
Project Sets
Last Modified: $Date$
Replacing
With latest
Last Modified: $Date$
With another branch of version
Last Modified: $Date$
With file revision
Last Modified: $Date$
Updating
Last Modified: $Date$Comparing
Remote resources
Last Modified: $Date$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$On file selected
Multiple selection
Merging changes
Reverting deleted resources
Last Modified: $Date$Quick Diff
Last Modified: $Date$
Synchronizing
Performing a Synchronize
Last Modified: $Date$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$Synchronize View Modes
Ensure that choosing modes
Synchronize View Operations
Modes and Working Sets
| Change Type | Action | Result |
| Incoming File Change | Update | Remote contents become local. Try with both Text and Binary files. |
| Incoming File Change | Override and Commit | Only in Both mode. Prompt for release comment. Cancel aborts, OK commits local file to server. |
| Incoming File Addition | Update | Remote contents become local. Try with both Text and Binary files. |
| Incoming File Addition | Override and Commit | Only in Both mode. Prompt for release comment. Cancel aborts, OK commits deletion to server. |
| Incoming File Deletion | Update | Local file is deleted. |
| Incoming File Deletion | Override and Commit | Only in Both mode. Prompt for release comment. Cancel aborts, OK commits local file to server. |
| Outgoing File Change | Commit | Prompt for release comment. Cancel aborts, OK commits local file to server. |
| Outgoing File Change | Override and Update | Only in Both mode. 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 | Commit is only enabled on an outgoing addition if it has first been added to version control. Prompt for release comment. Cancel aborts, OK commits local file to server. |
| Outgoing File Addition | Override and Update | Only in Both mode. 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 | Only in Both mode. File is re-created, remote contents become local. |
| Conflicting File Change | Override and Commit | Prompt for release comment. Cancel aborts, OK commits local file to server. Applies to both auto-mergeable and non-mergeable conflicts. |
| Auto-mergeable Conflicting File Change | Override and Update | Auto-mergeable conflicts have a two-way red/green arrow. Dialog prompts user to either auto-merge or replace. If user chooses auto-merge, then remote changes are merged in with local changes. File should still be dirty, local changes should still be present, CVS markup should not be present, and no .# files should have been created. If user chooses replace, 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. If the user chooses cancel nothing happens. |
| Non-mergeable 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 | Add to Version Control | Adds the file to version control. The icon should change in the sync view, and Override and Commit should now be enabled. |
| Conflicting File Addition | Override and Commit | Override and Commit is only enabled on an outgoing addition if it has first been added to version control. Prompt to warn of conflicting changes. If OK, prompt for release comment. Cancel aborts either dialog. OK commits local file to server. |
| Conflicting File Addition | Override and Update | Remote contents become local. |
Since: M8
Last Modified: $Date$
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$
Since:
Last Modified: $Date$
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$
Some things to try:
Since: 3.1 M4
Last Modified: $Date$
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$
Since: 3.1
Last Modified: $Date$
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.0 M6 Since: 3.0 M5 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 Scenario 1 Scenario 2 Since: 3.0 M6 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 Since: Since: Since: Since: 3.0 M3 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 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 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: Since: 3.0 M9 Since: 3.0 M9 Since: 2.0 Since: 3.1 Activate the CVS menu and assign keybindings to the various CVS commands.
Ensure that they work as expected.
Since:
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 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.
Synchronize View
Last Modified: $Date$
Branching
Last Modified: $Date$
Patching
Importing a zip over a shared project
Last Modified: $Date$
Resource History
Editor Linking
Last Modified: $Date$
Annotate
Last Modified: $Date$Annotate action should be available from
Annotate java files
Annotate non-text editor files
Annotate binary files
Concurrency
Close and disconnect
Last Modified: $Date$Background refresh and disconnect
Decoration and disconnect
Restarting Workbench
Crash Recovery
Last Modified: $Date$
Synchronize View Settings
Last Modified: $Date$Saved between sessions
SSH2
Server version compatibiliity
Last Modified: $Date$Proxies
Last Modified: $Date$Key Generation
Last Modified: $Date$
General use
Last Modified: $Date$
Annotate
Show Annotation Action
Last Modified: $Date$Label Decorations
Enablement at startup
Last Modified: $Date$Customizations
Last Modified: $Date$Decorations in the Synchronize pages
Last Modified: $Date$Watch/Edit
Basic scenarios
Last Modified: $Date$
Editors View
Last Modified: $Date$Performance
Timings
Last Modified: $Date$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$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$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$
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$
Failure Cases
Connections
Last Modified: $Date$
Authentication Problems
Last Modified: $Date$Misc
CVS Console
Last Modified: $Date$
Encoding Support
Last Modified: $Date$Password Management
Last Modified: $Date$Password Management
EXT
Last Modified: $Date$Ext connection method
Key Bindings
Last Modified: $Date$Validate Edit
Editing Files
Last Modified: $Date$
S1: Repository provider enabled and files are readable
S2: Validate edit called on first edit
S2b: Validate edit cancelled
S2b: Validate edit fails with an error
S3: Validate edit called on subsequent edits if file changes state
S4: Validate edit not called after contents changed
S5: Validate edit changes file contents editor not-dirty
S6: Validate edit changes file contents editor dirty
S7: Read-only editors refreshing on checkout
S8: validate called on editor save
S9: validate called on editor save with new contents
S1: Search and Replace
S2: Single file content modification
S3: Multiple file content modification
Logical Resource Support
Java Packages
Last Modified: $Date$Working Sets
Last Modified: $Date$