First commit

After the initial import, the first commit comes. Before the weekend I did my code to work with a sample repository. Now I’m trying to make it work with a bigger repository: the subclipse repository, with near to 4.000 revisions. I found some bugs and I’m fixing them. For example the replace (“R”) action wasn’t handled at all.

I’m going to test my code on larger repositories. I want to know how long it takes to process all the data with the current implementation. I have several ideas about improving the performance. But all depends on the performance of each step:

  1. Fetching the information from the repository.
  2. Calculating branches and storing the information in the cache.
  3. Querying the information once the cache is full of information.

Depending on how long it takes each step I will make some improvements or others. I think the most important is the third step because the first and second ones will be big time consumption tasks only for the first time. In advance the first step will only ask for udpates, so the information will be much less compared with the first time. I will post some metrics and will discuss my thoughts in the sublclipse-devel mail list.

In the last post, as Mark noticed, I made a big mistake: posting a screenshot from TortoiseSVN instead of making a screenshot from subclipse 😛 I use TortoiseSVN very much because I use developing environments others than Eclipse when developing in programming languages such as Python or PHP, so I don’t always use subclipse 😛

So here is a screenshot of my code from Eclipse with Subclipse.


Leave a Comment

Initial import

Two days ago I got access to the subclipse repository and I have just imported my current code.

Thank you very much Mark!

Comments (3)

First screenshot

This is the first screenshot about my progress in the Google Summer of Code.

Of course there is a lot of work to do. This is just the first visual thing I can show you. I have been working with the Draw2d API and I have tried to do something similar to the RevtreePlugin. Each column is a branch and each change is ordered by revision number from the top to the bottom. At the top you can see the names of the different branches.

My project at Google Summer of Code can be divided into two tasks.

  • The first task is the “cache”. Since I need a lot of information from the repository I need a cache system. I am developing a cache using an embedded database writen in pure Java: Apache Derby. By the moment the cache works, but at the moment is very simple. I will need to do some perfomance enhancements to be able to work with real-life repositories. I will talk about this in a future post.
  • The other task is the graph. Once we have taken the information about the revisions of a given file I need to show it. This is what I’m showing you. I have spent some time reading this article and playing with the Draw2d API and that is the first result. You can see it like the first version of the Wikipedia (something that will be good in the future, but not at this moment 😉 ). As you can see the graph is shown in a separated window. However it should open inside an Eclipse View. So this is work in progress :P.

Leave a Comment

Setting up the environment

These are the steps I took to have my environment ready for coding.

  1. At first you need to checkout the subclipse code. Here you’ll find instructions about accesing the source code repository. Use ‘guest‘ for username and password.
  2. Make a clean installation of eclipse. Since sublicpse is a plugin for Eclipse I downloaded Eclipse Europa for RCP/Plug-in Developers.
  3. Sublicpse itself is also needed.  So install it.
  4. Import the projects under trunk/subclipse with File -> Import… -> General / Existing Projects into Workspace. Then choose the trunk/subclipse folder.
  5. The build of the project org.tigris.subversion.clientadapter.svnkit will fail, but it doesn’t matter. SVNKit is pure Java library for accessing SVN repositories. By default (at least in Windows) JavaHL is used instead. You can change this in the preferences page: Window -> Preferences -> Team / SVN.

Once I set up the environment I made some changes in the source code and I tested it. I think the easiest change is adding a component in the preferences page. The source code for the preferences page can be found in the org.tigris.subversion.subclipse.ui.preferences.SVNPreferencesPage class. I added the second line in this example code:

showCompareRevisionInDialog = createCheckBox(composite, Policy.bind("SVNPreferencePage.showCompareMergeInSync"));
createCheckBox(composite, "foo bar");

Now you need to test that this code works. To do this open the plugin descriptor file (plugin.xml) for the org.tigris.subversion.subclipse.ui project. You’ll see an editor pane with many tabs at the bottom. In the default tab (Overview) there are two options for Testing: “Launch an Eclipse application” and “Launch an Eclipse application in Debug mode”. Click one of them. A new Eclipse application will be launched with your code changes. Now open the SVN Prefrences Page to see the changes.

Leave a Comment

Hello World!

I have created this blog to have regular status report to discuss progress, architecture and any issues related to my contribution on Google Summer of Code.

My proposal, Show file history as revision graph, was recently approved. It means I am going to spend my summer coding for the Subclipse project. This will be a great experience.

I want to thank Google, Subclipse, Mark Phippard (my mentor) and everybody involved in Google Summer of Code.

Leave a Comment

« Newer Posts