The test really states what this is about. Inspired by bug report #504 (which I suspect refers to an already-fixed bug), I wrote a test script that darcs fails involving adding and removing a binary file. I then have two patches that fix the bug. One works by avoiding generating the null binary patches in the first place, and the other by allowing coalesce to eliminate them once they're generated. I suspect both are good changes to include, and I may move these bugfixes into darcs-stable soon. They aren't very serious bugs, but they're very simple bugfixes.
David. Wed Sep 7 08:25:09 EDT 2005 David Roundy <[EMAIL PROTECTED]> * add test that adding and removing binary files leaves no change. Wed Sep 7 08:51:04 EDT 2005 David Roundy <[EMAIL PROTECTED]> * make darcs able to eliminate null binary and hunk patches when coalescing. Wed Sep 7 08:51:29 EDT 2005 David Roundy <[EMAIL PROTECTED]> * make darcs not generate null binary patches when diffing.
New patches: [add test that adding and removing binary files leaves no change. David Roundy <[EMAIL PROTECTED]>**20050907122509] < > { hunk ./tests/pending.sh 34 cd temp $DARCS whatsnew --dont-look-for-adds > wn2 diff wn1 wn2 + +$DARCS record -a -m 'cleaning up for new test.' +date > foo.jpg +$DARCS add foo.jpg +$DARCS whatsnew + +$DARCS remove foo.jpg +(! $DARCS whatsnew) || exit 1 + cd .. rm -rf temp* } [make darcs able to eliminate null binary and hunk patches when coalescing. David Roundy <[EMAIL PROTECTED]>**20050907125104] < > { hunk ./PatchCommute.lhs 109 sort_coalesce_composite :: [Patch] -> [Patch] sort_coalesce_composite [] = [] +sort_coalesce_composite (x:xs) | is_null_patch x = sort_coalesce_composite xs sort_coalesce_composite (x:xs) = push_coalesce_patch x (sort_coalesce_composite xs) push_coalesce_patch :: Patch -> [Patch] -> [Patch] hunk ./PatchCore.lhs 32 where import Prelude hiding ( pi ) -import FastPackedString ( PackedString ) +import FastPackedString ( PackedString, nullPS ) import FileName ( FileName, fn2ps, fn2fp, fp2fn, norm_path ) import PatchInfo ( PatchInfo, patchinfo, make_filename, invert_name ) import Printer ( Doc, packedString ) hunk ./PatchCore.lhs 71 is_null_patch :: Patch -> Bool is_null_patch (ComP ps) = all is_null_patch ps +is_null_patch (FP _ (Binary x y)) = nullPS x && nullPS y +is_null_patch (FP _ (Hunk _ [] [])) = True is_null_patch _ = False is_merger :: Patch -> Bool } [make darcs not generate null binary patches when diffing. David Roundy <[EMAIL PROTECTED]>**20050907125129] < > { hunk ./Diff.lhs 160 \end{code} \begin{code} +bin_patch :: FilePath -> PackedString -> PackedString -> [Patch] -> [Patch] +bin_patch f o n | nullPS o && nullPS n = id + | otherwise = (binary f o n:) + diff_added :: (FilePath -> FileType) -> [FilePath] -> Slurpy -> ([Patch] -> [Patch]) diff_added wt fps s hunk ./Diff.lhs 171 TextFile -> (addfile f:) . diff_from_empty id f (get_filecontents s) BinaryFile -> (addfile f:) - . (binary f nilPS (getbin $ get_filecontents s):) + . (bin_patch f + nilPS (getbin $ get_filecontents s)) | otherwise {- is_dir s -} = (adddir f:) . foldr (.) id (map (diff_added wt (n:fps)) (get_dircontents s)) hunk ./Diff.lhs 187 | is_file s = case wt n of TextFile -> diff_files f (get_filecontents s) empt . (rmfile f:) - BinaryFile -> (binary f (getbin $ get_filecontents s) nilPS:) + BinaryFile -> (bin_patch f + (getbin $ get_filecontents s) nilPS) . (rmfile f:) | otherwise {- is_dir s -} = foldr (.) (rmdir f:) } Context: [clean up docs on flags directly to darcs (not to a darcs command). David Roundy <[EMAIL PROTECTED]>**20050903124050] [bump version to 1.0.4rc1. David Roundy <[EMAIL PROTECTED]>**20050903114002] [update the web page to direct new users first to the precompiled binaries rather than first to the source [EMAIL PROTECTED] [add test script that displays --no-pristine test-related bug. David Roundy <[EMAIL PROTECTED]>**20050903132906] [fix bug triggered by --no-pristine-tree and running test. David Roundy <[EMAIL PROTECTED]>**20050903132055 The trouble was that the NoPristine version of createPristineDirectoryTree would fail if the directory already exists, which isn't the intended behavior. I also took this opportunity to remove the "stubbornly" function and replace some stubborn directory creation with createDirectoryIfMissing. ] [don't create test directory if we don't want to actually run test. David Roundy <[EMAIL PROTECTED]>**20050903130722] [Change an rm_rf to a cleanup in tests/disable.pl Ian Lynagh <[EMAIL PROTECTED]>**20050902024711] [TAG 1.0.4pre4 David Roundy <[EMAIL PROTECTED]>**20050901110418] [add changelog entry for makefile fix. David Roundy <[EMAIL PROTECTED]>**20050901110353] [bump version to 1.0.4pre4. David Roundy <[EMAIL PROTECTED]>**20050901110210] [fix DESTDIR syntax errors in makefile Andres Loeh <[EMAIL PROTECTED]>**20050831192410] [-add test script for --set-scripts-executable Mark Stosberg <[EMAIL PROTECTED]>**20050901015046 It's currently failing because darcs is currently broken in this regard. I commented out a "TODO" test in case you want to make to this a TODO test until someone gets to it. ] [TAG 1.0.4pre3 David Roundy <[EMAIL PROTECTED]>**20050831115448] [add two changelog entries. David Roundy <[EMAIL PROTECTED]>**20050831113335] [only create directories on install if they don't exist (bug #494) David Roundy <[EMAIL PROTECTED]>**20050831113142] [fix bug in whatsnew -l -l (rt#501). David Roundy <[EMAIL PROTECTED]>**20050831110552] [fix typo in docs. David Roundy <[EMAIL PROTECTED]>**20050831002520] [fix --posthook code to pass tests. David Roundy <[EMAIL PROTECTED]>**20050830132225] [add test for --disable. David Roundy <[EMAIL PROTECTED]>**20050830132122] [add changelog entry for --posthook. David Roundy <[EMAIL PROTECTED]>**20050830132110] [add skeleton posthook test. David Roundy <[EMAIL PROTECTED]>**20050827123744] [posthook documentation Jason Dagit <[EMAIL PROTECTED]>**20050825045706] [update building darcs section of manual. David Roundy <[EMAIL PROTECTED]>**20050829120152] [add bench directory with a single script in it. David Roundy <[EMAIL PROTECTED]>**20050828114118 See bench/README for discussion of the idea behind this. ] [fix "No root path(s) specified at ..." testsuite problem. David Roundy <[EMAIL PROTECTED]>**20050830121603] [Rewrite gcau, add explanatory comment from David and some TODO notes Ian Lynagh <[EMAIL PROTECTED]>**20050830020943] [add test that triggers "too many open files" bug. David Roundy <[EMAIL PROTECTED]>**20050827192215 We just need to pull over 1024 patches at once to trigger this bug on my linux system. ] [changed from --posthook-command to posthook Jason Dagit <[EMAIL PROTECTED]>**20050825043414] [now the posthook options appear for each command Jason Dagit <[EMAIL PROTECTED]>**20050825043305] [posthook for apply Jason Dagit <[EMAIL PROTECTED]>**20050803070343 With this patch it is now possible to specify a command to run after every successful apply. ] [added run_posthook for actually running posthooks Jason Dagit <[EMAIL PROTECTED]>**20050803070156 This adds the function run_posthook which should be used to run posthooks. The code was added to Test.lhs, but there may be a better place for this code. ] [added posthook command line switches Jason Dagit <[EMAIL PROTECTED]>**20050803065956 Added generic posthook command line switches. This patch does not add any posthooks to any command. ] [New implementation of comparePS, based on memcmp. 1/5 space usage, 96% faster [EMAIL PROTECTED] [Use substrPS-less versions of initPS and tailPS [EMAIL PROTECTED] [remove hideous malloc hack. David Roundy <[EMAIL PROTECTED]>**20050818161411] [change my AUTHORS email to [EMAIL PROTECTED] David Roundy <[EMAIL PROTECTED]>**20050808124703] [fix mkstemp implementation for win32 Peter Strand <[EMAIL PROTECTED]>**20050810211303] [Implement parts of System.Posix.(IO|Files) for win32 [EMAIL PROTECTED] [implement RawMode with library functions instead of ffi [EMAIL PROTECTED] [call hsc2hs without output filename argument [EMAIL PROTECTED] [Rename compat.c to c_compat.c to avoid object filename conflict with Compat.hs [EMAIL PROTECTED] [Move atomic_create/sloppy_atomic_create to Compat Ian Lynagh <[EMAIL PROTECTED]>**20050730141703] [Split the raw mode stuff out into its own .hsc file. Windows needs some TLC Ian Lynagh <[EMAIL PROTECTED]>**20050730134030] [Move maybe_relink out of compat.c Ian Lynagh <[EMAIL PROTECTED]>**20050730131205] [Remove is_symlink Ian Lynagh <[EMAIL PROTECTED]>**20050730122255] [Move mkstemp to Compat.hs Ian Lynagh <[EMAIL PROTECTED]>**20050730020918] [Remove unused function Ian Lynagh <[EMAIL PROTECTED]>**20050730010118] [Start Compat.hs, and move stdout_is_a_pipe from compat.c Ian Lynagh <[EMAIL PROTECTED]>**20050730004829] [fix compilation errors with ghc-6.2.2 on win32 Peter Strand <[EMAIL PROTECTED]>**20050809192759] [Retain both Git's author and committer. Juliusz Chroboczek <[EMAIL PROTECTED]>**20050810000820] [Move slurping into syncPristine. Juliusz Chroboczek <[EMAIL PROTECTED]>**20050809232101 Avoids creating a useless pristine tree when there is none. Thanks to Ian for pointing this out. ] [Split --relink into --relink and --relink-pristine. Juliusz Chroboczek <[EMAIL PROTECTED]>**20050809230951 Relinking the pristine tree breaks handling of timestamps, which causes Darcs to compare file contents. It should not be used unless you know what you are doing. ] [fix for bug Ian found in apply. David Roundy <[EMAIL PROTECTED]>**20050811162558 This is the bug manifested in the cabal repository. ] [Cleanup --verbose handling in repair command Matt Lavin <[EMAIL PROTECTED]>**20050805020630] [clean up Printer.wrap_text. David Roundy <[EMAIL PROTECTED]>**20050808114844] [add several changelog entries. David Roundy <[EMAIL PROTECTED]>**20050808114800] [improve EOD message a tad. David Roundy <[EMAIL PROTECTED]>**20050807112644 This change also introduces a "wrapped_text" function in Printer, so we won't have to worry so often about manually wrapping lines. ] [changed ***DARCS*** to ***END OF DESCRIPTION*** Jason Dagit <[EMAIL PROTECTED]>**20050729032543] [remove unused opts argument from apply_patches and apply_patches_with_feedback Matt Lavin <[EMAIL PROTECTED]>**20050807031038] [add code to read patch bundles with added CRs. David Roundy <[EMAIL PROTECTED]>**20050806222631 I think this'll address bug #291. ] [accept command-line flags in any order. David Roundy <[EMAIL PROTECTED]>**20050806211828 In particular, we no longer require that --flags precede filename and repository arguments. ] [add obliterate command as alias for unpull. David Roundy <[EMAIL PROTECTED]>**20050804104929] [Do not ask confirmation for revert -a [EMAIL PROTECTED] Giving -a as a parameter means the user expects all changes to be reverted. Just like for unrevert and record go ahead with it do not ask for confirmation. ] [clarify help text for 'd' in SelectPatches. David Roundy <[EMAIL PROTECTED]>**20050806231117] [Add --with-static-libs configure flag for linking static versions of libraries. [EMAIL PROTECTED] [add changelog entry for bug #477. David Roundy <[EMAIL PROTECTED]>**20050806212148] [add description of how to add changelog entries to ChangeLog.README. David Roundy <[EMAIL PROTECTED]>**20050806225901] [Explain the missing ChangeLog Mark Stosberg <[EMAIL PROTECTED]>**20050526135421 It should be easy for casual users and contributors to view and update the ChangeLog. Providing a README file in the place where people are most likely to look provides a very useful clue. However, it's still not clear to me exactly how the system works, so I have left a stub to complete that documentation. Mark ] [make repair work on partial repositories. David Roundy <[EMAIL PROTECTED]>**20050805113001] [Use apply_patch_with_feedback from check and repair commands Matt Lavin <[EMAIL PROTECTED]>**20050805020830] [show patch numbers instead of dots on get Matt Lavin <[EMAIL PROTECTED]>**20050804013649] [fix obsolete error explanation in get_extra bug. David Roundy <[EMAIL PROTECTED]>**20050804130610] [simplify fix for bug 463; reuse /// from FilePathUtils Matt Lavin <[EMAIL PROTECTED]>**20050804021130] [Make curl exit with error on failed downloads [EMAIL PROTECTED] [Bump up AC_PREREQ version to 2.59. [EMAIL PROTECTED] [fix for bug 463 (with new test) Matt Lavin <[EMAIL PROTECTED]>**20050802002116] [bump version number, since I just made a release. David Roundy <[EMAIL PROTECTED]>**20050731190756] [Use simpler curl_version() function to get version string. Kannan Goundan <[EMAIL PROTECTED]>**20050322221027] [fix documentation on --reorder-patches. David Roundy <[EMAIL PROTECTED]>**20050731185406] [add changelog entry for bug #224. David Roundy <[EMAIL PROTECTED]>**20050731133942] [fix bug when editing long comment leaves empty file. David Roundy <[EMAIL PROTECTED]>**20050731133612] [changelog entry for bug #189. David Roundy <[EMAIL PROTECTED]>**20050731132624] [TAG 1.0.4pre2 David Roundy <[EMAIL PROTECTED]>**20050731121029] Patch bundle hash: 7156624afe448aa33191c0b72d2d050951f7706f
_______________________________________________ darcs-devel mailing list darcs-devel@darcs.net http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-devel