[xmonad] Darcs advice needed

Jan Vornberger Jan.Vornberger at Informatik.Uni-Oldenburg.DE
Sun Sep 13 14:53:07 EDT 2009


Hi there!

As I'm preparing to merge Bluetile's repository back into xmonad's
mainline, I'm a little unsure how to best use Darcs for this goal.
I don't have that much experience with Darcs, so I was hoping, I could
get some advice on what is the best way to go about this.

So there is the public xmonad repository as well as the public Bluetile
repository.

Now let's say I have two kinds of features: Some simple ones, like
feature X, that can just go in unchanged. But there might also be some
feature Y, where I might decide that for submission as a
patch, I have to do it in a somewhat different way. So I want to revert
Y and code it again as Z. How do I do this? I can think of these ways:

1. Have a new repository based on xmonad's mainline, where I
incrementally pull in stuff from Bluetile's repo and polish it up. So in
this case, I would pull X, but not pull Y, instead write a new patch for
this repo that implements Z.
Seems like a simple approach to me, but has the disadvantage, that
Bluetile's repo will never get in sync with xmonad's repo, because it
still has the X stuff.

2. Work with Bluetile's repo and simply obliterate patch Y and implement
patch Z.
This seems like a bad approach, as people that might have pulled from
Bluetile's repo won't notice that a patch was obliterated. It seems
the Darcs manual agrees, that patches should never be obliterated, once
they are public.

3. Work with Bluetile's repo and create a reverse patch Y^-1 as well as
patch Z.
This has the advantage, that Bluetile's repo can get in sync with
xmonad's mainline. I'm just not sure, if this is the 'darcs way' of
doing things?
Also, when submitting patches for feature Z, do I submit 
  a) Y, Y^-1 and Z
  or b) just Z?
Case a) seems like a lot of junk that shouldn't be in xmonad's mainline.
But for case b) I fear, it might not be possible for some cases. Let's
say the patch history looks something like: Y A B C D E F Y^-1 Z. Then
later when working on A or B, it might not be possible to go without Y
even so it's later reverted.

Comments? Advice?

Best regards,

Jan


More information about the xmonad mailing list