Hi all,

Here's an amended version of the patches I recently sent, which turned
out to still be buggy (as the test suite revealed).  These are now
well and truly pushed, with all tests passing.

David

Tue Sep 16 11:20:28 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * simplify issue965 test (which took quite a while for me to figure out).

Tue Sep 16 13:03:33 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * first-stage fix for issue709.
  Here I fix the bug which leads to a corrupt pending being left, with a
  rmfile change but no hunk removing the contents.  This doesn't fix
  issue709, since an incorrect pending is left, it's just no longer a
  corrupt pending (i.e. it's still got the rmfile, but if you record it
  there's no problem).

Tue Sep 16 13:30:02 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * resolve issue709: avoid adding changes to pending in rmpend when possible.

Tue Sep 16 13:30:30 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * resolve issue885: fix patchSetToRepository to work with hashed.

Tue Sep 16 13:31:16 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * resolve issue1012: it seems to be fixed by the fix for issue709.

Tue Sep 16 13:31:36 EDT 2008  David Roundy <[EMAIL PROTECTED]>
  * remove now-unused is_addrmfile and is_addrmdir.

New patches:

[simplify issue965 test (which took quite a while for me to figure out).
David Roundy <[EMAIL PROTECTED]>**20080916152028] hunk ./bugs/issue865_replace_in_moved.sh 28
 darcs add file1
 darcs record -a -m "0" --author X
 
-ed file1 <<EOF
-1s/aa/aaaa/
-w
-q
+cat <<EOF > file1
+aaaa
+bb
+cc
+aa
+bb
+cc
 EOF
 
hunk ./bugs/issue865_replace_in_moved.sh 37
-darcs replace aa aaaa file1
+darcs replace aa aaaa file1 > out
+cat out
+grep 'Skipping file' out && exit 1
 
 darcs mv file1 file2
 
hunk ./bugs/issue865_replace_in_moved.sh 43
-ed file2 <<EOF
-2s/bb/beebee/
-w
-q
+cat <<EOF > file2
+aaaa
+beebee
+cc
+aa
+bb
+cc
 EOF
 
hunk ./bugs/issue865_replace_in_moved.sh 52
-! darcs replace bb beebee file2 2>&1 |
-tee /dev/tty |
-grep -q 'Skipping file'
-exit=$?
+darcs replace bb beebee file2 > out
+cat out
+grep 'Skipping file' out && exit 1
 
hunk ./bugs/issue865_replace_in_moved.sh 56
-cd .. && rm -rf temp
-
-exit $exit
+cd ..
+rm -rf temp
[first-stage fix for issue709.
David Roundy <[EMAIL PROTECTED]>**20080916170333
 Here I fix the bug which leads to a corrupt pending being left, with a
 rmfile change but no hunk removing the contents.  This doesn't fix
 issue709, since an incorrect pending is left, it's just no longer a
 corrupt pending (i.e. it's still got the rmfile, but if you record it
 there's no problem).
] hunk ./src/Darcs/Repository/Internal.lhs 113
                      patch2patchinfo, readPatch,
                      writePatch, effect, invert,
                      is_addfile, is_adddir,
-                     is_addrmfile, is_addrmdir, is_setpref,
+                     is_setpref,
                      apply, apply_to_slurpy,
                      empty_markedup_file, MarkedUpFile
                    )
hunk ./src/Darcs/Repository/Internal.lhs 474
           fromPrims_ = fromPrims
 
 is_simple :: Prim C(x y) -> Bool
-is_simple x = is_hunk x || is_binary x || is_setpref x ||
-              is_addrmfile x || is_addrmdir x
+is_simple x = is_hunk x || is_binary x || is_setpref x
 
 crude_sift :: FL Prim C(x y) -> FL Prim C(x y)
 crude_sift xs = if allFL is_simple xs then filterFL ishunkbinary xs else xs
hunk ./bugs/issue709_pending_look-for-adds.sh 3
 #!/bin/sh
 set -ve
+
+## I would use the builtin !, but that has the wrong semantics.
+not () { "$@" && exit 1 || :; }
+
 rm -rf temp1
 mkdir temp1
 cd temp1
hunk ./bugs/issue709_pending_look-for-adds.sh 11
 darcs init
+
+# Here we check whether recording just one of two --look-for-add
+# addfiles causes any trouble (which it doesn't)
+
+date > f1
+date > f2
+echo yyd | darcs record -l -m ff
+
+cat _darcs/patches/pending
+
+not darcs wh
+rm f2
+
+# Try recording a file add without --look-for-adds, with a setpref
+# patch present that we don't record.
+
 darcs setpref boringfile .boring
hunk ./bugs/issue709_pending_look-for-adds.sh 28
-echo bar > foo
-echo yyd | darcs record --look-for-adds -mP1
+
+echo bar > bar
+darcs add bar
+echo yyd | darcs record -mbar
+
+cat _darcs/patches/pending
+
 darcs whatsnew -s
hunk ./bugs/issue709_pending_look-for-adds.sh 36
+
 test -z "`darcs whatsnew -s`"
hunk ./bugs/issue709_pending_look-for-adds.sh 38
+
+# Now try the same thing using --look-for-adds
+
+echo foo > foo
+
+darcs wh -l
+
+echo yyd | darcs record --look-for-adds -mfoo
+
+cat _darcs/patches/pending
+
+darcs whatsnew -s
+
+test -z "`darcs whatsnew -s`"
+
+cd ..
+rm -rf temp1
[resolve issue709: avoid adding changes to pending in rmpend when possible.
David Roundy <[EMAIL PROTECTED]>**20080916173002] move ./bugs/issue709_pending_look-for-adds.sh ./tests/issue709_pending_look-for-adds.sh
hunk ./src/Darcs/Repository/Internal.lhs 75
 import Workaround ( createDirectoryIfMissing, getCurrentDirectory, renameFile, setExecutable )
 import FastPackedString ( PackedString, readFilePS, gzReadFilePS, nilPS, packString, takePS )
 import Darcs.Patch ( Patch, RealPatch, Effect, is_hunk, is_binary, description,
-                     try_to_shrink, commuteFL )
+                     try_to_shrink, commuteFL, commute )
 import Darcs.Patch.Prim ( try_shrinking_inverse, Conflict )
 import Darcs.Patch.Bundle ( scan_bundle, make_bundle )
 import Darcs.SlurpDirectory ( Slurpy, slurp_unboring, mmap_slurp, co_slurp,
hunk ./src/Darcs/Repository/Internal.lhs 133
                                 getCaches )
 import Darcs.Lock ( withLock, writeDocBinFile, withDelayedDir, removeFileMayNotExist,
                     withTempDir, withPermDir )
