Storage Management Log
This is nice log of the project, but lacks any reflection about the software engineering process, which was the goal.
- 03 Jan 2005
Success! After a few long coding sessions, the Java side of the RA layer code is beginning to take shape. Today I even got the wiki in a state where it could open pages properly through RA code.
I have not committed the code yet, since I still have a few issues to sort out.
- 02 Nov 2004
We've decided not to use the RA code in the production JAR that will be produced later today, and which will be used in a code review and presentation of the project. Olaf and Patrick will work on the RA layer today, hopefully it will become feature complete by the end of this week (and the end of this project). Sander and I will start writing a project report, which will be used during the code reviews tomorrow.
- 01 Nov 2004
As Sander points out in his comment below here, we're in maximum crunch mode for the RA layer code. I have just added some directory-traversal niceties, and it looks like the RA code is coming along quite nicely.
The big question is of course: will it all be done in time for acceptance testing? I think the big lines will be there, but there might still be some bugs in need of squashing.
- 26 Oct 2004
There were some nix problems yesterday, so that was a good time to create missing JavaDocs. Today were on full steam again with the RA Layer.
A lot of pointers out of the C-code have to be stored in the SVNJNIAdapter. First we opted for setters/getters for each pointer, but this is not very scalable. Reflection will be used for every RA-action, not very nice... So now, all the bookkeeping is done in C. Pointers are stored in a struct, and only the pointer to this struct is stored in Java code.
User-management team is working in a seperate branch on our code, to add access-checking.
- 26 Oct 2004
At this point, functionality for getting files and commiting files to te RA layer is implemented. I am quite confident that we have a working RA layer storage next week.
- 24 Oct 2004
Today I have begun to dig deeply into the bowels of the SVN C API, and besides almost getting dizzy of the batons flying all over the place, I'm pretty much starting to get the hang of it. It was only after I implemented it myself that I took a look at Eelco's work, which turned out to be quite similar. D'oh. Well, at least I grok it now, and work on an RA-layer wrapper has started.
I am quite confident that this approach is going to work (given enough coding time), but we do need to take a deep breath and explore the commit-functionality, which is rather complicated with a lot of complex delta-stuff going on. The bookkeeping Sander mentions below this post should also not be neglected, and could turn out to be a (surprisingly) large amount of work.
- 18 Oct 2004
After some research our team opted out of SWIG bindings and the likes. Eelco provided us with a proof-of-concept for implementing RA functionality directly with the SVN C-api. This will be the way to go for now. The Storage functionality will be implemented in C directly. Then, with JNI this implementation will be called from Java. The advantages of this approach:
- No more checkouts needed
- (Somewhat buggy) Java subversion client API can be left behind
On the downside, there are also some (potential) problems:
- a lot of bookkeeping will be our responsibility, now the WC-layer is abandoned
- this approach might need extensive caching
Right now we are exploring the C API.
More on this later!
- 18 Oct 2004
And now, more time for fixing bugs and adding some new features (like update and blame).
Unfortunately, the SVN Java bindings are not too great. The documentation is very limited (we have resorted to examining its C++ source to find out some things), and work with the RA layer is not possible with JavaHL. This needs more investigation, maybe some kind of smart copy-on-edit method would be more feasible than using RA.
- 05 Oct 2004
Today it's time to work on transactions, conflicts and buggies!
- 04 Oct 2004
Yesterday I merged our code with the trunk, the first team to do so!
- 29 Sep 2004
During a "double XP" stint we have implemented, refactored (redo from start) the necessary parts of the Storage interface. Time to iron some of the last bugs out, and then we can merge with the trunk! Our fellow developers must be going mad with the volume of commits we've produced thusfar.
- 27 Sep 2004
Today, we will finalize our interface proposal, and implement the necessary functions. Hopefully we can merge with the trunk this afternoon or somewhere tomorrow.
- 27 Sep 2004
Last week we have implemented a preliminary version of the svn checkout functionality, and familiarized ourselves with the Subversion Java bindings.
This week our primary concern is the architecture and interface of the Storage classes; we have created a storage interface proposal and discussed it with both the Versioning UI and User Management teams. Today, Michiel will attend the architecture meeting, where other teams' wishes regarding the interface can be discussed.
- 21 Sep 2004