[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [stellation-res] Initial Eclipse client APIs posted for discussion
|
At 09:56 AM 10/17/2002, Dave Shields wrote:
On Thu, Oct 17, 2002 at 05:19:23AM -0400, Jonathan Gossage wrote:
> > >The Svc workspace already has a notion of "workspace state" which is
> > >locally persistent, motivated by many of the reasons you cite.
> > >We've since concluded this is not such a great idea:
> > >* the local "workspace state archive" is basically a
> > >"lightweight repository"
> > > - but not exactly.
> > >* the two entities do *not* have identical behavior, leading to
confusion
> > > and additional code maintenance.
> > >* there is a significant performance hit related to saving the
> > >*entire* project
> > > workspace state to a local zip archive before most
> > >Stellation operations.
Not true. The *entire* workspace state is not saved to a single zip
archive, only
the project file and the compressed form of any artifacts not previously
archived.
Thanks for the clarification. That notwithstanding, I think Mark and I
have both
noticed some performance impact (although, for command-line use, I happily
accept the performance hit in exchange for the undo/redo capability).
> > > A local repository, hosted on a local database, would likely
> > >do a better
Why should we have to use yet another database to save state while
preparing a new
revision? The save/restore is mainly meant to provide an "undo" mechanism
using the
client filesystem without the need to install any additional software.
Hmm. In our local discussions at Watson, I thought we had generally agreed
that,
once repository replication was operational, it would be "better" to use a
local database
copy rather than the save/restore workspace state mechanism. Here, "better"
means:
* less code to maintain (both in core components and in GUI components)
* same capabilities as the regular (remote) database, so developer is not
confused
by a "similar-but-not-exactly" local storage mechanism.
* Seamless transition between local version archiving (e.g. in disconnected
laptop-in-the-mountains mode) and working with a shared remote repository.
That said, I think the save/restore state mechanism has value for a
command-line
client, at least until replication is working and maybe after that.
But, for an Eclipse client, I think integration with the local resource
history mechanism
is a better solution. The local resource history mechanism, as it
currently stands,
does not support any notion of project-level versioning across sets of
resources;
the Stellation workspace save/restore functionality is clearly superior.
However -
* The Eclipse local resource mechanism seems adequate for providing a
single level
of local undo/redo (e.g. to recover after a merge or checkout that went
wrong).
* The Stellation client code can probably add Eclipse 'markers' to
resources in
the local history (or simply keep sets of resource history tags) if we
decide that
more than one level of undo is needed.
> > >
> > > job. Also - the Eclipse "local resource history" mechanism
> > >fills some of
> > > the same needs; it should be possible to leverage it even more as the
> > > Stellation Client develops.
> > >Switching between "local" and shared repository" mode will hopefully
> > >be as simple as rebinding an ScmAccessPoint to a different repository.
> > >
> I agree with you that the current workspace implementation is haevy-weight
> and costly in terms of resources.
Assuming the Eclipse "local resource history" will do the
job assumes the user is willing to always run from within Eclipse.
This is also "heavy-weight and costly in terms of resources".
Since you both agree the current workspace code is "heavy-weight and
costly in resources",
any suggestions on improving it would be welcomed, though I would prefer
to put any
changes that won't have major impact on hold until alpha release is out.
Actually, I never said "heavy-weight and costly in resources".
The workspace code is not an optimal fit for Eclipse, for a couple of reasons:
* It provides a number of services that duplicate Eclipse functionality
(e.g. resource management). This is great for a command line client,
but not so good for Eclipse, esp. since Eclipse has its own conventions
for resource path representation, etc.
The workspace state save/restore mechanism is another feature that's
very useful for a command-line client, but not as relevant to an
Eclipse client.
* The workspace code uses a "set everything up, do one thing, tear everything
down" process model which is fine for a command-line client, but not so
great
for Eclipse or other GUI clients. This does add a lot of extra overhead
(and complexity) for an Eclipse-based client.
It's worth noting that the new Eclipse ClientCore I'm working on is
**very** largely
based on your workspace code - just trimmed to fit, with an
Eclipse-friendly makeover.
As I said in an earlier note, I think it would be great to factor out
common functionality
into a package that was directly usable both by Eclipse GUI clients and by
command-line
clients. This may be a bit tricky, since Eclipse resource management is
somewhat
different from stock Java file system management, but there are ways to
finesse that.
Once the dust clears (post alpha release), it would be good to consolidate
efforts
and work towards that goal.
Regards,
Jim
--
Jim Wright, IBM T.J. Watson Research Center
*** The Stellation project: Advanced SCM for Collaboration
*** http://www.eclipse.org/stellation
*** Work Email: jwright@xxxxxxxxxxxxxx ------- Personal Email:
jim.wright@xxxxxxx