External VCS integration: request for support of multiple parallel changelists

Hi all

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.

2 comments
Comment actions Permalink

+10

I like this idea. We considered using Perforce because of these changelists, but eventually decided to use SourceSafe. BUT, this feature would be great for use with SourceSafe because I often find I forget to add a file when I go to check-in some change that has taken days to complete (esp. when I added that file on the first day). The same goes for deletes. So, this changelist idea could help me track these things.

0
Comment actions Permalink

I do not think this is a good idea. I find it is safer and easier if I keep each logicial change in a separate source tree.

Working with multiple logical changes in a single source tree means that, for example, when you run your unit tests, to test change list 1, that they are only succeeding because of changes you have made in change list 2. It is also problematic when you have changes which both wish to modify the same file.

AFAIK, Perforce is the only "transactional" version control system which encourages this kind of behaviour. Bitkeeper, Accurev, Aegis, etc all stick to the "single change per source tree" model.

0

Please sign in to leave a comment.