[darcs-users] Broken Repo fix problem (left as an exercise to the reader)

Richard Smith rsmith at bitworks-inc.com
Mon Sep 26 20:39:44 UTC 2005


Reciently I started letting some other users of darcs begin to push up 
to where we are trying to keep a master copy.

Now my master copy of the the repo seems to have an issue.

I get the following when I try to push a particular patch.

=========
darcs failed:  Error applying patch to recorded!
Running 'darcs repair' on the target repo may help.
./src/winp.c: openBinaryFile: does not exist (No such file or directory)
=========

And then I have to go do a darcs repair on the repo.

========
$ darcs annotate winp.c

Fail: The file 'winp.c' was removed by
Mon Sep 12 08:39:39 CDT 2005  <offender at here>
   * DirRestructure
========

Looking at DirRestructure I see that the offender removed almost all the 
files in the source directory and didn't re-add them. Something about 
not understanding how to type 'darcs mv' properly. *grin*   He's been 
thusly flogged for his transgressions.

I was able to establish a new master repo by geting a copy of my local 
repo and fixing it up to current and we have moved on with the new master.

However, I'd like to go though the steps of recovering this repo back to 
a good state and making it current as an excercise for any future 
problems that may happen.  Sharpen my darcs tools.  As the lead 
developer and RCS manager I'm supposed to be the guru for this type of 
stuff. :)

So I'm looking for a plan of action here.

My guess is that I need to:

- Backout (unpull?) the patches up to the point just prior to DirRestrure.
- Skip the DirRestructure
- Apply patches up to current
- Obliterate? the DirRestructure patch

Obviously thats a gross oversimplification, I feel I'm going to end up 
in patch dependency hell.   I think all the patches after that depend on 
the DirRestructure.  I have no idea how he managed to keep his tree 
intact yet jack up the repo.

How would I go about getting rid of the all DirRestructure patches that 
are floating around in more than just the offenders repo.  His broken 
repo got copied to a few other places.

How do I keep it from creeping back up sometime?  Would it be possible 
to setup some sort of blacklist where a repo would never try to apply a 
patch that matches a certain hash?

Again this may be more work than its worth but I just want the experience.

TIA

-- 
Richard A. Smith





More information about the darcs-users mailing list