Changelog for filestore-

Version released 26 Sep 2010 * runShellCommand: reverted to older version with temp files. The new version caused lazy-IO related problems with large files. Thanks to Pavel Perikov diagnosing the problem. Version released 03 Aug 2010 * gitInit: Set up repository to allow push to the current branch. This is needed for recent versions of git, which don't allow a push to the master branch. Resolves Issue #104. * New version of runShellCommand that does not require temp files, using runInteractiveProcess. * Suppress "unused do bind" warnings in build. Version released 22 Jan 2010 * Rewrote splitEmailAuthor with list fns not regexes. Also removed regex-posix from cabal build-depends. * Corrected error message for richDirectory * Improved git search: + Previously git search would fail in some cases, with an error in parseMatchLine (for example, with unicode search term). + We replaced the regex with a simpler match-line parser using Preface functions. + We also now use --null to force a NUL separator in git grep. + The test case that previously failed now passes. Version 0.3.4 released 10 Dec 2009 * Added Mercurial module and associated tests. Thanks to John Lenz for the patch. * Added test case for nonascii directory name * gitLatestRevId - added check to make sure resource hasn't been removed. Without this, you get a ResourceExists error when creating a file that has been previously deleted from the repo. * Use -z with git ls-tree. This resolves Issue #77. When 'git ls-tree' is used with -z, it prints regular UTF8 instead of octal encoding it. So we can avoid the problem we were having with filenames like Foo\230\331/Bar. * Use -z for 'git whatchanged'. This allows us to remove the kludgy 'convertEncoded' function, which parsed encoded filenames. Version released 22 Nov 2009 * Raise an IllegalResourceName error if the user tries to delete a file inside .git or _darcs subdirectory. * Have gitSearch return no matches, instead of raising an error, if error status = 1. Recent versions of git-grep return 1 if no matches found. * Fix git log parsing so that it allows log comments to start with ':' Thanks to thorben for uncovering the bug. Version 0.3.3 released 06 Nov 2009 * isInsideDir is again exported. Version released 06 Nov 2009 * Raise an IllegalResourceName error if the user tries to create a file inside the .git or _darcs subdirectory. Previously the file would be written (or overwritten) before the error was caught in the add/commit phase. This introduced the risk of corrupting the repository or, worse, overwriting hooks. * isInsideDir is no longer exported. * checkAndWriteFile has been replaced with withSanityCheck, to avoid code duplication between create and rename functions. Version released 24 Oct 2009 * Convert pathname to UTF8 in withVerifyDir. Version 0.3.2 released 22 Aug 2009 * Made maxcount default to True, as '--max-count' is supported by the latest released version of darcs (2.3.0). Print an informative error message if the version of darcs being used does not support --max-count. * Made 'initialize' throw RepoExists error only if the repo exists; catch permission or other errors separately. (Thomas Hartmann) * Made 'index' throw an error if the directory is not present or there are insufficient permissions. (Thomas Hartmann) * Improved error message for search match helper. Version 0.3.1 released 04 Jul 2009 * Added -I flag to grep in regSearchFiles. Ignore binary files in the repository when searching. * Added maxcount Cabal flag, defaulting to False. When true, this flag causes 'latest' to run 'darcs changes' with the flag '--max-count=1', which dramatically increases performance. (Without this, filestore has to retrieve the entire changelog just to get the latest revision ID.) '--max-count' is at this point only in development versions of darcs. * Removed quoting from --match=hash in Darcs module (since it doesn't go through /bin/sh). Thanks to Ganesh Sittampalam. * Efficiency improvements and refactoring in Darcs module. * Moved darcs utility functions to Util module. Version 0.3 released 08 Apr 2009 * Added new 'directory' function, which returns a list of resources given a directory name. Resources are marked as either FSFile or FSDirectory. Thanks to Thomas Hartman for showing the need for 'directory', and for distinguishing explicitly between files and directories. In 'index' the distinction was previously left implicit, which worked for git but not darcs: 'index' provided no way of distinguishing an empty directory from a file. * In 'directory' and 'index', git ls-tree is used instead of git ls-files; this guarantees that only files that have been committed are returned. 'index' now lists only files, and no longer includes empty directories even in darcs. * Added new richDirectory function to Data.FileStore.Generic. richDirectory returns a directory that includes information about the latest revision of each file. Thanks to Thomas Hartman for the patch. * Replaced ResourceName type with FilePath. * Added repository information to cabal file. Version 0.2 released 08 Feb 2009 * Changed diff to do a line-by-line rather than word-by-word diff. The word-by-word diff led to excessive memory usage and confusing output in some cases. NOTE: diff now returns lists of lines, not including newlines. So calling programs may need to be changed. diff also now skips calling getGroupedDiff when the left document is empty, for better performance. * Added ghc-prof-options to cabal file. * Clean up code in gitRetrieve. * Added ensureFileExists to Darcs module. Added checks to ensure that file exists in darcsLatestRevId and darcsRetrieve. If not, return NotFound. * gitRetrieve: check to make sure object is a file before retrieving. Also, if Nothing is the revision ID, use gitLatestRevId rather than going directly to the file system. This is a step in the direction of making filestore compatible with bare repositories. * Test suite has been wired into Setup.lhs: 'cabal test' now runs tests. * Added new test case for attempting to retrieve a subdirectory, and for creating a second file in a subdirectory. * Minor code cleanup. * Added CHANGES. Version 0.1 released 24 Jan 2009 * Initial release.