I spent some time working on my EclipseFrills Perforce plug-in last night. I have the “dump changelist to string” function working and I have the “shelve changes” function working for the most part. Now I need to have a way to see the shelved changes and then to “un-shelve” them.
Most of this work is pretty raw and un-interesting but I do have the “Change Shelving Dialog” prototype to show:
You can see that it takes a title for the “shevled changes”, as well as an optional description. The local changelists are displayed in a CheckboxTreeViewer so that individual changes or whole changelists can be selected. You can also elect to revert the shelved files automatically once they are shelved. It’s a good starting point.
Along these lines I also took a look at some of the subversion java APIs and it seems that I will be able to replicate some if not all of this functionality for a subversion source control system. What I am thinking about doing it implementing the Perforce version and then implementing the same for Subversive (or subversion) to find the overlap points. Then I can bring them together to provide a common interface for the functionality that could be used with any TeamProvider, kind of a ChangeShelvingProvider. Currently I use both Perforce and Subversion quite a bit so hopefully I can get this rolling.
I should probably investigate this functionality in IntelliJ a little bit to get a feel for what might be expected of such a feature. I had a moment of doubt that it would really be useful above just creating a branch from your local files. I think if you have a lot of files checked out and your changes are large and broad in scope you might be better served by creating a branch; however, for times when maybe you have a dozen or so files with changes that you just don’t want to part with yet, creating a branch can be overkill. This feature would allow you to put them aside and then integrate them back in as needed. I also am going to add the ability to export the “shelved changes” as there have been times that it would be nice to have the changes on a different machine (or given to someone else in your team).



