Hi Tommy,
Here's a fix for the bug Zooko just hit. I've made it as a patch
to the stable repository so you can get it in quickly. I think
this might be worth putting into a "brown bag" release. (But wait
a bit to see if there's more breakage...)
David
Fri Jun 29 12:57:41 PDT 2007 David Roundy <[EMAIL PROTECTED]>
* fix for issue 490
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.
New patches:
[fix for issue 490
David Roundy <[EMAIL PROTECTED]>**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.
]
<
> {
hunk ./GNUmakefile 73
TouchesFiles.lhs Viewing.lhs \
MODULES_REPOSITORY:=\
+ ApplyPatches.lhs \
Checkpoint.lhs \
HashedRepo.lhs \
Format.lhs Internal.lhs \
hunk ./src/Darcs/Commands/Check.lhs 37
import Darcs.Hopefully ( actually )
import Darcs.Repository ( Repository, amInRepository, read_repo, identifyRepository )
import Darcs.Repository.Checkpoint ( get_checkpoint_by_default )
-import Darcs.Repository.DarcsRepo ( apply_patches_with_feedback, simple_feedback )
+import Darcs.Repository.ApplyPatches ( apply_patches_with_feedback, simple_feedback )
import Darcs.Repository.Pristine ( identifyPristine, checkPristine, slurpPristine )
import Darcs.Patch ( patch2patchinfo, showPatch )
import Darcs.Patch.Info ( human_friendly )
hunk ./src/Darcs/Commands/Get.lhs 45
format_has, format_has_together )
import Darcs.Repository.DarcsRepo ( lazily_read_repo, write_inventory,
absolute_dir,
- copy_repo_patches,
createPristineDirectoryTree,
hunk ./src/Darcs/Commands/Get.lhs 46
- apply_patches_with_feedback, simple_feedback,
slurp_all_but_darcs,
)
hunk ./src/Darcs/Commands/Get.lhs 48
+import Darcs.Repository ( copy_oldrepo_patches )
+import Darcs.Repository.ApplyPatches ( apply_patches_with_feedback, simple_feedback )
import Darcs.Repository.Checkpoint ( write_checkpoint_patch, get_checkpoint )
import Darcs.Patch ( apply, patch2patchinfo, invert, join_patches )
import Darcs.Patch.Info( human_friendly )
hunk ./src/Darcs/Commands/Get.lhs 276
putVerbose $ text "Getting the inventory..."
write_inventory "." patches
putVerbose $ text "Copying patches..."
- copy_repo_patches opts repodir "."
+ copy_oldrepo_patches opts repodir "."
putVerbose $ text "Patches copied"
local_patches <- lazily_read_repo "."
putVerbose $ text "Repo lazily read"
hunk ./src/Darcs/Commands/Repair.lhs 35
import Darcs.Hopefully ( actually )
import Darcs.Repository ( withRepoLock, amInRepository, unsafe_fast_read_repo )
import Darcs.Repository.Checkpoint ( get_checkpoint_by_default )
-import Darcs.Repository.DarcsRepo ( apply_patches_with_feedback, simple_feedback )
+import Darcs.Repository.ApplyPatches ( apply_patches_with_feedback, simple_feedback )
import Darcs.Repository.Pristine ( identifyPristine, checkPristine, replacePristine )
import Darcs.Patch.Depends ( get_patches_beyond_tag )
import Darcs.Lock( withTempDir )
hunk ./src/Darcs/Match.lhs 36
import Darcs.Patch ( Patch, invert, patch2patchinfo, apply )
import Darcs.Repository ( Repository, PatchSet, identifyRepository, read_repo,
slurp_recorded, createPristineDirectoryTree )
-import Darcs.Repository.DarcsRepo ( apply_patches )
+import Darcs.Repository.ApplyPatches ( apply_patches )
import Darcs.Patch.Depends ( get_patches_in_tag )
import Darcs.Patch.Depends ( get_patches_beyond_tag, )
hunk ./src/Darcs/Repository.lhs 36
#endif
tentativelyAddPatch, tentativelyRemovePatches, tentativelyAddToPending,
finalizeRepositoryChanges,
- copyRepository,
+ copyRepository, copy_oldrepo_patches,
unrevertUrl,
applyToWorking, applyToPristine, patchSetToPatches,
createPristineDirectoryTree,
hunk ./src/Darcs/Repository.lhs 78
import qualified Darcs.Repository.HashedRepo as HashedRepo
import qualified Darcs.Repository.GitRepo as GitRepo
-import Darcs.Repository.Checkpoint ( write_checkpoint_patch, get_checkpoint )
-import Darcs.Repository.DarcsRepo ( apply_patches_with_feedback, simple_feedback,
- add_to_tentative_pristine )
+import Darcs.Repository.Checkpoint ( identify_checkpoint, write_checkpoint_patch, get_checkpoint )
+import Darcs.Repository.ApplyPatches ( apply_patches_with_feedback, simple_feedback )
+import Darcs.Repository.DarcsRepo ( add_to_tentative_pristine )
import Darcs.Utils ( withCurrentDirectory )
import Darcs.Patch ( Patch, patch2patchinfo, gzReadPatchFileLazily,
apply,
hunk ./src/Darcs/Repository.lhs 130
_ | format_has_together [Darcs1_0,HashedInventory] rf &&
format_has_together [Darcs1_0,HashedInventory] rf2
-> do HashedRepo.copy_repo opts fromdir todir
- DarcsRepo.copy_repo_patches opts fromdir todir
+ copy_oldrepo_patches opts fromdir todir
_ | format_has HashedInventory rf ||
format_has HashedInventory rf2
-> undefined
hunk ./src/Darcs/Repository.lhs 134
- _ -> DarcsRepo.copy_repo_patches opts fromdir todir
+ _ -> copy_oldrepo_patches opts fromdir todir
+
+copy_oldrepo_patches :: [DarcsFlag] -> FilePath -> FilePath -> IO ()
+copy_oldrepo_patches opts dir out = do
+ patches <- DarcsRepo.read_repo "."
+ mpi <- if Partial `elem` opts
+ then identify_checkpoint opts dir -- FIXME this should get last pinfo *before*
+ -- desired tag...
+ else return Nothing
+ DarcsRepo.copy_patches opts dir out $ map fst $ since_checkpoint mpi $ concat patches
+ where --since_checkpoint :: Maybe PatchInfo
+ -- -> [(PatchInfo, Hopefully Patch)] -> [(PatchInfo, Hopefully Patch)]
+ since_checkpoint Nothing ps = ps
+ since_checkpoint (Just ch) ((pinfo, mp):ps)
+ | ch == pinfo = [(pinfo, mp)]
+ | otherwise = (pinfo, mp) : since_checkpoint (Just ch) ps
+ since_checkpoint _ [] = []
copyPartialRepository :: Repository -> IO PorNP
copyPartialRepository fromrepository@(Repo repodir opts _ _) = do
addfile ./src/Darcs/Repository/ApplyPatches.lhs
hunk ./src/Darcs/Repository/ApplyPatches.lhs 1
+% Copyright (C) 2002-2005,2007 David Roundy
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2, or (at your option)
+% any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
+
+\begin{code}
+module Darcs.Repository.ApplyPatches ( apply_patches_with_feedback,
+ apply_patches, simple_feedback
+ ) where
+
+import System.IO ( hFlush, stdout )
+import Control.Monad ( when )
+
+import Darcs.Patch ( Patch, apply )
+import Darcs.Hopefully ( Hopefully, hopefully )
+import Darcs.Patch.Info ( PatchInfo, human_friendly )
+import Darcs.Flags ( DarcsFlag(Verbose, Quiet) )
+import Printer ( text, (<+>), (<>), putDocLn, putDoc, Doc )
+
+apply_patches_with_feedback :: [DarcsFlag]
+ ->(Int -> Int -> PatchInfo -> IO())
+ -> (Doc -> IO ())
+ -> [(PatchInfo, Hopefully Patch)] -> IO ()
+apply_patches_with_feedback _ _ _ [] = return ()
+apply_patches_with_feedback opts feedback putInfo patches = do
+ apply_cautiously patches 1
+ where patch_count = length patches
+ apply_cautiously (hp@(pinfo, _) : more_patches) index =
+ do feedback index patch_count pinfo
+ apply opts (hopefully hp) `catch` \e ->
+ do putInfo $ text "Unapplicable patch:"
+ putInfo $ human_friendly pinfo
+ ioError e
+ apply_cautiously more_patches (index+1)
+ apply_cautiously [] _ = return ()
+
+apply_patches :: [DarcsFlag]
+ -> (Doc -> IO ()) -> (Doc -> IO ())
+ -> [(PatchInfo, Hopefully Patch)] -> IO ()
+apply_patches opts putVerbose putInfo patches =
+ apply_patches_with_feedback opts normalFeedback putInfo patches
+ where normalFeedback _ _ pinfo = putVerbose $ text "Applying patch" <+> human_friendly pinfo
+
+simple_feedback :: [DarcsFlag] -> String -> Int -> Int -> PatchInfo -> IO ()
+simple_feedback opts what index total pinfo =
+ if am_verbose
+ then putDocLn $ doing <+> q_patch <+> the index <+> q_of <+> the total
+ <> text ":" <+> human_friendly pinfo
+ else when am_informative $ do putDoc $ text "\r" <> doing <+> q_patch
+ <+> the index <+> q_of <+> the total
+ <> text "... "
+ hFlush stdout
+ when (index == total) $ putDocLn $ text "done."
+ where am_verbose = Verbose `elem` opts
+ am_informative = not $ Quiet `elem` opts
+ doing = text what
+ q_of = text "of"
+ q_patch = text "patch"
+ the i = text (show i)
+
+\end{code}
hunk ./src/Darcs/Repository/Checkpoint.lhs 25
\begin{code}
module Darcs.Repository.Checkpoint ( get_checkpoint, get_checkpoint_by_default,
+ identify_checkpoint,
write_checkpoint, write_recorded_checkpoint,
write_checkpoint_patch,
) where
hunk ./src/Darcs/Repository/Checkpoint.lhs 33
import System.Directory ( setCurrentDirectory )
import Workaround ( getCurrentDirectory, createDirectoryIfMissing )
import System.IO.Unsafe ( unsafeInterleaveIO )
-import Data.Maybe ( maybeToList )
+import Data.Maybe ( maybeToList, catMaybes )
import Darcs.Hopefully ( hopefully )
import FastPackedString ( PackedString, packString, nullPS )
hunk ./src/Darcs/Repository/Checkpoint.lhs 49
import Darcs.Repository.Internal
( Repository, identifyRepository, read_repo, slurp_recorded,
absolute_dir, withRecorded )
-import Darcs.Repository.DarcsRepo ( apply_patches )
+import Darcs.Repository.ApplyPatches ( apply_patches )
import Darcs.Patch.Info ( PatchInfo, make_filename, readPatchInfo,
showPatchInfo
)
hunk ./src/Darcs/Repository/Checkpoint.lhs 98
then return Nothing
else get_check_internal opts r
-get_check_internal :: [DarcsFlag] -> String -> IO (Maybe Patch)
-get_check_internal opts r = do
- pis <- (map fst . concat) `fmap` (identifyRepository opts r >>= read_repo)
+identify_checkpoint :: [DarcsFlag] -> String -> IO (Maybe PatchInfo)
+identify_checkpoint opts r = do
+ pis <- (map fst . catMaybes . map (safehead.reverse))
+ `fmap` (identifyRepository opts r >>= read_repo)
pistr <- fetchFilePS (r++"/_darcs/checkpoints/inventory") Uncachable
`catchall` (return $ packString "")
hunk ./src/Darcs/Repository/Checkpoint.lhs 104
- case filter (`elem` pis) $ reverse $ read_patch_ids pistr of
- [] -> return Nothing
- (pinfo:_) -> ((fst `fmap`). readPatch) `fmap`
+ return $ safehead $ filter (`elem` pis) $ reverse $ read_patch_ids pistr
+ where safehead (x:_) = Just x
+ safehead [] = Nothing
+
+get_check_internal :: [DarcsFlag] -> String -> IO (Maybe Patch)
+get_check_internal opts r = do
+ mc <- identify_checkpoint opts r
+ case mc of
+ Nothing -> return Nothing
+ Just pinfo -> ((fst `fmap`). readPatch) `fmap`
gzFetchFilePS
(r++"/_darcs/checkpoints/"++make_filename pinfo) Cachable
hunk ./src/Darcs/Repository/Checkpoint.lhs 181
\end{comment}
-
hunk ./src/Darcs/Repository/DarcsRepo.lhs 60
revert_tentative_changes,
read_repo,
lazily_read_repo, sync_repo,
- copy_repo_patches,
+ copy_patches,
absolute_dir,
hunk ./src/Darcs/Repository/DarcsRepo.lhs 62
- apply_patches,
- apply_patches_with_feedback,
- simple_feedback,
) where
import Darcs.Bug ( bugDoc )
hunk ./src/Darcs/Repository/DarcsRepo.lhs 68
import System.Directory ( doesDirectoryExist )
import Workaround ( getCurrentDirectory, renameFile, createDirectoryIfMissing )
import Darcs.Utils ( withCurrentDirectory, clarify_errors )
-import System.IO ( hPutStrLn, stderr, hFlush, stdout )
+import System.IO ( hPutStrLn, stderr )
import System.IO.Unsafe ( unsafeInterleaveIO )
import Control.Monad ( liftM, when, unless )
import Data.Maybe ( isNothing, mapMaybe )
hunk ./src/Darcs/Repository/DarcsRepo.lhs 72
-import Darcs.Hopefully ( Hopefully, hopefully, actually, unavailable )
+import Darcs.Hopefully ( Hopefully, actually, unavailable )
import Darcs.SignalHandler ( withSignalsBlocked )
import FastPackedString ( PackedString, packString, gzReadFilePS,
readFilePS, writeFilePS,
hunk ./src/Darcs/Repository/DarcsRepo.lhs 82
slurp, slurp_remove
)
import Darcs.Patch ( Patch, is_null_patch, invert, patch2patchinfo,
- apply_to_slurpy, apply, try_to_shrink,
+ apply_to_slurpy, try_to_shrink,
flatten_to_primitives, join_patches, flatten,
is_addfile, is_adddir,
is_hunk, is_binary, merger_equivalent, commute,
hunk ./src/Darcs/Repository/DarcsRepo.lhs 90
writePatch, gzWritePatch, showPatch,
really_eq_patches
)
-import Darcs.Patch.Info ( PatchInfo, make_filename, readPatchInfo,
- human_friendly, showPatchInfo,
- )
+import Darcs.Patch.Info ( PatchInfo, make_filename, readPatchInfo, showPatchInfo )
import Darcs.Patch.Set ( PatchSet )
import Darcs.Patch.Depends ( is_tag )
import Darcs.External ( gzFetchFilePS, fetchFilePS, copyFilesOrUrls, Cachable(..),
hunk ./src/Darcs/Repository/DarcsRepo.lhs 96
clonePartialsTree )
import Darcs.Lock ( writeBinFile, writeDocBinFile, appendDocBinFile, appendBinFile )
-import Darcs.Flags ( DarcsFlag(NoCompress,
- Partial, Verbose, Quiet) )
+import Darcs.Flags ( DarcsFlag( NoCompress ) )
import Darcs.Patch.Depends ( slightly_optimize_patchset, deep_optimize_patchset, commute_to_end,
get_patches_beyond_tag )
import Darcs.Repository.Pristine ( Pristine, identifyPristine, syncPristine,
hunk ./src/Darcs/Repository/DarcsRepo.lhs 104
easyCreatePartialsPristineDirectoryTree,
applyPristine,
)
+import Darcs.Repository.ApplyPatches ( apply_patches )
import FileName ( fp2fn )
import Darcs.Utils ( catchall )
import Darcs.URL (is_ssh_nopath )
hunk ./src/Darcs/Repository/DarcsRepo.lhs 108
-import Printer ( text, (<+>), (<>), putDocLn, putDoc, Doc, ($$), empty )
+import Printer ( text, (<+>), (<>), Doc, ($$), empty )
#include "impossible.h"
\end{code}
hunk ./src/Darcs/Repository/DarcsRepo.lhs 342
\end{code}
\begin{code}
-copy_repo_patches :: [DarcsFlag] -> FilePath -> FilePath -> IO ()
-copy_repo_patches opts dir out = do
+copy_patches :: [DarcsFlag] -> FilePath -> FilePath -> [PatchInfo] -> IO ()
+copy_patches opts dir out patches = do
realdir <- absolute_dir dir
hunk ./src/Darcs/Repository/DarcsRepo.lhs 345
- patches <- read_repo "."
- mpi <- if Partial `elem` opts
- then do cps <- read_checkpoints realdir
- case cps of
- [] -> return Nothing
- ((pinfo,_):_) -> return $ Just pinfo
- -- FIXME above should get last pinfo *before* desired
- -- tag...
- else return Nothing
- pns <- return $ map (make_filename . fst) $
- since_checkpoint mpi $ concat patches
- copyFilesOrUrls
- opts
- (realdir++"/_darcs/patches") pns (out++"/_darcs/patches") Cachable
-
-since_checkpoint :: Maybe PatchInfo
- -> [(PatchInfo, Hopefully Patch)] -> [(PatchInfo, Hopefully Patch)]
-since_checkpoint Nothing ps = ps
-since_checkpoint (Just ch) ((pinfo, mp):ps)
- | ch == pinfo = [(pinfo, mp)]
- | otherwise = (pinfo, mp) : since_checkpoint (Just ch) ps
-since_checkpoint _ [] = []
+ copyFilesOrUrls opts (realdir++"/_darcs/patches") (map make_filename patches)
+ (out++"/_darcs/patches") Cachable
read_repo :: String -> IO PatchSet
read_repo d = do
hunk ./src/Darcs/Repository/DarcsRepo.lhs 462
provides a data structure which contains a history of \emph{all} the
revisions ever made on a given file.
-\begin{code}
-apply_patches_with_feedback :: [DarcsFlag]
- ->(Int -> Int -> PatchInfo -> IO())
- -> (Doc -> IO ())
- -> [(PatchInfo, Hopefully Patch)] -> IO ()
-apply_patches_with_feedback _ _ _ [] = return ()
-apply_patches_with_feedback opts feedback putInfo patches = do
- apply_cautiously patches 1
- where patch_count = length patches
- apply_cautiously (hp@(pinfo, _) : more_patches) index =
- do feedback index patch_count pinfo
- apply opts (hopefully hp) `catch` \e ->
- do putInfo $ text "Unapplicable patch:"
- putInfo $ human_friendly pinfo
- ioError e
- apply_cautiously more_patches (index+1)
- apply_cautiously [] _ = return ()
-
-apply_patches :: [DarcsFlag]
- -> (Doc -> IO ()) -> (Doc -> IO ())
- -> [(PatchInfo, Hopefully Patch)] -> IO ()
-apply_patches opts putVerbose putInfo patches =
- apply_patches_with_feedback opts normalFeedback putInfo patches
- where normalFeedback _ _ pinfo = putVerbose $ text "Applying patch" <+> human_friendly pinfo
-
-simple_feedback :: [DarcsFlag] -> String -> Int -> Int -> PatchInfo -> IO ()
-simple_feedback opts what index total pinfo =
- if am_verbose
- then putDocLn $ doing <+> q_patch <+> the index <+> q_of <+> the total
- <> text ":" <+> human_friendly pinfo
- else when am_informative $ do putDoc $ text "\r" <> doing <+> q_patch
- <+> the index <+> q_of <+> the total
- <> text "... "
- hFlush stdout
- when (index == total) $ putDocLn $ text "done."
- where am_verbose = Verbose `elem` opts
- am_informative = not $ Quiet `elem` opts
- doing = text what
- q_of = text "of"
- q_patch = text "patch"
- the i = text (show i)
-
-\end{code}
-
\end{comment}
hunk ./src/Darcs/Repository/Internal.lhs 64
import Darcs.SlurpDirectory ( Slurpy, slurp_unboring, mmap_slurp, co_slurp,
slurp_has )
import Darcs.Hopefully ( Hopefully, hopefully, hopefully2either )
-import Darcs.Repository.DarcsRepo ( finalize_pristine_changes,
- apply_patches, lazily_read_repo,
- add_to_tentative_pristine )
+import Darcs.Repository.DarcsRepo ( finalize_pristine_changes, lazily_read_repo,
+ add_to_tentative_pristine )
+import Darcs.Repository.ApplyPatches ( apply_patches )
import Darcs.Repository.HashedRepo ( writeHashFile )
import qualified Darcs.Repository.HashedRepo as HashedRepo
( revert_tentative_changes, finalize_tentative_changes,
}
Context:
[In tests, don't assume grep has -q and -x flags.
Dave Love <[EMAIL PROTECTED]>**20070225114022]
[Add send --output-auto-name information to the documentation.
Zachary P. Landau <[EMAIL PROTECTED]>**20070221014555]
[Add test for send --output-auto-name.
Zachary P. Landau <[EMAIL PROTECTED]>**20070221014501]
[Add --output-auto-name option to Send.
Zachary P. Landau <[EMAIL PROTECTED]>**20070221014327]
[add test to trigger yet another buggy case.
David Roundy <[EMAIL PROTECTED]>**20070422152651]
[check for gzopen directly in zlib
[EMAIL PROTECTED]
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 <[EMAIL PROTECTED]>**20070520054713]
[Use System.Process under Unix.
Eric Kow <[EMAIL PROTECTED]>**20070426194615]
[Remove conflictors unit tests.
Eric Kow <[EMAIL PROTECTED]>**20070513063537]
[Complete conflictors code removal.
Eric Kow <[EMAIL PROTECTED]>**20070513061545
Remove submerge_in_dir function, apparantly only used by the conflictors
code.
]
[remove unneeded (and unsafe) export from Patch.
David Roundy <[EMAIL PROTECTED]>**20070511005356]
[remove (unused) conflictor code
David Roundy <[EMAIL PROTECTED]>**20070511003956]
[Fix makefile conflict.
Eric Kow <[EMAIL PROTECTED]>**20070512194803]
[fix path to completion scripts
Peter Simons <[EMAIL PROTECTED]>**20070511033227]
[Support makefile docdir/datarootdir variables.
Dave Love <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070505140749]
[Added prehooks
Jason Dagit <[EMAIL PROTECTED]>**20070505202210]
[Use system for calling interactive cmds in Windows instead of rawSystem.
Eric Kow <[EMAIL PROTECTED]>**20070415132608
This lets us support switches, for example, in DARCS_EDITOR.
]
[Fix test/ssh.sh conflicts.
Eric Kow <[EMAIL PROTECTED]>**20070311205156]
[fix test_scripts bug pointed out by Eric.
David Roundy <[EMAIL PROTECTED]>**20070421213635]
[remove unused export from RepoFormat.
David Roundy <[EMAIL PROTECTED]>**20070414174933]
[Modernise imports of Foreign.Ptr.
Eric Kow <[EMAIL PROTECTED]>**20070407102536]
[Make record_editor.pl test work under Windows.
Eric Kow <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070415114122
Fixed test count mismatch, and recovery of absolute path under msys.
]
[Move packaging related stuff to its own directory (release).
Eric Kow <[EMAIL PROTECTED]>**20070401071845]
[Move extras to their own directory (tools).
Eric Kow <[EMAIL PROTECTED]>**20070401071734
Shell completion scripts, cgi.
]
[fix bug Eric pointed out (which has also now bitten me).
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070331194046
...due to sloppy scripting during the hierarchical shakeup.
]
[whitespace cleanups in makefile.
David Roundy <[EMAIL PROTECTED]>**20070330152018]
[fail on error in get_patches_beyond_tag.
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070313210908]
[Modernise imports of Control.Monad.
Eric Kow <[EMAIL PROTECTED]>**20070313205312]
[In tests, don't assume diff has -u, -x flags.
Dave Love <[EMAIL PROTECTED]>**20070305202838]
[Fixes for Solaris sh in tests: no $(...), test -e, or ! pipelines.
Dave Love <[EMAIL PROTECTED]>**20070311170210]
[Add changelog entries (file: quick) for pull --complement changes.
Kevin Quick <[EMAIL PROTECTED]>**20070205185329]
[Fix bash-ism `export foo=' in tests.
Dave Love <[EMAIL PROTECTED]>**20070225113216]
[More sed compliance on pull_compl test.
Eric Kow <[EMAIL PROTECTED]>**20070217073744]
[Fix pull_compl test sed compliance.
Kevin Quick <[EMAIL PROTECTED]>**20070214033347]
[Add pull_compl test; note interesting duplicate repo elimination in docs.
Kevin Quick <[EMAIL PROTECTED]>**20070206065236]
[Include src/Darcs/Patch in makefile's SRC_DIRS.
Dave Love <[EMAIL PROTECTED]>**20070415215139]
[Re-fix MAKEMANUAL.
Dave Love <[EMAIL PROTECTED]>**20070415122733]
[Fix MAKEMANUAL conflict.
Eric Kow <[EMAIL PROTECTED]>**20070413231608]
[Fix MAKEMANUAL make target.
Dave Love <[EMAIL PROTECTED]>**20070410192153]
[Move documentation to its own directory (doc).
Eric Kow <[EMAIL PROTECTED]>**20070401071635]
[fix bug in makefile regarding manual.
David Roundy <[EMAIL PROTECTED]>**20070330154259]
[Correct compilation errors in win32 due to src reorganisation.
Eric Kow <[EMAIL PROTECTED]>**20070313210732]
[Move osx directory to src.
Eric Kow <[EMAIL PROTECTED]>**20070313200304]
[Extend GHCFLAGS override mechanism to allow for subdirectories.
Eric Kow <[EMAIL PROTECTED]>**20070313193917]
[Fix manual compilation errors (due to source reorganisation).
Eric Kow <[EMAIL PROTECTED]>**20070313214302]
[Resolve Makefile conflict.
Eric Kow <[EMAIL PROTECTED]>**20070413231906]
[Fix conflicts; adapt QueryTag to new hierarchical structure.
Eric Kow <[EMAIL PROTECTED]>**20070331191925]
[Fix applyToWorking conflicts.
Eric Kow <[EMAIL PROTECTED]>**20070422060319
Was recorded against darcs stable post 1.0.9rc2.
]
[add support for partial and lazy downloading of hashed repos.
David Roundy <[EMAIL PROTECTED]>**20070405000616]
[add framework for lazily fetching hash files.
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070329010828]
[fix checkpoint handling with hashed inventories.
David Roundy <[EMAIL PROTECTED]>**20070330154325]
[Modernise imports of Data.(Char|Int|List|Maybe).
Eric Kow <[EMAIL PROTECTED]>**20070313210805]
[Modernise imports of System.Directory.
Eric Kow <[EMAIL PROTECTED]>**20070313205200]
[Move Haskell sources to src directory with hierarchical structure.
Eric Kow <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070313200135]
[Add subdirectories for source files.
Eric Kow <[EMAIL PROTECTED]>**20070313194050]
[Fix conflicts related to --ssh-cm flag.
Eric Kow <[EMAIL PROTECTED]>**20070311205820]
[change "current" to (or add) "pristine" in verbose message and doc
Tommy Pettersson <[EMAIL PROTECTED]>**20070211191942]
[Resolve conflict between complement add and get_recorded_unsorted.
Kevin Quick <[EMAIL PROTECTED]>**20070206071832]
[Added --complement to pull to allow "exclusion" repos
Kevin Quick <[EMAIL PROTECTED]>**20070204181301]
[refactor get_unrecorded.
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070128165840
They where left out in the opts Repository refactoring.
]
[fix bug triggered in replace.sh
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070128000728]
[add test for replace that messes with unrecorded hunks
Tommy Pettersson <[EMAIL PROTECTED]>**20070125153803]
[go back to using system for edit_file/view_file instead of exec (system 'cmd "$ARG"')
Benedikt Schmidt <[EMAIL PROTECTED]>**20070131162811]
[use TODO instead of pass for record_editor test
Benedikt Schmidt <[EMAIL PROTECTED]>**20070131161635]
[add some tests for edit_file and DARCS_EDITOR handling
Benedikt Schmidt <[EMAIL PROTECTED]>**20070131011526]
[Remove extraneous parentheses (RepoFormat).
Eric Kow <[EMAIL PROTECTED]>**20070127231359]
[make write_repo_format agree with read_repo_format (use | for separating properties)
Benedikt Schmidt <[EMAIL PROTECTED]>**20070126143752]
[Remove unused functions from Population.
Eric Kow <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**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
[EMAIL PROTECTED]
]
[Resolve conflicts in David's hashed_inventory optimize patches.
Eric Kow <[EMAIL PROTECTED]>**20061217031027
]
[Make hashed inventories support optimize and reordering.
David Roundy <[EMAIL PROTECTED]>**20061216193913]
[fix issue360, with darcs mv foo foo.
David Roundy <[EMAIL PROTECTED]>**20061217212340]
[Prettify exceptions in identifyRepository.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20061218025453]
[QP-encode bundles when putting to a remote repo.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20061218003034]
[fix pending bug in darcs get --tag.
David Roundy <[EMAIL PROTECTED]>**20061217225256
This patch addresses the bug displayed in Tommy's test:
Mon Dec 11 20:28:21 CET 2006 Tommy Pettersson <[EMAIL PROTECTED]>
* add test for get --tag and pending
]
[Separate comment from OPTIONS pragma for GHC 6.4 compatibility.
Eric Kow <[EMAIL PROTECTED]>**20061217041212
]
[make optimize less DarcsRepo-specific.
David Roundy <[EMAIL PROTECTED]>**20061209205755]
[fix bug in haskell_policy check for HopefullyPrivate.
David Roundy <[EMAIL PROTECTED]>**20061210234453
Perhaps with this test, we can rename it to CertainlyPrivate? :)
]
[don't use HopefullyPrivate outside of Hopefully.
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20061210211846]
[fix pending bug that broke several_commands.sh.
David Roundy <[EMAIL PROTECTED]>**20061209223916]
[eliminate DarcsRepo.am_in_repo.
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20061204020823]
[make get and put reuse initialize code.
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20061203211141]
[add some more hashed_inventory.sh tests.
David Roundy <[EMAIL PROTECTED]>**20061203173207]
[fix more incompatible uses of DarcsRepo.
David Roundy <[EMAIL PROTECTED]>**20061203064355]
[make replace work with hashed inventories.
David Roundy <[EMAIL PROTECTED]>**20061203055452]
[Make get_tag test work with hashed inventories.
David Roundy <[EMAIL PROTECTED]>**20061203055019]
[make directory_confusion pass with hashed inventories.
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20061108033202
Fixes test suite failure for annotate on a repository with hashed inventory.
]
[resolve conflicts
Tommy Pettersson <[EMAIL PROTECTED]>**20061117222757
between 'clean up unrevert and pending handling'
and 'ignore failure from hSetBufferin'
]
[Resolve conflict in Resolution.lhs.
Eric Kow <[EMAIL PROTECTED]>**20061113032236
]
[fix new get to not mess up pending (fixes latest hashed_inventory.sh tests).
David Roundy <[EMAIL PROTECTED]>**20061203173722]
[External resolution can resolve conflicting adds
[EMAIL PROTECTED]
[Only copy files needed in external_resolution
[EMAIL PROTECTED]
[change message in 'darcs check' from "applying" to "checking" (issue147)
Tommy Pettersson <[EMAIL PROTECTED]>**20061111154259]
[make Get work with hashed inventory.
David Roundy <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20060927024505]
[put Repository in Show class for debugging ease.
David Roundy <[EMAIL PROTECTED]>**20060927021202]
[add a bit of hashed inventory code.
David Roundy <[EMAIL PROTECTED]>**20060918173904]
[Added --store-in-memory option for diff
[EMAIL PROTECTED]
]
[make darcs check use Repository framework.
David Roundy <[EMAIL PROTECTED]>**20060927024514]
[resolve conflicts
Tommy Pettersson <[EMAIL PROTECTED]>**20061102184834
Merge Unrecord fix for checkpoints inventory with Repository code refactoring.
]
[Move RawMode into DarcsUtils to break cyclic imports on Win32
Josef Svenningsson <[EMAIL PROTECTED]>**20061004120024]
[remove duplicate file names in fix_filepaths (fixes issue273)
Tommy Pettersson <[EMAIL PROTECTED]>**20060929145335]
[add test for replace command with duplicated file name
Tommy Pettersson <[EMAIL PROTECTED]>**20060929144008]
[Move bug reporting code to its own module.
Eric Kow <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20060917214136]
[Fix merge conflicts.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060906191317]
[fix bug in pristine handling when dealing with multiple patches.
David Roundy <[EMAIL PROTECTED]>**20060731111404]
[fix ordering of operations to call pull_first_middles properly.
David Roundy <[EMAIL PROTECTED]>**20060730111409]
[fix bug in refactoring of get.
David Roundy <[EMAIL PROTECTED]>**20060726121655]
[refactor Population.
David Roundy <[EMAIL PROTECTED]>**20060716034837]
[add TODO for refactoring get_markedup_file.
David Roundy <[EMAIL PROTECTED]>**20060716034339]
[partial refactoring in annotate.
David Roundy <[EMAIL PROTECTED]>**20060716034319]
[don't use DarcsRepo in list_authors.
David Roundy <[EMAIL PROTECTED]>**20060716033450]
[I've now eliminated need to export DarcsRepo.write_patch.
David Roundy <[EMAIL PROTECTED]>**20060716033109]
[partially refactor Optimize.
David Roundy <[EMAIL PROTECTED]>**20060716032934]
[partial refactoring of Get.
David Roundy <[EMAIL PROTECTED]>**20060716031605]
[refactor amend-record.
David Roundy <[EMAIL PROTECTED]>**20060716021003]
[add TODO to refactor unrevert handling.
David Roundy <[EMAIL PROTECTED]>**20060716020247]
[refactor Unrecord, adding tentativelyRemovePatches.
David Roundy <[EMAIL PROTECTED]>**20060716015150]
[refactor tag.
David Roundy <[EMAIL PROTECTED]>**20060716011853]
[refactor Repository to allow truly atomic updates.
David Roundy <[EMAIL PROTECTED]>**20060716011245]
[Be explicit about timezone handling (issue220); assume local by default.
Eric Kow <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20060610193049
]
[add right-arrow with new name desired by new latex2html.
[EMAIL PROTECTED]
[change wiki links on webpage to wiki.darcs.net
Tommy Pettersson <[EMAIL PROTECTED]>**20070617095655]
[bump version to 1.1.0pre1
Tommy Pettersson <[EMAIL PROTECTED]>**20070616202236]
[TAG darcs-unstable-20060831
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060831191554]
[Test pull.pl, CREATE_DIR_ERROR: removed TODO now that directory name is printed in error message
Marnix Klooster <[EMAIL PROTECTED]>**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 <[EMAIL PROTECTED]>**20070603213706]
Patch bundle hash:
efe0e74e5a934ce437b5484b02784c1bd704f26e
_______________________________________________
darcs-devel mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-devel