[darcs-users] Initial impressions of darcs
Scott L. Burson
Gyro at zeta-soft.com
Wed Aug 18 09:12:03 UTC 2004
Hi,
Well, I haven't actually used darcs for anything yet, but I have skimmed the
manual a second time. (Sorry for my stupid question the other day; the
manual does make the correct procedure quite clear. That's what I get for
getting excited about darcs while I'm madly trying to meet a project deadline
:-)
Certainly my first impression was "Aha! Someone has finally done this the
right way!" Meaning, (a) focussed on deltas (patches) rather than whole
configurations, and (b) looked at the problem mathematically (David's
protestations about hating math notwithstanding :-).
As I look at the manual, though, I do perceive what seem to me to be gaps in
darcs' functionality. (Please, correct any misimpressions I may reveal in
what follows.) While most SCM systems focus on configurations and treat
deltas weakly, darcs has a very strong treatment of deltas --- but doesn't
seem so good with configurations.
Let me suggest a very simple theory of configurations: a configuration is
either null or is the result of applying a set of patches to another
configuration.
Specifically, I gather that a darcs repository can contain only one
configuration, which is the result of applying all the patches in the
repository to the null configuration. Changing the configuration of the
repository requires adding or deleting patches.
I would suggest a more flexible model in which a repository may contain any
number of configurations. Configurations may be tagged with names, as
currently, or specified as a tagged configuration plus a set of patches. The
repository would always be in a particular configuration, but could easily
and efficiently be changed to a different one. Communication of patches
between repositories would also transmit tag definitions (maybe this happens
already).
Such a design raises this question: given that I've pulled some patches into
my repository, how do I specify (or even know) which configuration I want it
to enter, i.e., which subset of those patches I actually want to use?
Making this easy seems to require one more concept, which I will call a
"patchline" (the best name I can think of at the moment). A patchline is a
named set of patches published by a specific single repository R. The owner
of R may add new patches to the patchline until it is closed. A given client
repository may be subscribed to any number of patchlines (possibly from
different repositories), which means that by default, when patches are pulled
from R, they will include all the patches in the patchlines R publishes; it
also means that the repository will by default enter the configuration
containing all patches in all patchlines to which it subscribes. The client
repository's owner could select a different configuration; this would
temporarily suspend any subscriptions to patchlines containing patches
omitted in that configuration.
These are all just ideas, and far from a fleshed-out, concrete proposal, but
it does seem to me that something along these lines would make darcs more
powerful.
-- Scott
More information about the darcs-users
mailing list