[darcs-users] Different approach for "incoherent" patches

Michael Conrad conradme at email.uc.edu
Wed Nov 24 04:59:46 UTC 2004

Might I suggest looking at current research?  ;-)  It might give insight on
how to improve the patching system.

The Gentoo portage system has a need for making sure that packages are
applied in the correct order, based on dependancies.

Their solution is to have package dependancies, package conflicts, virtual
packages, and package slots.

The package dependancies are a lot like patch dependancies.  Its the most
obvious need in either a package collection or a revision control system.

The package conflicts prevent a new package from being installed if it
provides the same services as an old package.  (like new versions of an
existing package, or XFree vs. Xorg)  This is a lot like the proposed idea
of conflicting patches.  To install the new package, you must first
uninstall the old one, or let portage automatically uninstall it.

And, one thing that gentoo added (which might solve darcs problems too!) is
the notion of a virtual package.  A virtual package is on that provides a
service like 'java', and can be filled either by blackdown's JDK, or Sun's
JDK.  The packages are considered equivalent, and having either installed
gives you "java", which is a dependancy for other packages.  Also, as a
result of providing the same virtual package, the java packages conflict
with eachother.

Actually, virtual packages might be a lot like Tags, I think (but I haven't
actually used tags yet, so I won't try to follow that train of thought)
Someone want to make the analogy?

I also won't try making a comparison with package slots, since I haven't
used them much either, but I'll toss out an idea that might be interesting:
what if a repo could hold a tag-patch, containing the current copy at the
time of tag creation, and this patch were considered equivalent to the
combined set of all patches in the tag's context?  What if the repo could
hold this patch AND all the patches it represents?  What if darcs could
consider these patches to be equal, and pull data out of the tag-patch when
it was more efficient, and out of the list of its context patches when the
data were required?

I haven't looked into the working of partial, so again I might be stating
old ides.  So I'll stop now.


More information about the darcs-users mailing list