[darcs-users] Tracking other people's work - when things get more complicated.

David Roundy droundy at darcs.net
Sat Dec 1 15:34:44 UTC 2007


On Fri, Nov 30, 2007 at 11:10:15PM +0100, Kalman Noel wrote:
> I use revision control systems only to get developer's branches of interesting
> programs and libraries, so I'm not actually an “active” (da)rcs user.  However,
> issue 447 on the bug tracker (a wishlist item about a patch-shelf feature) [1]
> made me think again.  All this is, of course, rather speculative thinking.
> 
> As for updating my favorite libraries, `darcs pull --all` does the trick well.
> I wonder still how my workflow would look like if I were actually envolved in a
> larger project.  Looking at large projects managed by a distributed rcs other
> than darcs, say the linux kernel, I'd probably prefer if I had a mirror of all
> important repositories on my machine.  That is, I'd want to catch up with other
> people's working repositories as well as those repositories labelled “stable”,
> “unstable”, or labelled after a specific feature that is hard to implement.

I don't really see why you'd want a mirror of many different repositories
on your machine, unless you'll actually be compiling and testing the code
in those different repositories--in which case you really will want a
working directory for each one.

> In order to achieve such a mirroring with darcs, I would have to keep one
> directory for every branch that interests me.  I'd just had to be careful not to
> record anything in the mirror repositories, so they won't eventually differ from
> the remote branch.  There's nothing bad about this approach per se, but I
> suspect two problems with it:
> 
>     * Different branches of a project tend to be populated not only with
>       different patches, but often with the same patches, if those are sensible
>       to apply to e. g. both the stable or the unstable branch, or if a feature
>       is merged from a feature branch.  `darcs pull --all` will then download
>       any such patch for every repository I pull into, which potentially means
>       wasted network traffic as well as wasted disk space (no hard linking in
>       this scenario!).

This issue is (largely) fixed with the (new, essentially unused)
hashed-inventory format and its cache option.  Identical patches won't be
downloaded more than once, and will be hard-linked, so you need only store
one copy.

>     * I'm not convinced by the strategy described in [1] for never pulling a
>       specific patch, namely, creating a utility respository with all the
>       unwanted patches and then using `darcs pull --complement` against it.
>       While it's rather obvious that we have to keep the unwanted patches around
>       somewhere (we have to remember them, after all), but why in a seperate
>       repository?  The wish author describes the same “worries” about the
>       untidiness of this approach that are experienced by me:  

The idea of a list of "ignore" list is a long-standing wishlist item.  It's
pretty easy to implement, but noone has bothered.  You don't need to store
the actual patches for this functionality, just their ids.
-- 
David Roundy
Department of Physics
Oregon State University


More information about the darcs-users mailing list