Subversion, attributes and random thoughtsFor the last three weeks I've been involved in the subversion importer development. It will be one the new features for the upcoming 2.0 release. AFAIK plastic will be one of the few commercial tools importing from svn. So I've been fighting against memory problems, performance and some svn features which don't really match with plastic concepts. Hopefully I'll be finishing it this week.
The last two days I started testing the implementation with big real svn repos. Ok, needless to say I made some testing with small ones while I was coding :-). So, it gave me some time to restart some pending tasks from the previous SPRINT. I normally prefer long tasks better than short ones, but having the chance to switch to something different while the big repos was been imported looked like having some fun.
I've been implementing some enhancements to the query system. Last week Borja finished the attributes support so now it was the time to really get the best out of it enabling some queries. So, I've modified the query system introducing the posibility to find objects associated to a certain attribute. Now you can run queries like the following one:
$ cm find branch where attribute = 'status' and attrvalue = 'open'
This one solves one of the most demanded customer requests which is being able to list the branches which are not yet integrated when they follow a branch per task pattern.
It reminds me the 'find merge' command, which I also implemented two months ago and it isn't yet released either.
$ cm find merge where srcbranch = 'br:/main/branch1' and dstbranch = 'br:/main'
This one shows whether there are merges from branch1 to main or not.
Another feature I find useful using attributes is being able to mark certain revisions with some custom comments. I mean not a regular revision comment but something you plug to the revision, for instance to be reviewed later. Imagine you want other developer to review a change you just made, but you're sure you'll be creating new revisions and you want him to check this specific one. Ok, what if you attach a new attribute named 'remark' and you give it a value like 'Must be reviewed'.
$ cm mkatt remark
$ cm statt att:remark rev:src\server\dispacher.cs#br:/main/task001#3 "Must be reviewed"
Now you want to find the revs with this attribute
$ cm find revs where attribute = 'remark' and attrvalue like '%review%'
And it will retrieve the revisions you've marked
All these features will be present in plastic 2.0, which we'll be hopefully releasing quite soon...