Planning
ConflictsFAQ (talks about darcs 2.0)
Things a Darcs monad would be good for:
- Global variables
- Passing information into posthooks - (huh?)
- SSH parameterisation
- and more!
Unstable maintenance (prior to 2007-12)
Checklist
- more-unstable
- make
- make slowtest
- linux:
- darcs trackdown
- win:
- darcs trackdown -- eh... maybe not just yet
- unstable
- darcs trackdown
- push
Undo count
Times I have visibly slipped up: 2 (quoted matchers, ntfs hard links)
Unstable workflow
Jotting notes on how I did unstable maintainership, (and how this might/could/should change). Did I mention that I welcome people editing my page on this wiki? It'd be a good way to let me know you if you think I should be doing things differently.
Stage 0 : Incoming!
- New patch comes in, save to =ACTION
Stage 1 : Review
When I find the time to do patch-reviewing (usually weekends and nights). For each patch bundle in =ACTION
- Read the patch in my mail client (this is somewhat uncomfortable... could be improved!)
- Save to /tmp
- (Don't forget to use v to view each patch individually)
darcs apply --interactive /tmp/foo.dpatch darcs diff --diff-command='opendiff %1 %2' --last=N # actually, i have an alias darcs-opendiff="darcs diff --diff-comannd='opendiff %1 %2'"
- Think really hard
make test -j3
Stage 2 down : Fear, uncertainty and doubt
darcs changes --last=n >> /tmp/rejected darcs obliterate
- Respond-to-list with comments and requests
- Transfer patch from =ACTION to =WAITING (this might actually be a bad idea - i seem to tend to let crap pile up in there)
Stage 2 up : Seems ok
- Respond to email thread (so that people know what happened to the patch)
- Either
- There are any patches I want to wait longer on: flag the mail using ! (in mutt) [this turns it red in my config]
- I'm completely happy
- If I am unsure about the patch, let it ripen for a few days (usually not)
Stage 3: One last check
This for all patches at once
darcs push # goes from more-unstable to unstable
cd .. cd unstable make test -j3 # the -j3 is just to make my machine compile faster darcs push --no-set-default kowey@my_linux_vm:darcs-unstable # and then log in there and make test -j3
Stage 4: Really push
This is for all patches at once
- Breathe deeply
cd .. cd unstable darcs push
- Generate patches-accepted-on-this-date mail:
Use darcs changes --reverse --last=N to get messages for accepted patches
Use darcs apply --interactive and copy-n-paste to get messages for rejected/pending/waiting patches
- Write a summary (since, author, basic idea) for any bundles that are waiting for resubmission
Projects
Personal Darcs to-do list and scratchpad. Of course, if somebody else wants to do these, please please help yourself!
All this stuff now goes on the back burner. My main objective is to manage incoming patches smoothly and responsibly. Can you say, "bit off more than you can chew?"
- query cat
- minimal_context
Understanding darcs - an extra-slow guide to darcs and patch theory
Actions
query cat
- Figure out how darcs diff/annotate/etc work wrt to filenames
Determine how files are represented - can we just have one giant PackedString for the file, apply patches to it, and then dump it out all at once? is it better to just put the file some place temporary and do the patch stuff on disk?
minimal context
Look into the PatchSet type and figure out what that's for
Gui
- Think of a good way to solve the generic "notify the main window when the sub window dies" problem
- Look for examples of Edwin T's Pull.lhs patch in action
''Understanding darcs'' wikibook
- WF: David to bless the mail I found
- Explain the exponential merging problem
Miscellaneous
- test case - it should not be possible, using absolute paths and repodir to add a file into the repository which is not actually in there!
Refactors
parent_dir in FilePathUtils.lhs
minimal_context notes
head_permutations is probably useful for this job
should think about how i would QuickCheck this or do unit testing otherwise
Where is ssh used?
The internal stuff
copySSH (from anything that calls copyFileOrURL); does an scp to transfer stuff over; if we wanted to implement Ganesh's idea, we'd have to find a way to replace scp
pipeDoc_SSH_IgnoreError - for i/o with ssh; we send a doc in; we get a doc out
Someday/Maybe
- modernise module imports to account for hierarchical structure (Data.List, etc)
figure out what sift_for_pending is for (any explanations?)
- make the authors generation thing a standalone program
- Idea - just print the list of patch authors; use a seperate program to canonicalise
- prompt only once for file add/remove -- the thing being that you have two patches instead of one,
- but somehow when adding, darcs should know they belong together
- darcs server/client stuff, was originally to solve ssh-multiplexing stuff, but wait, Daan's darcs server might do this better?
- See also
http://koweycode.blogspot.com - Eric rambles incoherently on about his hobby hacking activities
Understanding darcs src - the Omnigraffle src for my darcs diagrams. Includes a stencil