-import Darcs.Sealed ( Sealed(Sealed), mapSeal, seal, FlippedSeal(FlippedSeal), flipSeal )
+import Darcs.Sealed ( Sealed(Sealed), seal, FlippedSeal(FlippedSeal), flipSeal )
 import Darcs.Repository.InternalTypes( Repository(..), RepoType(..) )
 import Darcs.Global ( darcsdir )
 #include "impossible.h"
hunk ./src/Darcs/Repository/Internal.lhs 468
           rmpend NilFL x = Sealed x
           rmpend _ NilFL = Sealed NilFL
           rmpend (x:>:xs) xys | Just ys <- removeFL x xys = rmpend xs ys
-          rmpend (x:>:xs) ys = case commuteWhatWeCanFL (x:>xs) of
-                               a:>x':>b -> (invert (x':>:b) +>+) `mapSeal` rmpend a ys
+          rmpend (x:>:xs) ys =
+              case commuteWhatWeCanFL (x:>xs) of
+              a:>x':>b -> case rmpend a ys of
+                          Sealed ys' -> case commute (invert (x':>:b) :> ys') of
+                                        Just (ys'' :> _) -> seal ys''
+                                        Nothing -> seal $ invert (x':>:b)+>+ys'
+                                        -- DJR: I don't think this
+                                        -- last case should be
+                                        -- reached, but it also
+                                        -- shouldn't lead to
+                                        -- corruption.
           fromPrims_ :: FL Prim C(a b) -> Patch C(a b)
           fromPrims_ = fromPrims
 
[resolve issue885: fix patchSetToRepository to work with hashed.
David Roundy <[EMAIL PROTECTED]>**20080916173030] move ./bugs/issue885_get_to_match.sh ./tests/issue885_get_to_match.sh
hunk ./src/Darcs/Commands/Get.lhs 159
       debugMessage "Using economical get --to-match handling"
       fromrepo <- identifyRepositoryFor  repository repodir
       Sealed patches_to_get <- get_one_patchset fromrepo opts
-      patchSetToRepository patches_to_get opts
+      patchSetToRepository fromrepo patches_to_get opts
       debugMessage "Finished converting selected patch set to new repository"
     else copy_repo_and_go_to_chosen_version opts repodir rfsource rf putInfo
         where am_informative = not $ Quiet `elem` opts
hunk ./src/Darcs/Repository.lhs 237
 --   repository with the --to-match flag and the new repository is not in hashed format.
 --   This function does not (yet) work for hashed repositories. If the passed @[EMAIL PROTECTED] tell 
 --   darcs to create a hashed repository, this function will call @[EMAIL PROTECTED]
-patchSetToRepository :: RepoPatch p => PatchSet p C(x) -> [DarcsFlag] -> IO (Repository p C(r u t))
-patchSetToRepository patchset opts = do
+patchSetToRepository :: RepoPatch p => Repository p C(r1 u1 r1) -> PatchSet p C(x)
+                     -> [DarcsFlag] -> IO (Repository p C(r u t))
+patchSetToRepository (Repo fromrepo _ rf _) patchset opts = do
+    when (format_has HashedInventory rf) $ -- set up sources and all that
+       do writeFile "_darcs/tentative_pristine" "" -- this is hokey
+          repox <- writePatchSet patchset opts
+          HashedRepo.copy_repo repox opts fromrepo
     repo <- writePatchSet patchset opts
     read_repo repo >>= (apply_patches opts . reverseRL . concatRL)
     debugMessage "Writing the pristine"
[resolve issue1012: it seems to be fixed by the fix for issue709.
David Roundy <[EMAIL PROTECTED]>**20080916173116] move ./bugs/issue1012_unrecord_remove.sh ./tests/issue1012_unrecord_remove.sh
[remove now-unused is_addrmfile and is_addrmdir.
David Roundy <[EMAIL PROTECTED]>**20080916173136] hunk ./src/Darcs/Patch.lhs 56
                showContextPatch, showPatch, showNicely,
                infopatch, changepref,
                thing, things,
-               is_similar, is_addfile, is_addrmfile, is_hunk, is_setpref,
+               is_similar, is_addfile, is_hunk, is_setpref,
 #ifndef GADT_WITNESSES
                merger, is_merger, merge,
                commute, commutex, list_touched_files,
hunk ./src/Darcs/Patch.lhs 67
 #endif
                resolve_conflicts,
                Effect, effect,
-               is_binary, gzWritePatch, writePatch, is_adddir, is_addrmdir,
+               is_binary, gzWritePatch, writePatch, is_adddir,
                invert, invertFL, invertRL, identity,
                commuteFL, commuteRL,
                readPatch,
hunk ./src/Darcs/Patch.lhs 126
                           sort_coalesceFL,
                           rmdir, rmfile, tokreplace, adddir, addfile,
                           binary, changepref, hunk, move, 
-                          is_adddir, is_addrmdir, is_addfile, is_addrmfile,
+                          is_adddir, is_addfile,
                           is_hunk, is_binary, is_setpref,
                           is_similar,
                           try_to_shrink )
