[Nitro] Darcs troubles

Jonathan Buch john at oxyliquit.de
Mon Feb 12 17:57:40 EST 2007


Hi,

> I'm an admitted novice with Darcs.  Right now, I feel clumsy with it,
> and more importantly, patches I submit using it can't be applied.  Can
> anyone suggest what I'm doing wrong?  Very likely I'm still in the
> realm of common gotchas.
>
> Twice now I've finished doing some edits, done a darcs record, a pull,
> resolved some conflicts, recorded, and then a send.  The resulting
> bundle won't apply.  I think one of them might?  But I think my first
> bundle hung George's darcs when he tried to apply it, and the main
> repo hung my darcs when I tried to pull.  (I since believe that had to
> do with working under a soft link into my local repo - which isn't
> thrilling behavior.)
>
> Is this a symptom of something?  What am I doing wrong?

when we had a second dev repo (sponsored by manveru) we had similar
problems.  I wrote like hate-mail to G then about this and how the
development in general is handled.  Now we gave up and just push to G
again, patch for patch.

Reasons we found that a repo gets broken:

* Same changes by different patches
* file moves/removes/renames
* 'splatter-patches' (many small changes in one or more files)
* not merging often enough with 'head' (G's repo)
* conflict-patches (making patches because a conflict appeared)
* `darcs revert`'ing, going to 'original state' (throwing away
   local changes which made the conflict) when the repo state is
   inconsistent
* making patches after such a revert + inconsistent repo
* too many people working on a single repo
* probably some waterlilly in south japan which got stomped by
   an egyptian camel

There will be more such signes, the further the inconsistent state
of the repo 'progresses' and soon after there will be, like, no
clean patch anymore.

Solution:

* get clean repo from George
* merge changes by hand (diff/patch, copy/paste)
* make clean `darcs record`
* send patch to G
* repeat

When only working alone on a repo, this cycle will not be needed all too
often.  It's just that darcs gets confused, and if it does, bad things
start to happen.

I have 2 main repos:

1. clean George repo
2. my dev repo

* often pull G repo [1.]
* darcs pull ../nitro-0.40-george (only get 'good' patches) [2.]
* darcs record [2.]
* darcs send -o patchfile ../nitro-0.40-george [2.]
* wait for G to apply, repeat

When George 'reworks' a patch (meaning, he uses your patch internally, but
makes changes to it and releases a new patch with it), you can almost throw
away your repo and make a clean one.  You have to observe via source what
you're pulling and how it affects code you touched.

This sounds like stress?  Maybe.  Am I just ranting?  Possibly.

But this doesn't mean that I don't like darcs.  I love it, it's imo the
most 'comforting' system around...

> On a related note, can I tell darcs to use an external merger?  I find the
> default behavior of clobbering source files mostly just confusing.

No idea on that.

You mean using an external merger when you do `darcs pull`?  When pressing 'p'
while pulling patches, you can look at the whole patch which is very useful.

Jo

-- 
Feel the love
http://pinkjuice.com/pics/ruby.png


More information about the Nitro-general mailing list