|
|
|
[
Permlink
| « Hide
]
Maxim Drobintsev - 08 Oct 06 07:05
The problem manifests itself both with P4CONFIG (using the hack I described in http://www.jetbrains.net/jira/browse/IDEADEV-7445
It's not strictly a Perforce issue. IDEA itself remembers the changelists and their contents between invocations, and while all modifications were removed from the changelists when the list of changed files was updated, the empty changelists were not automatically deleted (and in fact it's not quite clear when exactly they should be deleted). You can remove them by yourself.
The problem is not that the CL has no files in it; it does in fact has open files but it does not belong to the Perforce client corresponding to the currently open project. I think this is the reason why IDEA says "No files" regarding this CL. I do not understand why such changelists need to be shown in the current project. I have 7 different clients, many of which have open files, so the "Changes" tab looks quite messy and useless.
Please let me know if it was you intent to show the CL's that do not belong to the current client or it is a bug. Thanks, In fact, IDEA's CL stuff works independently from Perforce. The Changes tab doesn't show Perforce changelists selected by some criteria - rather, it shows IDEA changelists, and there is extra logic which synchronizes IDEA changelists with Perforce changelists. For example, if you create an empty changelist in IDEA, you won't see it in Perforce unless you put some Perforce-managed files into it. Also, if you have a project already open in IDEA, and create a new changelist in Perforce which doesn't contain any files under the project, the changelist should not appear in IDEA.
So this behavior is not really a bug, but rather a deficiency in the synchronization logic which could somehow (although I don't quite understand how) detect and delete such changelists. Maybe there should be simply some action "Delete empty changelists"? Your comment explained what I observed. I did copy the project files from the old client to the new one.
In general I think it is a deficiency in the synchronization logic. When opening the project IDEA needs to check if the change exists in Perforce (in the VCS defined for the project) and remove those CL's that do not exist. Probably the same should happen upon "Synchronize files" command. It looks like there is already logic to add new Perforce changes but there is no logic to remove non-existant Perforce changes. Another problem is that IDEA does not synchronize change descriptions that were modified externally. It appears to only care about the list of files.
After looking inside .iws file I found out that it stores Perforce connection information for each change. I think it contributes to the problem as more things can get out of sync - IDEA should use the current connection information and what was in effect at the time change became known to IDEA.
With this and my previous comment about change description I think this issue should become "Medium" severity. Thanks, Correction: IDEA should use the current connection information and NOT what was in effect at the time change became known to IDEA. Time to go home
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||