hunk ./src/Darcs/Patch/Prim.lhs 33
          formatFileName, FileNameFormat(..),
          adddir, addfile, binary, changepref,
          hunk, move, rmdir, rmfile, tokreplace,
-         is_addrmfile, is_addfile, is_hunk, is_binary, is_setpref,
-         is_similar, is_adddir, is_addrmdir, is_filepatch,
+         is_addfile, is_hunk, is_binary, is_setpref,
+         is_similar, is_adddir, is_filepatch,
          canonize, try_to_shrink, modernizePrim,
          subcommutes, sort_coalesceFL, join,
          applyBinary, try_tok_internal,
hunk ./src/Darcs/Patch/Prim.lhs 136
 is_adddir (DP _ AddDir) = True
 is_adddir _ = False
 
-is_addrmfile :: Prim C(x y) -> Bool
-is_addrmfile (FP _ AddFile) = True
-is_addrmfile (FP _ RmFile) = True
-is_addrmfile _ = False
-
-is_addrmdir :: Prim C(x y) -> Bool
-is_addrmdir (DP _ AddDir) = True
-is_addrmdir (DP _ RmDir) = True
-is_addrmdir _ = False
-
 is_hunk :: Prim C(x y) -> Bool
 is_hunk (FP _ (Hunk _ _ _)) = True
 is_hunk _ = False

Context:

