darcs

Issue 154 removing a non-empty directory is catastrophically painful

Title removing a non-empty directory is catastrophically painful
Priority bug Status resolved
Milestone Resolved in
Superseder Nosy List darcs-devel, dmitry.kurochkin, kowey, markstos, thorkilnaur, tommy, zooko
Assigned To markstos
Topics Darcs2

Created on 2006-03-29.14:53:04 by kowey, last changed 2009-08-27.14:04:13 by admin.

Files
File name Uploaded Type Edit Remove
bad-darcs-repo.tar.bz2 zooko, 2007-08-23.13:41:45 application/octet-stream
dx zooko, 2007-03-19.21:16:37 application/octet-stream
Messages
msg593 (view) Author: kowey Date: 2006-03-29.14:53:01
I don't know if this is theoretically possible to fix, but it would be really
nice if this case behaved better.

mkdir foo
cd foo
darcs init
mkdir d
darcs add d
darcs record -a -m "Added directory d"
cd ..

darcs get foo puller
cd puller
echo "moo" > d
cd ..

cd foo
rmdir d
darcs record -a -m "Remove directory d"
cd ..

cd puller
darcs pull

darcs failed:  user error (Error applying patch to working dir:
./d: removeDirectory: unsatisified constraints (Directory not empty))
This may have left your working directory an inconsistent
but recoverable state. If you had no un-recorded changes
by using 'darcs revert' you should be able to make your
working directory consistent again.

==========

Some ideas on how things might behave better:
1) before applying a named patch, could darcs check there this constraint is
satisfiable?  if not, it could simply refuse to apply the patch

2) a much smoother behaviour if it it simply removed the directory in the
pristine tree, and leave the one in your working directory untouched.  It should
perhaps display a warning, but otherwise succeed. When you do darcs what -ls,
you should see a directory that needs to be darcs added

The kind of scenario where people's text editors or software dumps temporary
files into a directory which is darcs rm'ed by patch.  If they pull that kind of
patch in, then they get this scary message and have to do lots of gentle nursing
to get darcs back into a consistent state.

(setting to bug because I need a priority, although whether this is actually a
bug is debatable)
msg594 (view) Author: kowey Date: 2006-03-29.15:57:11
Chatted with zooko and Igloo on this, and we have a game plan:

