Its been over a month since coding period started and I haven’t blogged much about my work. To know what my project was about refer to my last blog here.
Currently following features have been implemented and are working pretty good mostly:
- Recognize file status
- Add/Remove/Rename files in repository
- Commit changes
- Create/Close/Switch branches
- Create/Delete tags
- Update working directory to a particular branch/tag/changeset
- Create new repository
- Clone repository
- Push changes
- Pull changes
- KVersionControlPlugin2 interface
The user interacts with plugin through a Context Menu. Context Menu will show the actions related to Version Control such as Add Files, Remove Files, Push, Pull, Commit etc. To create/clone a repository the actions are supposed to be shown on unversioned folders as well. Current plugin interface didn’t allow this. Hence a new interface was created to solve this problem. Right now this new interface just provide facility to show context menus everywhere apart from the features provided by existing interface.
Well, there’s nothing much to say about the plugin itself. I’m posting few screenshot’s and give little descriptions.
1. Recognize File Status
The file version status are recognized by the plugin and is represented by an a small icon or tint color.
2. Context Menu
Here’s how the context menu look basically. Actions like Add, Remove, Rename show up when items are selected are enabled when they can work. Like “Add” action will be disabled for files that are already added to repository.
3. Commit Changes
Perhaps the most frequently used command is “commit”. Out commit dialog will show the files which are added, removed, renamed or modified and their respective diffs. Under Branch button, you will have three options – Use Current Branch, Create New Branch, Close Current Branch. Copy Message and Options are not yet implemented.
A editable Combo Box is presented which lists all the available branch. You can update current directory to a particular branch or create a new branch. The Push Buttons will be enabled/disabled according the input. Eg. In above screen shot a branch named “2.6″ exists so, “Create New Branch” is disabled.
This dialog works very similar to the Branch dialog mentioned above.
The Update dialog shows two combo boxes. First one gives you options – “Branch”, “Tag”, “Changeset”. When selected first two, second combo box will list branch/tag as per the selected option. If third option is selected , second combo box becomes editable and you can update to any revision.
7. Create Repository
Simply creates a repository in given folder.
8. Clone Repository
Clones a repository at given “Source” to “Destination. Few common options are provided. Facility to handle username/password will be implemented soon after configuration dialog’s.
9. Push Changes
Push Dialog shows up as simple small dialog. Some options are available as usual. You can also see outgoing changes and their corresponding diffs and information.
10. Pull Changes
Very similar to Push Dialog. You can see incoming changes if you wish to.
11. Configuration Dialog
Just a basic configuration dialog. Its just a starting. Will have much more.
Most commonly used features are implemented and are working pretty good. There are still some bugs and peculiarities. They are under high priority to be fixed. Apart from that following features are planned to be implemented very soon:-
- A nice Configuration Editor, which will edit your global, local and any other hgrc configuration file.
- Handle repository paths/username/passwords
- Convert Repositories
- Import and Export commit patches
- Email commit patches
- Edit hgignore
- Start local HTTP repository browser using hg serve
How to get it?
Source Code of the plugin is available at KDE SVN repository at:/branches/work/soc-kdesdk-dolphin-plugins-hg/
To compile and use the plugin you need modified kde-baseapps. it is available at KDE git repository at :kde:clones/kde-baseapps/visheshyadav/soc-dolphin-vcs-plugin.git
In kde-baseapps, changes are made only to Dolphin and libkonq.
Your feedback is most important. So please let me know if you find the plugin good/bad or you find some bug or have some idea or just anything. I would very much appreciate that.