[Make match.pl test understand Windows dates.
Eric Kow <[EMAIL PROTECTED]>**20080916011339
 Windows does not abbreviate its timezones.
] 
[Disable some tests that don't work under Windows.
Eric Kow <[EMAIL PROTECTED]>**20080916000912] 
[Translate get.pl test into shell.
Eric Kow <[EMAIL PROTECTED]>**20080916000227
 The original get.pl uses the Perl Cwd library, which seems not
 to work for purposes of this test under MSYS.
] 
[Resolve issue691: distinguish between NoArg and ReqArg in defaults parser.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080915224046] 
[Move get_default_flag type to definition.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080915220316] 
[reverse overly-invasive haddocking.
David Roundy <[EMAIL PROTECTED]>**20080915110353] 
[In darcs send if POST fails try sendmail.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914234314] 
[Grammar in Darcs.Commands.Send.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914232923] 
[Print "Successfully sent patch bundle to" only when we really sent something.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914232905] 
[Fix overzealous escaping in haddock.
Eric Kow <[EMAIL PROTECTED]>**20080915070926] 
[Haddock documentation for English.lhs
[EMAIL PROTECTED]
 Docstrings by Eric Kow
] 
[Haddock documentation for PrintPatch
[EMAIL PROTECTED] 
[Haddock documentation for Flags
[EMAIL PROTECTED] 
[Haddock documentation for Motd
[EMAIL PROTECTED]
 docstring by Eric Kow
] 
[Haddock string for TheCommands
[EMAIL PROTECTED]
 Docstring by Eric Kow
] 
[Run testing in temp directories to avoid collosions, fail if DarcsURL header is not found.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914223930] 
[Use tempfile() UNLINK option to automatically remove temp files at exit.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914223827] 
[Coding style in upload.cgi.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914223751] 
[Stop after we found the first DarcsURL: in patch bundle.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914220421] 
[Spaces in upload.cgi.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080914220324] 
[Really allow pull.sh test to pass on Windows.
Eric Kow <[EMAIL PROTECTED]>**20080914211458
 
 It seems that these redirections cause an openBinaryFile failure under
 Windows.  I do not yet understand why using different names makes a
 difference, but it could provide an interesting clue.
] 
[rewrite upload.cgi so it won't need any customization by default.
David Roundy <[EMAIL PROTECTED]>**20080913171447
 The downside is that it has to do a darcs get --lazy in order to check if
 the patch can be applied.  If you define $target_repo, however, it doesn't
 need to do this (but then can only accept patches to a single
 locally-present repo).
] 
[when _darcs/prefs/post is present, use _darcs/prefs/post for To: header.
David Roundy <[EMAIL PROTECTED]>**20080913171025] 
[sketchy documentation of _darcs/prefs/post
David Roundy <[EMAIL PROTECTED]>**20080913115655] 
[ChangeLog entries for darcs 2.0.3pre1
Eric Kow <[EMAIL PROTECTED]>**20080914094144] 
[Disable amend-cancelling test under Cygwin.
Eric Kow <[EMAIL PROTECTED]>**20080913213039] 
[Make binary.sh test more portable (avoid copying an exe).
Eric Kow <[EMAIL PROTECTED]>**20080913212843
 Under Windows, copying the exe file will result in an .exe extension
 being appended to the filename.  This confuses the test.
] 
[set default upload.cgi to work on darcs-unstable.
David Roundy <[EMAIL PROTECTED]>**20080913112227] 
[Improve upload.cgi.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912230953
 - check if patch is valid before sending
 - use sendmail to send patches or drop to maildir
] 
[Spaces and punctuation in upload.cgi.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912230827] 
[fix problem in Darcs.URL refactor pointed out by Eric.
David Roundy <[EMAIL PROTECTED]>**20080913104327] 
[Disable a pull.sh test under Windows.
Eric Kow <[EMAIL PROTECTED]>**20080912224027
 It relies on darcs not working if we chmod u-r a file.
 This seems to have little effect in Windows.
] 
[refactor Darcs.URL to eliminate use of Regexes.
David Roundy <[EMAIL PROTECTED]>**20080912173611
 The algorithms here are not tricky, and I find this easier to read.
] 
[change is_file to return false on [EMAIL PROTECTED]:
David Roundy <[EMAIL PROTECTED]>**20080912173501] 
[clean up whitespace.
David Roundy <[EMAIL PROTECTED]>**20080912150248] 
[fix manual for optional arguments.
David Roundy <[EMAIL PROTECTED]>**20080912150231] 
[clean up whitespace.
David Roundy <[EMAIL PROTECTED]>**20080912145708] 
[add test for new --output-auto-name feature.
David Roundy <[EMAIL PROTECTED]>**20080912145648] 
[Spaces in Darcs.Commands.Send module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912122223] 
[Make '--output-auto-name' accept optional directory argument.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912120516] 
[Add DarcsOptAbsPathOption for options with optional path argument.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912112458] 
[Refactor Darcs.Repository.Prefs.getCaches.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912055204] 
[Print warning when '--http-pipelining' option is used, but darcs is compiled without HTTP pipelining support.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912054253] 
[Do not download URL we have speculated before.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912053236] 
[Spaces and parentheses in URL module.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080912053000] 
[Coding style in Darcs.Arguments.network_options.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911140710] 
[Resolve issue1054: --no-cache option to ignore patch caches.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911140233] 
[Remove unused variable from configure.ac.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911132107] 
[Comment in configure.ac.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911115840] 
[Indentation fixes in configure.ac.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080911115117] 
[Formating and minor refactoring in URL.urlThread.
Dmitry Kurochkin <[EMAIL PROTECTED]>**20080910061227] 
[insecure printfs - fix the two that I can currently hit
Steve Cotton <[EMAIL PROTECTED]>**20080910230659] 
[TAG this version works.
David Roundy <[EMAIL PROTECTED]>**20080910212908] 
Patch bundle hash:
80573d015d495c0c6fed4517c30f9d6754620194
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to