Patch.apply needs to accept a Pristine|Working flag so that it can behave
differently depending on where apply is being performed.  When applying RmDir on
the working directory, we shall print a warning to the screen; when applying to
the pristine tree we let the exception pass through.
msg595 (view) Author: droundy Date: 2006-03-30.14:59:39
Incidentally, this bug is a regression.  We used to get this situation right
(which suggests that it's also related to a hole in the test suite...) just by
silently ignoring failure to rmdir when applying patches.  This gave us the
weakness of possibly failing to catch certain repository corruption when
applying to the pristine cache, but had the advantage of allowing rmdir patches
to be applied to the working directory (which almost always has other files in
it that would trigger this).

I'd rate this is a pretty high priority bug, and if noone wants to do the fancy
fix suggested by Zooko/Igloo/Eric, then we could just revert to the less fancy
ignoring of (or warning on) errors when rmdiring a non-empty directory.

David
msg642 (view) Author: tommy Date: 2006-05-13.18:03:58
fixed in 1.0.7 by:
Thu Apr  6 01:19:09 CEST 2006  Eric Kow <eric.kow@gmail.com>
  * Allow for non-empty subdir when applying rmdir patch to working dir.
msg753 (view) Author: dagit Date: 2006-07-03.20:53:25
On 3/29/06, Eric Kow <bugs@darcs.net> wrote:
>
> New submission from Eric Kow <06sd1oi02@sneakemail.com>:
>
> (setting to bug because I need a priority, although whether this is actually a
> bug is debatable)

Even though an error is given the patch is considered applied isn't? 
So then to make your repo consistent you have to delete the offending
files and then revert?  Is that correct?

If so, I'd say yes this is a bug because darcs thinks a patch has been
applied but your working copy isn't really up to date.

Jason
msg1544 (view) Author: zooko Date: 2007-03-19.21:16:37
With 1.0.9rc2 (exact version attached in file), this bug has regressed even more.

Now, when I pull this patch darcs says "user error" and then suggests that I run
"darcs repair", but if I run "darcs repair" then nothing happens, and the patch
is not in my repository afterward.  So now I cannot pull this patch in any way.

Here is a transcript:

-------
HACK yumyum:~/work/trunk/trunk$ darcs pull
Pulling from "zooko@dev.allmydata.com:trees/trunk"...

Mon Mar 19 13:51:05 MDT 2007  zooko
  * remove some empty directories
  An ulterior motive for this patch is to test the sync script -- I just fixed
an inconsistency in its state files which was caused by unlocked simultaneous
access due to the earlier bug.
Shall I pull this patch? (1/4)  [ynWvpxqadjk], or ? for help: x
    R ./trunk/docs/api/
    R ./trunk/docs/api/private/
    R ./trunk/docs/api/public/
    R ./trunk/docs/misc/

Mon Mar 19 13:51:05 MDT 2007  zooko
  * remove some empty directories
  An ulterior motive for this patch is to test the sync script -- I just fixed
an inconsistency in its state files which was caused by unlocked simultaneous
access due to the earlier bug.
Shall I pull this patch? (1/4)  [ynWvpxqadjk], or ? for help: y

Mon Mar 19 14:15:32 MDT 2007  zooko
  * remove obsolete docs
  An ulterior motive for this patch is to test the sync script.

Shall I pull this patch? (2/4)  [ynWvpxqadjk], or ? for help: d

darcs failed:  user error (Error applying patch to recorded.
Running 'darcs repair' on the target repository may help.
./trunk/docs/api/private: removeDirectory: does not exist (No such file or
directory))
Your repository is now in an inconsistent state.
This must be fixed by running darcs repair.


HACK yumyum:~/work/trunk/trunk$ darcs repair
Applying patch 198 of 198... done.
The repository is already consistent, no changes made.
HACK yumyum:~/work/trunk/trunk$ darcs pull
Pulling from "zooko@dev.allmydata.com:trees/trunk"...

Mon Mar 19 13:51:05 MDT 2007  zooko
  * remove some empty directories
  An ulterior motive for this patch is to test the sync script -- I just fixed
an inconsistency in its state files which was caused by unlocked simultaneous
access due to the earlier bug.
Shall I pull this patch? (1/4)  [ynWvpxqadjk], or ? for help: x
    R ./trunk/docs/api/
    R ./trunk/docs/api/private/
    R ./trunk/docs/api/public/
    R ./trunk/docs/misc/

Mon Mar 19 13:51:05 MDT 2007  zooko
  * remove some empty directories
  An ulterior motive for this patch is to test the sync script -- I just fixed
an inconsistency in its state files which was caused by unlocked simultaneous
access due to the earlier bug.
Shall I pull this patch? (1/4)  [ynWvpxqadjk], or ? for help: y

Mon Mar 19 14:15:32 MDT 2007  zooko
  * remove obsolete docs
  An ulterior motive for this patch is to test the sync script.
  
Shall I pull this patch? (2/4)  [ynWvpxqadjk], or ? for help: d

darcs failed:  user error (Error applying patch to recorded.
Running 'darcs repair' on the target repository may help.
./trunk/docs/api/private: removeDirectory: does not exist (No such file or
directory))
Your repository is now in an inconsistent state.
This must be fixed by running darcs repair.


HACK yumyum:~/work/trunk/trunk$ darcs repair
Applying patch 198 of 198... done.
The repository is already consistent, no changes made.

-------
Attachments
msg1545 (view) Author: zooko Date: 2007-03-19.21:21:46
I just reproduced the bug with darcs 1.0.8 release (as distributed by Ubuntu
Edgy).  Exact same behavior.
msg1546 (view) Author: zooko Date: 2007-03-19.21:24:02
Oh perhaps this is not a regression in the "single level directory removed"
case, but a trickier case since I removed two levels of directories.
msg1547 (view) Author: zooko Date: 2007-03-19.22:12:15
Same behavior on darcs 1.0.7 tag (built by me).
msg1548 (view) Author: kowey Date: 2007-03-20.19:08:14
Thanks for the reports, Zooko.

Any chance of a minimal test case?
msg1549 (view) Author: zooko Date: 2007-03-20.20:52:35
> Thanks for the reports, Zooko.
> 
> Any chance of a minimal test case?

Well I just tried to create one with two levels of directories and an empty
file and the bug was not exhibited.  :-/

That is I had a patch like this:

    R ./a/
    R ./a/b/
    R ./a/b/d.txt
    R ./a/c/
    R ./a/c/e.txt

and it worked instead of exhibiting the bug.

I also tried this:

    R ./a/
    R ./a/b/
    R ./a/b/d.txt

Same (correct) behavior.

I also tried rm'ing a/b, and I tried rm'ing a/b and a/c, and I tried rm'ing a/,
and none of these triggered the bug.

:-(

--Z

P.S.  This makes me wish for this sort of testing of darcs:

http://www.stanford.edu/~engler/explode-osdi06.pdf
msg1550 (view) Author: dagit Date: 2007-03-20.20:56:15
On 3/20/07, zooko@zooko.com <zooko@zooko.com> wrote:

> P.S.  This makes me wish for this sort of testing of darcs:
>
> http://www.stanford.edu/~engler/explode-osdi06.pdf

It's not the same, but maybe a program I wrote as a term project could
be adapted to do this:
http://codersbase.com/index.php/DarcsSim

Jason
PS I'm unlikely to be the one to adapt DarcsSim in the near future.
msg1847 (view) Author: kowey Date: 2007-07-16.22:22:24
I am tentatively marking this resolved again.  The reason for doing so is that
darcs now has tolerant application of patches to the working directory, so maybe
this sort of situation no longer comes up.  Do re-open if you see this again
with 1.0.9.
msg1968 (view) Author: zooko Date: 2007-08-01.22:50:06
I don't know if this is the same issue, but I have a repository which gives me
this error under darcs 1.0.9, and I can't fix it with "darcs repair".  The
entire repository (4 patches) is attached as a tarball (.tar.rz is compressed
with rzip).

-------
 wonwin-mcbrootles-computer:~/playground/bad-darcs-repo$ cd ..
 wonwin-mcbrootles-computer:~/playground$ mkdir tmp
 wonwin-mcbrootles-computer:~/playground$ cd tmp
 wonwin-mcbrootles-computer:~/playground/tmp$ darcs init
 wonwin-mcbrootles-computer:~/playground/tmp$ darcs pull ../bad-darcs-repo

Mon Sep 27 06:12:38 MDT 2004  zooko@zooko.com
  * privdir for PhilPhone
Shall I pull this patch? (1/4)  [ynWvpxqadjk], or ? for help: y

Mon Sep 27 06:49:49 MDT 2004  zooko@zooko.com
  * basic srtp-sender source code
Shall I pull this patch? (2/4)  [ynWvpxqadjk], or ? for help: y

Tue Sep 28 09:47:14 MDT 2004  zooko@zooko.com
  * images for DHSS-prt
Shall I pull this patch? (3/4)  [ynWvpxqadjk], or ? for help: y

Thu Jul 26 14:10:18 MDT 2007  zooko@zooko.com
  * rm some stuff that conflicted or soemthing
Shall I pull this patch? (4/4)  [ynWvpxqadjk], or ? for help: y

darcs failed:  user error (Error applying patch to recorded.
Running 'darcs repair' on the target repository may help.
./philphone/fffw5g: removeDirectory: unsatisified constraints (Directory not empty))
Your repository is now in an inconsistent state.
This must be fixed by running darcs repair.

-------


Here is what happens if I run darcs repair:

-------
 wonwin-mcbrootles-computer:~/playground/tmp$ cd ../bad-darcs-repo
 wonwin-mcbrootles-computer:~/playground/bad-darcs-repo$ darcs repair -v -v -v
Checking that patch names are unique...
Applying patches...
Applying patch 1 of 4: Mon Sep 27 06:12:38 MDT 2004  zooko@zooko.com
  * privdir for PhilPhone
Applying patch 2 of 4: Mon Sep 27 06:49:49 MDT 2004  zooko@zooko.com
  * basic srtp-sender source code
Applying patch 3 of 4: Tue Sep 28 09:47:14 MDT 2004  zooko@zooko.com
  * images for DHSS-prt
Applying patch 4 of 4: Thu Jul 26 14:10:18 MDT 2007  zooko@zooko.com
  * rm some stuff that conflicted or soemthing
Unapplicable patch:
Thu Jul 26 14:10:18 MDT 2007  zooko@zooko.com
  * rm some stuff that conflicted or soemthing
darcs: ./philphone/fffw5g: removeDirectory: unsatisified constraints (Directory
not empty)

-------
Attachments
msg2090 (view) Author: zooko Date: 2007-08-22.16:15:05
I just reproduced this bug with the current stable branch.  Here is a
transcript.  I started with the "bad-darcs-repo.tar.rz" file which is attached
to this ticket.  I ran "darcs --exact-version" at the end of the transcript. 
--Zooko
-------
 wonwin-mcbrootles-computer:~/tmptmp$ rzip -d bad-darcs-repo.tar.rz 
 wonwin-mcbrootles-computer:~/tmptmp$ tar xf bad-darcs-repo.tar 
 wonwin-mcbrootles-computer:~/tmptmp$ mkdir newrepo
 wonwin-mcbrootles-computer:~/tmptmp$ cd newrepo
 wonwin-mcbrootles-computer:~/tmptmp/newrepo$ darcs init
 wonwin-mcbrootles-computer:~/tmptmp/newrepo$ time darcs pull -a -v -v -v
../bad-darcs-repo
We have the following new (to them) patches:
They have the following patches to pull:
Thu Jul 26 14:10:18 MDT 2007  zooko@zooko.com
  * rm some stuff that conflicted or soemthing
Tue Sep 28 09:47:14 MDT 2004  zooko@zooko.com
  * images for DHSS-prt
Mon Sep 27 06:49:49 MDT 2004  zooko@zooko.com
  * basic srtp-sender source code
Mon Sep 27 06:12:38 MDT 2004  zooko@zooko.com
  * privdir for PhilPhone
Getting and merging the following patches:
[privdir for PhilPhone
zooko@zooko.com**20040927121238] 
[basic srtp-sender source code
zooko@zooko.com**20040927124949] 
[images for DHSS-prt
zooko@zooko.com**20040928154714] 
[rm some stuff that conflicted or soemthing
zooko@zooko.com**20070726201018] 
diffing dir...
Applying patches to the local directories...

darcs failed:  ./philphone/fffw5g: removeDirectory: unsatisified constraints
(Directory not empty)
Your repository is now in an inconsistent state.
This must be fixed by running darcs repair.



real	0m0.389s
user	0m0.273s
sys	0m0.083s
 wonwin-mcbrootles-computer:~/tmptmp/newrepo$ darcs --exact-version
darcs compiled on Aug 22 2007, at 09:56:16
# configured Wed Aug 22 09:52:04 MDT 2007
./configure --prefix=/usr/local/stow/stable

Context:

[Fix conflicts with Kevin Quick's [DarcsRepo] stuff.
Eric Kow <eric.kow@loria.fr>**20070722193223] 

[Added --nolinks option to request actual copies instead of hard-links for files.
Kevin Quick <quick@sparq.org>**20070613193742] 

[Provide [DarcsFlag] command-line options to copyLocal
Kevin Quick <quick@sparq.org>**20070612041516] 

[Use System.Directory.copyFile for file copying.
Kevin Quick <quick@sparq.org>**20070723071533] 

[Fix conflict between unpull refactor and --no-deps.
Eric Kow <eric.kow@loria.fr>**20070805105818] 

[Hide darcs unpull command.
Eric Kow <eric.kow@gmail.com>**20070730181138] 

[Slightly refactor unpull (make it an alias).
Eric Kow <eric.kow@gmail.com>**20070728095057] 

[mark dangerous code with a fixme.
David Roundy <droundy@darcs.net>**20070727012503] 

[Fix typo.
Eric Kow <eric.kow@loria.fr>**20070805084445] 

[resurrect --no-deps [issue353]
Tommy Pettersson <ptp@lysator.liu.se>**20070801213028] 

[make --no-deps work with obliterate, unrecord and unpull
Tommy Pettersson <ptp@lysator.liu.se>**20070801212519] 

[make --no-deps work with push and send
Tommy Pettersson <ptp@lysator.liu.se>**20070801212256] 

[Export the non-interactive part of get_author.
Eric Kow <eric.kow@gmail.com>**20070731190748] 

[Fix conflicts between issue308 fix and amend-record metadata editing.
Eric Kow <eric.kow@gmail.com>**20070729191434] 

[Do not run test suite if amending metadata only.
Eric Kow <eric.kow@gmail.com>**20070728055505] 

[Add patchname to logfile when amending long comment.
Eric Kow <eric.kow@gmail.com>**20070728054752
 
 And simplify use of unlines (we already detect trailing newline).
] 

[Catch bad patch names in record --pipe.
Eric Kow <eric.kow@loria.fr>**20070727203606
 
 This appears to be a bug by which we have not yet been bitten.
] 

[[issue389] Support record -m --prompt-long-comment.
Eric Kow <eric.kow@loria.fr>**20070727203503] 

[Combine get_patchname with get_log in record command.
Eric Kow <eric.kow@loria.fr>**20070727203237
 
 This probably makes the code longer, but more explicit and with
 support for 'prior patchnames' (for amend-record).
] 

[Add test for issue467.
Eric Kow <eric.kow@gmail.com>**20070801184138] 

[[issue467] changes --context --repodir
Eric Kow <eric.kow@gmail.com>**20070801184051] 

[Remove more GUI code.
Eric Kow <eric.kow@loria.fr>**20070727202816] 

[Move just_dir helper function to Darcs.FilePathUtils.
Eric Kow <eric.kow@gmail.com>**20070730193703] 

[Rename fix_maybe_absolute and friends to something clearer.
Eric Kow <eric.kow@gmail.com>**20070730193603
 
 As suggested by David.
] 

[Rename (again) query/list to show.
Eric Kow <eric.kow@gmail.com>**20070730184757
 
 Clarify the online help while we're at it.
] 

[improve error message when unable to access a repository.
David Roundy <droundy@darcs.net>**20070726230517] 

[Always use cloneFile for copying files.
Kevin Quick <quick@sparq.org>**20070723065621] 

[Refactor amend-record test.
Eric Kow <eric.kow@loria.fr>**20070725194320] 

[Makes non-repository paths in DarcsFlags absolute [issue427].
Zachary P. Landau <kapheine@divineinvasion.net>**20070724013425] 

[fix typo
Tommy Pettersson <ptp@lysator.liu.se>**20070729225249] 

[Fix issue308: don't record empty patch with --ask-deps
Kevin Quick <quick@sparq.org>**20070728190329] 

[move to pure record-access in Patch.Info.
David Roundy <droundy@darcs.net>**20070727001358] 

[Expose more PatchInfo parts and switch to record syntax.
Eric Kow <eric.kow@loria.fr>**20070725210644] 

[Add a 'commit' command stub.
Eric Kow <eric.kow@loria.fr>**20070722053050] 

[Add test for issue308
Kevin Quick <quick@sparq.org>**20070723062114] 

[fix website in darcs.cgi.
David Roundy <droundy@darcs.net>**20070802220205] 

[resolv issue490 fix in stable (will conflict with resolv in unstable)
Tommy Pettersson <ptp@lysator.liu.se>**20070729225410] 

[[issue386] Fix some --dry-run messages: "Would push" not "Pushing".
Eric Kow <eric.kow@loria.fr>**20070722211900] 

[[issue313] Ensure that logfile for record has trailing newline.
Eric Kow <eric.kow@loria.fr>**20070722053200] 

[Update test suite to account for mark-conflicts command.
Eric Kow <eric.kow@loria.fr>**20070722044435] 

[resolve conflict.
David Roundy <droundy@darcs.net>**20070422213416] 

[make copyInventory work for all permutations of repo formats.
David Roundy <droundy@darcs.net>**20070422155344] 

[fix bug in Internal.
David Roundy <droundy@darcs.net>**20070422155324] 

[add support for different kinds of get.
David Roundy <droundy@darcs.net>**20070422152934] 

[don't print "partial repository" guess.
David Roundy <droundy@darcs.net>**20070422150603
 This guess is all too often inaccurate, and with the new hashed
 inventories, it'll be even more often inaccurate.
] 

[remove redundant copyInventory.
David Roundy <droundy@darcs.net>**20070422144910] 

[add tests for mixed inventories to hashed_inventory.sh.
David Roundy <droundy@darcs.net>**20070418234821] 

[fix FIXME for handling hashed+normal inventory at the same time.
David Roundy <droundy@darcs.net>**20070418215614
 This fix also makes the tests pass with both inventory types enabled,
 so I added that to the test suite.  This was easier than I expected!
] 

[by default test hashed inventories plus normal.
David Roundy <droundy@darcs.net>**20070329010900] 

[fix bug in hashed-inventory get
David Roundy <droundy@darcs.net>**20070530172527] 

[fix strict get to a hashed repo from another.
David Roundy <droundy@darcs.net>**20070422151300
 The trouble was that my clever idea of lazily downloading patches even
 during a strict get didn't work, since we didn't have the source while
 reading the patches the second time.  One option would be to add that
 source while applying patches the second time, but that seems like it'd
 require a more tricky interface than just copying things strictly the first
 time.
] 

[remove TODO from passing repodir.pl test
David Roundy <droundy@darcs.net>**20070530195104] 

[Do not set defaultrepo if --dry-run (issue186).
Eric Kow <eric.kow@loria.fr>**20070717101607] 

[Fix handling of --repo with relative paths.
Eric Kow <eric.kow@loria.fr>**20070714160336
   
 We did not correctly deal with the case where the user passes in a directory
 path via the --repo flag (cf --repodir).  The fix is to make findRepository
 properly aware of the --repo flag.  This way, if we have been passed a --repo
 argument, and the argument is a directory, we avoid calling seekRepo.  Note
 that we still have to keep the old code around too, to cover the case where
 --repo is a URL.
] 

[Modernise imports of System.IO.
Eric Kow <eric.kow@loria.fr>**20070507192521
 
 Note that some try/bracket/etc are now imported from Control.Exception.
] 

[rewrite --lazy to be more flexible.
David Roundy <droundy@darcs.net>**20070416154113
 This change makes it so we can handle a configured set of URLs for patch
 origins.  See the description in the Prefs.lhs documentation for details.
 In addition, I've added a new --ephemeral option, which allows the user to
 create repositories without any patch files at all (which seems a bit
 scary, but potentially handy).
] 

[Fix issue329: typing q for record --ask-deps records anyway with no deps.
Kevin Quick <quick@sparq.org>**20070718055426] 

[Rename query to list; manifest to files.
Eric Kow <eric.kow@loria.fr>**20070718204703
 
   query          => list (with query as alias)
   query manifest => list files (with manifest as alias)
   query tags     => list tags
 
 Note that the list manifest and list files commands differ in that the
 former displays directories by default and the latter does not.
] 

[Refactor aliases and stubs (rm, unadd, resolve).
Eric Kow <eric.kow@loria.fr>**20070718201453] 

[Add helpers command_alias and command_stub.
Eric Kow <eric.kow@loria.fr>**20070718200940] 

[Make --directories the default in query manifest (issue456).
Eric Kow <eric.kow@loria.fr>**20070716220308] 

[Tweak padding in usage_helper (mark-conflicts needs an extra space).
Eric Kow <eric.kow@loria.fr>**20070716230013] 

[Rename resolve to mark-conflicts (issue113).
Eric Kow <eric.kow@loria.fr>**20070716225635
 
 Resolve is retained as a (hidden) alias.
] 

[Implement hidden commands.
Eric Kow <eric.kow@loria.fr>**20070716204107
 
 This makes it possible to have command stubs or aliases without cluttering
 the usage info.
] 

[Implement command stubs 'rm', 'unadd', 'move' (issue127).
Eric Kow <eric.kow@loria.fr>**20070716202944
 
 These hidden commands are either stubs (they print some text and quit) or
 aliases (they do the same thing as some other command).
] 

[Fix hscurl.c conflicts.
Eric Kow <eric.kow@loria.fr>**20070714195126] 

[Add test for issue396.
Eric Kow <eric.kow@loria.fr>**20070717054431] 

[Filter out empty filenames (issue396).
Eric Kow <eric.kow@loria.fr>**20070717054319] 

[Always use permissive disambiguation of commands.
Eric Kow <eric.kow@loria.fr>**20070717051631] 

[Allow --list-options even if command cannot be run (issue297).
Eric Kow <eric.kow@loria.fr>**20070716210631
 
 If the command cannot be run, just print the possible flags, not the file args.
] 

[Distinguish between strict and permissive disambiguation (regression).
Eric Kow <eric.kow@loria.fr>**20070715203256
 
 Permissive disambiguation lets you handle the case where you supply a
 supercommand and a flag (i.e. not a subcommand).
] 

[Refactor parsing of command line arguments.
Eric Kow <eric.kow@loria.fr>**20070715200140] 

[Rewrite disambiguate_commands.
Eric Kow <eric.kow@loria.fr>**20070715200119
 
 This should make it more explicit what is going on.
] 

[String parameters to libcurl are kept alive to conform with the api specification
dgorin@dc.uba.ar**20070622134144] 

[update in-line documentation in cygwin-wrapper.bash
zooko@zooko.com**20070723180350] 

[Use prettyException in clarify_errors (issue73).
Eric Kow <eric.kow@loria.fr>**20070717050732
 
 This solves one of three bugs in issue73, namely that we blame the user
 for darcs's own errors.
] 

[Use Control.Exception.catch in Darcs.Utils
Eric Kow <eric.kow@loria.fr>**20070717050613
 
 This affects helper functions like catchall and clarify_errors.
] 

[Fix supercommand --help (issue282).
Eric Kow <eric.kow@loria.fr>**20070715170843] 

[Fix missing newline in inventory (issue412).
Eric Kow <eric.kow@loria.fr>**20070718210138
 
 This simplifies third party scripts that have to parse the darcs inventory.
] 

[Add crossref.png (issue485).
Eric Kow <eric.kow@loria.fr>**20070714230519] 

[Add all pulled repos to _darcs/prefs/repos (issue368).
Eric Kow <eric.kow@loria.fr>**20070717180127] 

[Implement apply --dry-run (issue37).
Eric Kow <eric.kow@loria.fr>**20070717103257] 

[Define datarootdir early enough in autoconf.mk.in (issue 493).
Dave Love <fx@gnu.org>**20070714165441] 

[More concise --look-for-adds description.
Eric Kow <eric.kow@loria.fr>**20070708141727] 

[Harmonise capitalisation (etc) in flags help.
Eric Kow <eric.kow@loria.fr>**20070708122719] 

[fix repodir test cleanup
Tommy Pettersson <ptp@lysator.liu.se>**20070715183319] 

[Canonize Andres Loeh and Daniel Gorin.
Eric Kow <eric.kow@loria.fr>**20070714200521] 

[Sort tags file (Vim likes it that way).
Eric Kow <eric.kow@loria.fr>**20070708213833] 

[Fix tags target in Makefile to account for mv to src.
Eric Kow <eric.kow@loria.fr>**20070708212921] 

[Fix Makefile bug (symlink for bigpage.tex).
Eric Kow <eric.kow@loria.fr>**20070714192500] 

[work around < &lt problem in bigpage.html [issue483]
Tommy Pettersson <ptp@lysator.liu.se>**20070712233559
 latex2html seems to misunderstand the sequence "\<" in verbatim mode, so I
 split it into two verbatim sections. It appears to look the same, but it
 could probably cause an unfortunate line break.
] 

[Fix issue420: User Agent size limit for curl gets is removed.
Kevin Quick <quick@sparq.org>**20070711225049] 

[fix links to wiki on web page (again)
Tommy Pettersson <ptp@lysator.liu.se>**20070630080403
 (They aren't broken, but) change the /index.html/ part to /DarcsWiki/ as
 David intended it.
] 

[move URL for darcs.cgi to new server.
David Roundy <droundy@darcs.net>**20070629200757] 

[fix for issue 490
David Roundy <droundy@darcs.net>**20070629195741
 This patch ensures that we never try to use a checkpoint
 for a tag that isn't in a place where the inventory is
 broken.
 
 It's a little ugly because it also puts more of the checkpoint
 handling code in Checkpoint, which required a refactor to avoid
 import loops.
] 

[In tests, don't assume grep has -q and -x flags.
Dave Love <fx@gnu.org>**20070225114022] 

[Add send --output-auto-name information to the documentation.
Zachary P. Landau <kapheine@divineinvasion.net>**20070221014555] 

[Add test for send --output-auto-name.
Zachary P. Landau <kapheine@divineinvasion.net>**20070221014501] 

[Add --output-auto-name option to Send.
Zachary P. Landau <kapheine@divineinvasion.net>**20070221014327] 

[add test to trigger yet another buggy case.
David Roundy <droundy@darcs.net>**20070422152651] 

[check for gzopen directly in zlib
mail@andres-loeh.de**20070527103908
 
 Without this change, configure will fail on systems having curl and zlib
 in different locations. Because curl depends on zlib and is already detected
 prior to zlib by the configure file, the AC_CHECK_FUNC check to curl will
 succeed. Some combinations of pkgconfig/curl versions do no longer add the
 -lz flag in its pkgconfig file, so darcs won't record -lz as a necessary
 flag, and the build will fail later.
 
 A different solution to the problem would be to move the whole check for
 zlib to *before* the check for curl.
] 

[Fix Windows build breakage.
Eric Kow <eric.kow@loria.fr>**20070520054713] 

[Use System.Process under Unix.
Eric Kow <eric.kow@loria.fr>**20070426194615] 

[Remove conflictors unit tests.
Eric Kow <eric.kow@loria.fr>**20070513063537] 

[Complete conflictors code removal.
Eric Kow <eric.kow@loria.fr>**20070513061545
 
 Remove submerge_in_dir function, apparantly only used by the conflictors
 code.
] 

[remove unneeded (and unsafe) export from Patch.
David Roundy <droundy@darcs.net>**20070511005356] 

[remove (unused) conflictor code
David Roundy <droundy@darcs.net>**20070511003956] 

[Fix makefile conflict.
Eric Kow <eric.kow@loria.fr>**20070512194803] 

[fix path to completion scripts
Peter Simons <simons@cryp.to>**20070511033227] 

[Support makefile docdir/datarootdir variables.
Dave Love <fx@gnu.org>**20070507210129
 Also avoid warnings from autoconf 2.61.  The backward compatibility
 stuff should be tidied up once requiring 2.61 is acceptable.
] 

[cut unneeded pragma from SlurpDirectory.lhs
David Roundy <droundy@darcs.net>**20070505140749] 

[Added prehooks
Jason Dagit <dagit@codersbase.com>**20070505202210] 

[Use system for calling interactive cmds in Windows instead of rawSystem.
Eric Kow <eric.kow@loria.fr>**20070415132608
 
 This lets us support switches, for example, in DARCS_EDITOR.
] 

[Fix test/ssh.sh conflicts.
Eric Kow <eric.kow@loria.fr>**20070311205156] 

[fix test_scripts bug pointed out by Eric.
David Roundy <droundy@darcs.net>**20070421213635] 

[remove unused export from RepoFormat.
David Roundy <droundy@darcs.net>**20070414174933] 

[Modernise imports of Foreign.Ptr.
Eric Kow <eric.kow@loria.fr>**20070407102536] 

[Make record_editor.pl test work under Windows.
Eric Kow <eric.kow@loria.fr>**20070415132932
 
 I believe setting the PATH to '' was giving me libcurl4.dll complaints
 under Windows.
 
 Note also that this simplifies away part of a test, in that we were
 initially trying to create stuff in a directory called 'temp dir2 " "',
 but just creating the dir itself got so tricky that I just gave up and
 switched to 'temp dir2', still with a space, no quotes.
] 

[Make mv.pl test pass on Windows.
Eric Kow <eric.kow@loria.fr>**20070415114122
 
 Fixed test count mismatch, and recovery of absolute path under msys.
] 

[Move packaging related stuff to its own directory (release).
Eric Kow <eric.kow@loria.fr>**20070401071845] 

[Move extras to their own directory (tools).
Eric Kow <eric.kow@loria.fr>**20070401071734
 
 Shell completion scripts, cgi.
 
] 

[fix bug Eric pointed out (which has also now bitten me).
David Roundy <droundy@darcs.net>**20070404233317
 This was a bug in the Checkpoint repo, where we assumed we were
 looking at the current working directory, incorrectly.
] 

[Fix unit.lhs import.
Eric Kow <eric.kow@loria.fr>**20070331194046
 
 ...due to sloppy scripting during the hierarchical shakeup.
 
] 

[whitespace cleanups in makefile.
David Roundy <droundy@darcs.net>**20070330152018] 

[fail on error in get_patches_beyond_tag.
David Roundy <droundy@darcs.net>**20070328172408
 This will expose any bugs where we use this function wrongly.
 (As was the case in darcs check --partial with hashed inventories.)
] 

[Fix conflicts.
Eric Kow <eric.kow@loria.fr>**20070313210908] 

[Modernise imports of Control.Monad.
Eric Kow <eric.kow@loria.fr>**20070313205312] 

[In tests, don't assume diff has -u, -x flags.
Dave Love <fx@gnu.org>**20070305202838] 

[Fixes for Solaris sh in tests: no $(...), test -e, or ! pipelines.
Dave Love <fx@gnu.org>**20070311170210] 

[Add changelog entries (file: quick) for pull --complement changes.
Kevin Quick <quick@sparq.org>**20070205185329] 

[Fix bash-ism `export foo=' in tests.
Dave Love <fx@gnu.org>**20070225113216] 

[More sed compliance on pull_compl test.
Eric Kow <eric.kow@loria.fr>**20070217073744] 

[Fix pull_compl test sed compliance.
Kevin Quick <quick@sparq.org>**20070214033347] 

[Add pull_compl test; note interesting duplicate repo elimination in docs.
Kevin Quick <quick@sparq.org>**20070206065236] 

[Include src/Darcs/Patch in makefile's SRC_DIRS.
Dave Love <fx@gnu.org>**20070415215139] 

[Re-fix MAKEMANUAL.
Dave Love <fx@gnu.org>**20070415122733] 

[Fix MAKEMANUAL conflict.
Eric Kow <eric.kow@loria.fr>**20070413231608] 

[Fix MAKEMANUAL make target.
Dave Love <fx@gnu.org>**20070410192153] 

[Move documentation to its own directory (doc).
Eric Kow <eric.kow@loria.fr>**20070401071635] 

[fix bug in makefile regarding manual.
David Roundy <droundy@darcs.net>**20070330154259] 

[Correct compilation errors in win32 due to src reorganisation.
Eric Kow <eric.kow@loria.fr>**20070313210732] 

[Move osx directory to src.
Eric Kow <eric.kow@loria.fr>**20070313200304] 

[Extend GHCFLAGS override mechanism to allow for subdirectories.
Eric Kow <eric.kow@loria.fr>**20070313193917] 

[Fix manual compilation errors (due to source reorganisation).
Eric Kow <eric.kow@loria.fr>**20070313214302] 

[Resolve Makefile conflict.
Eric Kow <eric.kow@loria.fr>**20070413231906] 

[Fix conflicts; adapt QueryTag to new hierarchical structure.
Eric Kow <eric.kow@loria.fr>**20070331191925] 

[Fix applyToWorking conflicts.
Eric Kow <eric.kow@loria.fr>**20070422060319
 
 Was recorded against darcs stable post 1.0.9rc2.
] 

[add support for partial and lazy downloading of hashed repos.
David Roundy <droundy@darcs.net>**20070405000616] 

[add framework for lazily fetching hash files.
David Roundy <droundy@darcs.net>**20070403232223
 This patch doesn't yet actually have any effect, but prepares
 the way for changes to allow a variety of --partial that won't
 have the downside of sometimes causing darcs to fail later,
 since one can always download the patch files from the original
 server.
] 

[make --set-scripts-executable work with get and hashed inventories.
David Roundy <droundy@darcs.net>**20070329010828] 

[fix checkpoint handling with hashed inventories.
David Roundy <droundy@darcs.net>**20070330154325] 

[Modernise imports of Data.(Char|Int|List|Maybe).
Eric Kow <eric.kow@loria.fr>**20070313210805] 

[Modernise imports of System.Directory.
Eric Kow <eric.kow@loria.fr>**20070313205200] 

[Move Haskell sources to src directory with hierarchical structure.
Eric Kow <eric.kow@loria.fr>**20070313200751
 
 src
   general modules, possibly to be spun off as non-darcs libraries 
   administrative stuff (e.g., modules generated by autoconf)
 
 src/Darcs
   darcs-specific modules, catch-all for modules I didn't know what
   to do with
 
 src/Darcs/Patch
   core patch operations
 
 src/Darcs/Repository
   modules specific to the maintenance of the darcs repo, especially the _darcs
   stuff
 
 src/Darcs/Commands
   the darcs commands, e.g. pull, record, whatsnew
 
] 

[Move C files to src directory.
Eric Kow <eric.kow@loria.fr>**20070313200135] 

[Add subdirectories for source files.
Eric Kow <eric.kow@loria.fr>**20070313194050] 

[Fix conflicts related to --ssh-cm flag.
Eric Kow <eric.kow@loria.fr>**20070311205820] 

[change "current" to (or add) "pristine" in verbose message and doc
Tommy Pettersson <ptp@lysator.liu.se>**20070211191942] 

[Resolve conflict between complement add and get_recorded_unsorted.
Kevin Quick <quick@sparq.org>**20070206071832] 

[Added --complement to pull to allow "exclusion" repos
Kevin Quick <quick@sparq.org>**20070204181301] 

[refactor get_unrecorded.
David Roundy <droundy@darcs.net>**20070128231405
 I've removed the [DarcsFlag] argument, and added two new functions
 get_unrecorded_unsorted, and get_unrecorded_no_look_for_adds, which do what
 they say.  I think this simplifies its use, and cleans things up a tad.  It
 doesn't scale to many different ways to get_unrecorded, but I don't think
 we want to go there.
] 

[Correct test for quoted arguments in DARCS_EDITOR.
Eric Kow <eric.kow@loria.fr>**20070204211312
 
 1) On MacOS X, grep lives in /usr/bin, not /bin
 2) We shouldn't escape the double quotes because they're already protected
    by the single quotes
 
] 

[Restore working directory if no repository is found (issue385).
Zachary P. Landau <kapheine@divineinvasion.net>**20070203173440
 seekRepo continues to go further up the directory tree looking for a
 repository.  If we are not in a repository, our current working directory
 becomes /.  This causes problems with code that falls back on creating
 temporary files in the current directory.  This patch will restore the
 directory the user started in if seekRepo fails.
] 

[use (empty) opts to Repository in list_authors and make_changelog
Tommy Pettersson <ptp@lysator.liu.se>**20070128165840
 They where left out in the opts Repository refactoring.
] 

[fix bug triggered in replace.sh
David Roundy <droundy@darcs.net>**20070128002206
 This bug was an annoying one that seemed to involve trouble caused by
 unsafeInterleaveIO and the order of evaluation, since we change the working
 directory.  I've simplified the code significantly.  Complicating the debug
 process was a race condition caused by the lack of --ignore-times in
 replace.sh, which was because darcs replace didn't accept that option.
] 

[refactor: add opts into Repository.
David Roundy <droundy@darcs.net>**20070128000728] 

[add test for replace that messes with unrecorded hunks
Tommy Pettersson <ptp@lysator.liu.se>**20070125153803] 

[go back to using system for edit_file/view_file instead of exec (system 'cmd
"$ARG"')
Benedikt Schmidt <beschmi@cloaked.de>**20070131162811] 

[use TODO instead of pass for record_editor test
Benedikt Schmidt <beschmi@cloaked.de>**20070131161635] 

[add some tests for edit_file and DARCS_EDITOR handling
Benedikt Schmidt <beschmi@cloaked.de>**20070131011526] 

[Remove extraneous parentheses (RepoFormat).
Eric Kow <eric.kow@loria.fr>**20070127231359] 

[make write_repo_format agree with read_repo_format (use | for separating
properties)
Benedikt Schmidt <beschmi@cloaked.de>**20070126143752] 

[Remove unused functions from Population.
Eric Kow <eric.kow@gmail.com>**20070107232034
 
 The functions are not shown to be used by any other part of darcs.
 Perhaps they should be restored if we ever get to work seriously on
 libdarcs.
 
] 

[Import IO.bracket instead of Control.Exception.bracket in Exec.
Eric Kow <eric.kow@loria.fr>**20070107211935
 
 This makes darcs work on *nix the same way it did before Simon Marlow's
 runProcess patch for Windows and my conflict-resolution tweaks.
 
] 

[Import bracketOnError from Workaound instead of Control.Exception.
Eric Kow <eric.kow@gmail.com>**20061225212444
   
 bracketOnError was introduced in GHC 6.6, whereas we want to support 6.4.1 and
 higher.
   
] 

[Fix conflicts and compile errors (Exec runProcess stuff).
Eric Kow <eric.kow@gmail.com>**20061225212423
 
 Side A:
   Simon Marlow: Use System.Process on Windows
 
 Side B:
   Edwin Thomson : Make Exec.lhs not import unneeded Control.Exception functions
     when compiling on Windows.
   Magnus Jonsson : Added rigorous error checking in exec
     
 Compile errors in question were just import-related issues.
 
] 

[Use System.Process on Windows
Simon Marlow <simonmar@microsoft.com>**20061129160710
 
 This was an attempt to address "[issue218] Patch bundle failed hash",
 but unfortunately it doesn't fix the problem.  Still, System.Process
 is a better way to invoke external commands these days.
 
 For now, the new code only replaces the Windows version of exec.  This
 means that GHC 6.4 will be required to build darcs on Windows.  Better
 would be to add a configure test, but I ran out of time here.
] 

[fix [issue370], darcs ignored args contained in VISUAL variable
Benedikt Schmidt <beschmi@cloaked.de>**20061220110807
 given VISUAL="emacs -nw", darcs would run "emacs file" instead of
 "emacs -nw file"
] 

[Make annotate work on files with spaces in the name
edwin.thomson@businesswebsoftware.com**20061218094210
 
] 

[Resolve conflicts in David's hashed_inventory optimize patches.
Eric Kow <eric.kow@loria.fr>**20061217031027
 
] 

[Make hashed inventories support optimize and reordering.
David Roundy <droundy@darcs.net>**20061216193913] 

[fix issue360, with darcs mv foo foo.
David Roundy <droundy@darcs.net>**20061217212340] 

[Prettify exceptions in identifyRepository.
Juliusz Chroboczek <jch@pps.jussieu.fr>**20061218025453] 

[QP-encode bundles when putting to a remote repo.
Juliusz Chroboczek <jch@pps.jussieu.fr>**20061218003034] 

[fix pending bug in darcs get --tag.
David Roundy <droundy@darcs.net>**20061217225256
 This patch addresses the bug displayed in Tommy's test:
 
 Mon Dec 11 20:28:21 CET 2006  Tommy Pettersson <ptp@lysator.liu.se>
   * add test for get --tag and pending
] 

[Separate comment from OPTIONS pragma for GHC 6.4 compatibility.
Eric Kow <eric.kow@gmail.com>**20061217041212
 
] 

[make optimize less DarcsRepo-specific.
David Roundy <droundy@darcs.net>**20061209205755] 

[fix bug in haskell_policy check for HopefullyPrivate.
David Roundy <droundy@darcs.net>**20061210234453
 Perhaps with this test, we can rename it to CertainlyPrivate?  :)
] 

[don't use HopefullyPrivate outside of Hopefully.
David Roundy <droundy@darcs.net>**20061210231623
 The idea is to hide the Hopefully constructors, so I can hide some more
 information in there, if I like, which should be handy for the hashed
 inventories, and may also come in handy (for similar reasons) with git
 repositories.
] 

[change Maybe Patch to Hopefully Patch.
David Roundy <droundy@darcs.net>**20061210213536
 This rather pervasive change move us to using a new Hopefully type, which
 is similar to Either String for storing patches that may or may not exist.
 This should improve error reporting.  At a minimum it'll making easier to
 improve error reporting.
] 

[resolve conflict in white space.
David Roundy <droundy@darcs.net>**20061210211846] 

[fix pending bug that broke several_commands.sh.
David Roundy <droundy@darcs.net>**20061209223916] 

[eliminate DarcsRepo.am_in_repo.
David Roundy <droundy@darcs.net>**20061204153128
 This patch is a Good Thing, even though repair and optimize don't yet
 properly support anything bug old-fashioned repositories, because without
 it, when using such repositories, one can find those command operating on a
 different repository than intended (e.g. the test suite runs optimize on
 the darcs repository itself).  Now they'll fail as they ought to, when run
 on a repo format they don't support.
] 

[fix hashed inventory bug in add and prevent it happening again.
David Roundy <droundy@darcs.net>**20061204020823] 

[make get and put reuse initialize code.
David Roundy <droundy@darcs.net>**20061203220833
 This patch actually fixes put to properly accept and use any flags that
 init accepts, which is a Good Thing.  It also ensures that get behaves
 consistently with init in the future.  Also a Good Thing.
] 

[make put work with hashed inventories (and test for this).
David Roundy <droundy@darcs.net>**20061203211141] 

[add some more hashed_inventory.sh tests.
David Roundy <droundy@darcs.net>**20061203173207] 

[fix more incompatible uses of DarcsRepo.
David Roundy <droundy@darcs.net>**20061203064355] 

[make replace work with hashed inventories.
David Roundy <droundy@darcs.net>**20061203055452] 

[Make get_tag test work with hashed inventories.
David Roundy <droundy@darcs.net>**20061203055019] 

[make directory_confusion pass with hashed inventories.
David Roundy <droundy@darcs.net>**20061203035551
 I'm not sure whether there is still a bug in the pending handling here, but
 at least it doesn't crash...
] 

[update annotate for hashed inventories
Jason Dagit <dagit@codersbase.com>**20061108033202
 Fixes test suite failure for annotate on a repository with hashed inventory.
] 

[resolve conflicts
Tommy Pettersson <ptp@lysator.liu.se>**20061117222757
 between 'clean up unrevert and pending handling'
 and 'ignore failure from hSetBufferin'
] 

[Resolve conflict in Resolution.lhs.
Eric Kow <eric.kow@loria.fr>**20061113032236
 
] 

[fix new get to not mess up pending (fixes latest hashed_inventory.sh tests).
David Roundy <droundy@darcs.net>**20061203173722] 

[External resolution can resolve conflicting adds
edwin.thomson@businesswebsoftware.com**20061106114755] 

[Only copy files needed in external_resolution
edwin.thomson@businesswebsoftware.com**20061106114719] 

[change message in 'darcs check' from "applying" to "checking" (issue147)
Tommy Pettersson <ptp@lysator.liu.se>**20061111154259] 

[make Get work with hashed inventory.
David Roundy <droundy@darcs.net>**20061101150901
 This is inefficient, but it uses only the pre-existing refactored
 functions, so it's the easiest approach.  Later we can write an efficient
 bit of code to do the same thing.
] 

[fix parsing of hashed inventories.
David Roundy <droundy@darcs.net>**20060927024505] 

[put Repository in Show class for debugging ease.
David Roundy <droundy@darcs.net>**20060927021202] 

[add a bit of hashed inventory code.
David Roundy <droundy@darcs.net>**20060918173904] 

[Added --store-in-memory option for diff
edwin.thomson@businesswebsoftware.com**20061006122802
 
] 

[make darcs check use Repository framework.
David Roundy <droundy@darcs.net>**20060927024514] 

[resolve conflicts
Tommy Pettersson <ptp@lysator.liu.se>**20061102184834
 Merge Unrecord fix for checkpoints inventory with Repository code refactoring.
] 

[Move RawMode into DarcsUtils to break cyclic imports on Win32
Josef Svenningsson <josef.svenningsson@gmail.com>**20061004120024] 

[remove duplicate file names in fix_filepaths (fixes issue273)
Tommy Pettersson <ptp@lysator.liu.se>**20060929145335] 

[add test for replace command with duplicated file name
Tommy Pettersson <ptp@lysator.liu.se>**20060929144008] 

[Move bug reporting code to its own module.
Eric Kow <eric.kow@loria.fr>**20060928222826
 
 Fixes circular dependency caused by David's unrevert cleanup (which moves
 edit_file to DarcsUtil, thus causing it to depend on Exec) and Tommy's
 exec patches (which add impossible.h to Exec, thus causing it to depend
 on DarcsUtil).
 
] 

[clean up unrevert and pending handling.
David Roundy <droundy@darcs.net>**20060917214136] 

[Fix merge conflicts.
Juliusz Chroboczek <jch@pps.jussieu.fr>**20060906191317] 

[fix bug in pristine handling when dealing with multiple patches.
David Roundy <droundy@darcs.net>**20060731111404] 

[fix ordering of operations to call pull_first_middles properly.
David Roundy <droundy@darcs.net>**20060730111409] 

[fix bug in refactoring of get.
David Roundy <droundy@darcs.net>**20060726121655] 

[refactor Population.
David Roundy <droundy@darcs.net>**20060716034837] 

[add TODO for refactoring get_markedup_file.
David Roundy <droundy@darcs.net>**20060716034339] 

[partial refactoring in annotate.
David Roundy <droundy@darcs.net>**20060716034319] 

[don't use DarcsRepo in list_authors.
David Roundy <droundy@darcs.net>**20060716033450] 

[I've now eliminated need to export DarcsRepo.write_patch.
David Roundy <droundy@darcs.net>**20060716033109] 

[partially refactor Optimize.
David Roundy <droundy@darcs.net>**20060716032934] 

[partial refactoring of Get.
David Roundy <droundy@darcs.net>**20060716031605] 

[refactor amend-record.
David Roundy <droundy@darcs.net>**20060716021003] 

[add TODO to refactor unrevert handling.
David Roundy <droundy@darcs.net>**20060716020247] 

[refactor Unrecord, adding tentativelyRemovePatches.
David Roundy <droundy@darcs.net>**20060716015150] 

[refactor tag.
David Roundy <droundy@darcs.net>**20060716011853] 

[refactor Repository to allow truly atomic updates.
David Roundy <droundy@darcs.net>**20060716011245] 

[Be explicit about timezone handling (issue220); assume local by default.
Eric Kow <eric.kow@gmail.com>**20060812102034
 
 Except for the local timezone in the user interface, this patch is not
 expected to change darcs's behaviour.  It merely makes current practice
 explicit:
 
 - Assume local timezone when parsing date strings from the user
   interface (previous behaviour was assuming UTC).
 
 - Assume UTC timezone when parsing date strings from PatchInfo.
   Newer patch date strings do *not* specify the timezone, so it
   would be prudent to treat these as UTC.
  
 - Disregard timezone information altogether when reading patch
   dates (issue220).  Note that this bug was not caused by assuming local
   timezone, because legacy patch date strings explicitly tell you what
   the timezone to use.  The bug was caused by a patch that fixed
   issue173 by using timezone information correctly.  To preserve
   backwards-compatability, we deliberatly replicate the incorrect
   behaviour of overriding the timezone with UTC.
   (PatchInfo.make_filename)
  
] 

[Account for timezone offset in cleanDate  (Fixes issue173).
Eric Kow <eric.kow@gmail.com>**20060610193049
 
] 

[add right-arrow with new name desired by new latex2html.
droundy@darcs.net**20070620233452] 

[change wiki links on webpage to wiki.darcs.net
Tommy Pettersson <ptp@lysator.liu.se>**20070617095655] 

[bump version to 1.1.0pre1
Tommy Pettersson <ptp@lysator.liu.se>**20070616202236] 

[TAG darcs-unstable-20060831
Juliusz Chroboczek <jch@pps.jussieu.fr>**20060831191554] 

[Test pull.pl, CREATE_DIR_ERROR: removed TODO now that directory name is printed
in error message
Marnix Klooster <marnix.klooster@gmail.com>**20060304164033
 Also removes a superfluous (and erroneous) chdir statement, which tried to
 change to non-existing directory templ (last character was ell instead of one).
 
 Also improves the description of this test.
] 

[TAG 1.0.9
Tommy Pettersson <ptp@lysator.liu.se>**20070603213706] 
 wonwin-mcbrootles-computer:~/tmptmp/newrepo$
msg2091 (view) Author: kowey Date: 2007-08-23.08:59:36
Hmm... rzip refuses to install on my machine (via MacPorts).

In any case, it's not the same bug.  This bug describes the situation where you
have a non-empty working directory (which should be solved by tolerant
application of patches).  Your bug looks like it may be related to weird patches
(?) or some other bug in darcs.
msg2093 (view) Author: zooko Date: 2007-08-23.13:41:46
> Hmm... rzip refuses to install on my machine (via MacPorts).

FWIW, I installed it by downloading rzip 2.1 source tarball,  
unpacking it, and doing

-------
sudo mkdir /usr/local/stow/rzip
sudo chown `whoami` /usr/local/stow/rzip
./configure --prefix=/usr/local/stow/rzip
make
make install
cd /usr/local/stow
sudo stow -v rzip
-------

GNU stow installs symlinks in my system, e.g. /usr/local/bin/rzip,  
pointing to /usr/local/stow/rzip/bin/rzip.

To uninstall this particular version of this package, you do:

-------
/bin/rm -rf /usr/local/stow/rzip
-------

To ask GNU stow to clean up all the dangling symlinks, you do:

-------
cd /usr/local/stow
sudo stow -D rzip
-------

See?  GNU stow is a beautifully simple and elegant solution to the  
problem of installing software and keeping it "under control" so that  
you can completely clean it out of your system later, for example if  
you want to upgrade to a newer version.

Note that I also use fink *and* macports on this same system and GNU  
stow doesn't cause any problems for them.

But anyway, here is the bzip2 version.

Regards,

Zooko
Attachments
msg2095 (view) Author: kowey Date: 2007-08-23.20:45:22
Here is the summarised changelog from that repository in the usual reverse
chronological order.  The thing that makes the last patch bad is that we are
trying to remove the philphone/fffw5g directory even though there is other
stuff in it (namely, DHSS-prot.jpg, sourcecode, etc).  Any idea how this patch
was created, Zooko?

You mentioned a conflict?

It would be great if we could boil this down to something minimal sequence
of actions...

Thu Jul 26 22:10:18 CEST 2007  zooko@zooko.com
  * rm some stuff that conflicted or soemthing

    R ./philphone/fffw5g/
    R ./philphone/fffw5g/screenshots/

Tue Sep 28 17:47:14 CEST 2004  zooko@zooko.com
  * images for DHSS-prt

    A ./philphone/fffw5g/DHSS-prot.jpg
    A ./philphone/fffw5g/DHSS-prot.png

Mon Sep 27 14:49:49 CEST 2004  zooko@zooko.com
  * basic srtp-sender source code

    A ./philphone/fffw5g/sourcecode/
    A ./philphone/fffw5g/sourcecode/crypto.py
    A ./philphone/fffw5g/sourcecode/srtp.py

Mon Sep 27 14:12:38 CEST 2004  zooko@zooko.com
  * privdir for PhilPhone

    A ./philphone/
    A ./philphone/fffw5g/
    A ./philphone/fffw5g/screenshots/
msg2099 (view) Author: zooko Date: 2007-08-24.15:23:34
> Here is the summarised changelog from that repository in the usual  
> reverse
> chronological order.  The thing that makes the last patch bad is  
> that we are
> trying to remove the philphone/fffw5g directory even though there  
> is other
> stuff in it (namely, DHSS-prot.jpg, sourcecode, etc).  Any idea how  
> this patch
> was created, Zooko?
>
> You mentioned a conflict?

Hm...  I'm sorry, but I don't remember how this happened.  Recently,  
in June I guess, I did a darcs get or darcs pull and got some sort of  
warning or error message about that directory.  Since I didn't need  
the directory anymore, I rm'ed it and did darcs record.  That's all I  
remember.

Regards,

Zooko
msg2801 (view) Author: markstos Date: 2008-01-27.04:40:19
I'm assigning this bug to myself to see if I can create some regression test
scripts based on the content provided here and see what happens with darcs 2.
msg2805 (view) Author: markstos Date: 2008-01-27.05:48:45
There is good news here. 

This issue related to two similar bugs. The first is represented by the original
sequence of shell commands given. I have now submitted a regression test which
confirms that this case is resolved in the unstable branch. 

In that case, darcs recognizes a conflict, asks the user what to do, and
ultimately removes the directory in the working copy, BUT saves the local
changes in a backup directory, so all is well. 

The second case is represented by zooko's bad-darcs-repo.tar.bz2. This bug does
continues to be triggered with the old repo format with darcs 2, but it is
resolved if the repo is converted to the darcs-2 format before the pull happens. 
The result is then:

Warning: Not deleting ./philphone/fffw5g because it is not empty.
Finished pulling and applying.

Since Zooko's repos were not quite a "minimal test case", no automated test case
was submitted for this variation. 

Another bug solved with Darcs2!

  Mark
History
Date User Action Args
2006-03-29 14:53:04koweycreate
2006-03-29 15:57:13koweysetstatus: unread -> unknown
nosy: droundy, tommy, kowey
messages: + msg594
2006-03-30 14:59:41droundysetnosy: droundy, tommy, kowey
messages: + msg595
2006-04-07 22:49:38jchsetstatus: unknown -> resolved-in-unstable
nosy: droundy, tommy, kowey
2006-04-07 23:29:16jchlinkissue73 superseder
2006-05-04 17:31:55jchsetstatus: resolved-in-unstable -> resolved
nosy: droundy, tommy, kowey
2006-05-13 18:03:59tommysetstatus: resolved -> unknown
nosy: droundy, tommy, kowey
messages: + msg642
2006-05-13 18:05:32tommysetstatus: unknown -> resolved
nosy: droundy, tommy, kowey
2006-07-03 20:53:27dagitsetstatus: resolved -> unknown
nosy: + dagit
messages: + msg753
2006-07-03 20:56:48droundysetstatus: unknown -> resolved
nosy: droundy, tommy, kowey, dagit
2007-03-19 21:16:46zookosetstatus: resolved -> has-patch
files: + dx
messages: + msg1544
nosy: + zooko, beschmi
2007-03-19 21:21:54zookosetnosy: droundy, tommy, beschmi, kowey, zooko, dagit
messages: + msg1545
2007-03-19 21:24:03zookosetnosy: droundy, tommy, beschmi, kowey, zooko, dagit
messages: + msg1546
2007-03-19 22:12:22zookosetnosy: droundy, tommy, beschmi, kowey, zooko, dagit
messages: + msg1547
2007-03-20 19:08:25koweysetnosy: droundy, tommy, beschmi, kowey, zooko, dagit
messages: + msg1548
2007-03-20 20:52:43zookosetnosy: droundy, tommy, beschmi, kowey, zooko, dagit
messages: + msg1549
2007-03-20 20:56:17dagitsetnosy: droundy, tommy, beschmi, kowey, zooko, dagit
messages: + msg1550
2007-03-31 05:05:42koweysetstatus: has-patch -> unknown
nosy: droundy, tommy, beschmi, kowey, zooko, dagit
assignedto: kowey -> (no value)
2007-07-16 22:22:26koweysetstatus: unknown -> resolved
nosy: droundy, tommy, beschmi, kowey, zooko, dagit
messages: + msg1847
2007-08-01 22:50:08zookosetfiles: + bad-darcs-repo.tar.rz
status: resolved -> unknown
messages: + msg1968
2007-08-22 16:15:13zookosetmessages: + msg2090
2007-08-23 08:59:39koweysetmessages: + msg2091
2007-08-23 13:41:51zookosetfiles: + bad-darcs-repo.tar.bz2
messages: + msg2093
2007-08-23 20:45:23koweysetmessages: + msg2095
2007-08-24 15:23:37zookosetmessages: + msg2099
2008-01-14 03:31:13markstossetstatus: unknown -> waiting-for
2008-01-27 04:40:20markstossetnosy: + markstos
messages: + msg2801
assignedto: markstos
2008-01-27 05:27:59markstossetfiles: - bad-darcs-repo.tar.rz
nosy: droundy, tommy, beschmi, kowey, markstos, zooko, dagit
2008-01-27 05:48:47markstossetstatus: waiting-for -> resolved-in-unstable
nosy: droundy, tommy, beschmi, kowey, markstos, zooko, dagit
topic: + Darcs2
messages: + msg2805
2008-09-04 21:28:14adminsetstatus: resolved-in-unstable -> resolved
nosy: droundy, tommy, beschmi, kowey, markstos, zooko, dagit
2009-08-06 17:38:34adminsetnosy: + jast, Serware, dmitry.kurochkin, darcs-devel, mornfall, simon, thorkilnaur, - droundy
2009-08-06 20:35:22adminsetnosy: - beschmi
2009-08-10 21:44:45adminsetnosy: - darcs-devel, jast, Serware, mornfall
2009-08-10 23:53:44adminsetnosy: - dagit
2009-08-25 17:52:13adminsetnosy: + darcs-devel, - simon
2009-08-27 14:04:13adminsetnosy: tommy, kowey, markstos, darcs-devel, zooko, thorkilnaur, dmitry.kurochkin