In my understanding, currently VCS support is organized within IDEA roughly as follows:
1. When a file modification is attempted, "check out" action is performed.
2. IDEA tracks through local VCS all file additions, movements and so on.
3. Eventually user wants to "check in" changes. At this point a batch is created and external VCS commands are executed in this batch.
The major problem that I have with this approach is that "check in" action can be applied to either all or none of the checked out files. Sometimes I need to check in only some of the files, not all. In this case the concept of a changelist greatly helps me to sort out, which files have to be checked in and which don't.
A typical scenario:
For every pending bug or feature I create a separate changelist, where I attach all related files. These changelists are non-overlapping, i.e. every file may be attached to only one pending changelist at a time. When I am in the progress of fixing bugs, I open files in the relevant changelist for editing, mark for deletion and schedule for addition. When I am done with the particular bug, I submit the corresponding changelist to the VCS.
Generally, changelist is a collection of files, scheduled for some action (addition, editing, removal, integration, etc.). In our project we are using Perforce VCS, which supports changelists natively. For the VCSes that do not support changelists, they can always be emulated.
The request is to integrate a concept of a changelist into IDEA, with the appropriate support in the Open API. There should be some GUI, which allows the user to review pending changelists, move open files between changelists, assign a default changelist.
I would really like to hear comments on this request from both IntelliJ people and plugin developers.