Some plans for scmproj

Alexander Belchenko bialix at ukr.net
Wed Nov 25 15:49:40 GMT 2009


Hi,

I'd like to share some of my plans regarding nearest future of scmproj 
plugin development. As many others I've expected to see nested trees 
support to materialize in bzr itself, but it's still not here, so I have 
to continue improve my plugin.

Some history: I've started coding this plugin year ago, later Marius 
Kruger has helped me a lot with design and code (thanks Marius!). At my 
work we're using scmproj with big success since February 2009. During 
all this months I've gathered feedback from my small team, and now I 
more or less clearly see what was wrong in current design of scmproj and 
what was good. Some features we don't used at all, some proved to be 
useful, some features useful by itself, but blocks (or rather make 
difficult) further improvements of the scmproj. As usual.

(Now I will talking about scmproj plugin internals).

We urgently and critically need 2 not implemented yet features: 
subprojects support and snapshots.

We have 2 killer features right now: project-cmd and project-publish.
The former allows to run any arbitrary command for the set of project 
components. The latter is equivalent of `push` command but for entire 
project.

If you track the state of this question you probably have noticed that 
in last month new plugin with similar aim has announced: bzr-externals.
Unfortunately the goals of that plugin is slightly different from 
scmproj, so I don't plan to use it, but rather will "steal" some ideas 
from there (sorry Eugene!). In the future it's possible that both 
plugins converge, but not right now.

So, to unblock further development I decided to remove several features:
alts (though they are very useful), subsets (never proved to be very 
useful) and move project.cfg from separate branch that lived in .scmproj 
directory to in-tree config, using the latest approved way with .bzrmeta 
(thanks, Ian). The latter means that I also will remove support for 
boxed workspaces which is far from ideal (because of limitations of 
lightweight checkouts) anyway.

Removing alts is critical point, because right now it blocks snapshots 
implementation. Also it will simplify some other things. And also 
unblocks desire to have several project configs with different number of 
components (subsets does not help us here, unfortunately).

Subprojects will be implemented very soon but in limited fashion 
(without variants supports, because we deprecate alts).

Decision to move project config to .bzrmeta is hard, but it seems my 
initial plans for separate .scmproj control branch have not used in full 
potential, so looking at bzr-externals success I'd like to not continue 
this path.

Also, I'm planning to release latest code from trunk as 0.4.6 and then 
in several steps going to new design as listed above. It will be major 
design, UI and API break, but I hope it will make scmproj much better.

If you're using my plugin and my planned changes will affect you -- 
please speak. I can put the latest verison into maintain mode for some time.

If you want to share your ideas, I'll be interested to hear them, but in 
general the listed approach looks very promising.

A.




More information about the bazaar mailing list