How do you determine the status of the files ("New/Added", modified, merge) ?
In a word, you don't. The user is required to update its project via Clearcase, then go to IntelliJ and select "Mark Project as current", it tells IntelliJ that it can begin to track changes and can correctlty handle file status. This assumes you don't ever do a checkout outside of IntelliJ
. I had entered a feature request on JIRA : http://jira.codehaus.org/browse/IDEACLEARCASE-35.
Do you ask clearcase about status of e.g. writable file on the start?
No. See answer to question #1. I had tried to implement that but it was slow as hell. We must find a way to do it as quickly as "Rational Clearcase Eclipse plugin".
What is SCR file which is asked in the configuration dialog ?
I don't know. I think that Wesley Williams has worked on this feature on the plugin.
What is the relation between RO status of the file in a file system (*nix,Windows) and checkout operation - does it conforms the common agreement that after the checkout operation RO status is cleared (and vice verse, RO is set after the successful chicking in)?
Yes, absolutely. If a user removes the read-only attribute on a file without doing a checkout, Clearcase considers the file as "hijacked". It's sometimes useful, when you are disconnected from the network for example.
In all help pages (e.g. from IBM) I find the notes that cleartool commands for SNAPSHOT views perform smth. Does that mean that for dynamic views we need to use smth different?
AFAIK, all commands are the same for both snapshot and dynamic views. Dynamic views don't have an "update" option, because by definition you always "see" the latest version of each file.
Base CC or UCM? As far as I understand this has the influence on the terminology only or CC has significant differences in API ?
There are 2 versions of CC : Base CC and UCM CC.
Base CC is a bit like plain old CVS : files, checkout, checkin, branches, labels...
The difference between Base CC and UCM, is that with UCM, Rational Software introduced the notions of Activities, Project, Streams, Baseline on top of Base CC... All of theses notions are abstractions of the regular work of a developer on a software project, and to bring concepts of Release Management.
- Projects are like modules in CVS (bunch of related code). (for example jakarta-commons-collection, jakarta-commons-lang would be 2 different projects in CC)
- Streams are a kind like branches. In a typical UCM CC project , you have Integration Stream, and many Development Stream (like TeamA Stream, TeamB Stream, SuperRefactoring Stream and so on). Streams are categorized in a hierarchy. Ex ProjetA has an Integration stream, which in turn has 2 sub-streams : TeamA and TeamB streams. In general, a developer works on a development stream.
- Activities are like changesets. A developer works on a stream on one or more activities checking out and in many files. A typical activity might be : "bugfix #4242 : NPE while saving screen" or "Feature : add the ability to have custom preferences"...On a particular view you can only have one "selected" activity, this is called the "current activity"
- Once he's done with its activities and is satisfied with its changes, he can make a Baseline out of them (a set of activities) and "deliver" the baseline on a parent stream or onto another stream. Deliver in general will require developers to merge their changes. Rebase is the reverse operation of deliver (ie : update dev streams from integration stream)
Am I right saying that plugin supports only Snapshot kind of views ?
No, ClearcasePlugin supports both kind of views. I've worked with both. ClearcasePlugin just has to know where the "view's root directory" is.
How notion of "Activity" is supported in IDEA currently ?
I implemented basic support for activities when i had time : as far as I remember, you can just select the "current activity" among all activities >created on the stream. You can't create one from the plugin. See http://jira.codehaus.org/browse/IDEACLEARCASE-34.
What about on several Activities at the same time?
Activities are tied to a view. In general, i have several views on my computer, with one IntelliJ module in each. So you should be able to select the "current activity" for a particular module (for example, the module to which belongs the file shown in the editor)
It is possible to work on the same file in different activities. What is the current state of this feature?
You select the activity when you checkout the file (you can also change it before checkin if you changed your mind). You can only have one activity per version of the file. So i can have version 1, 2, 3 of file Dummy.java with versions 1 & 2 being created with activityA, and version 3 created with activityB. With the way it works, the plugin already supports it : a JNI call to CC is made by my "activity selector" screen to set the "current activity" when you click 'OK'.
Performance related questions :
What is an average (if the term "average" is really applicable) access time for e.g. getting information on file/folder existance in the repository (VOB)? This question is extremely important currently since IDEA has changed completely the internal design for vcs support since 6.0. And we have a completely negative experience with MS SourceSafe support since - difference between simple operation completion time reaches 60,000 times.
To be honest, i don't know. To have a good comparison, try using Eclipse with the official Rational Software plugin. This plugin updates the local status of files in a very reasonable time. I've tried to implement the same thing, but didn't go anywhere, by lack of time, and knowledge of the underlying communication library (JACOB).
Why a uniform interaction method with Ccase was not chosen, that is via command line utility? What are particular reasons to use native windows COM API with all consequences?
I think the motivation was to use a more robust way of communicating with CC (API, Objects, Error handling, not dependent on changes in command line outputs)... Maybe the same question could be asked about the motivation of JavaSVN or the C layer to communicate with Subversion.
