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