soc progress 2
As for the last week… There have been some unexpected developments. The hashed-storage patches have started to trickle into mainline darcs instead of (as I have expected) sitting on my private branch for a while. This is partially due to my RM decision to try push for indexed whatsnew in darcs 2.3 (and Eric dutifully started to push patches into mainline, conjuring review coverage out of thin air…)
Either way, this has probably caused some intermittent breakage, although everything should be back on track with the latest patches. Also, due to some cabal vs ghc 6.8 vs process-1.0.1 bug, installing hashed-storage has caused problems for people on 6.8. Since that library is only required for the unit tests of hashed-storage, I have made this optional and people should be able to install hashed-storage 0.3.1 on 6.8 without much trouble (however, Hackage does not let me upload it right now, and I’m not sure why… I’ll try to resolve that ASAP).
Nevertheless, I am locally using darcs-hs with Record flipped over to use indexed diffing. This goes a long way to improve testing coverage of the index code, since almost everything in the testsuite relies on the record code (whereas the whatsnew code is only mildly tested). With the current versions of hashed-storage and darcs-hs, everything passes just fine, and most bugs I could find with previous incarnations are fixed (mostly pertaining to pending renames and to subtree queries). Unfortunately, doing a subtree query is for some reason relatively slow (although still reasonably faster than say darcs 2.2). I’ll look into that in the following week.
Moreover, I should start looking into getting us a new pristine format that I have promised in my application (the indexed working directory is, obviously, just a part of the whole deal).
In the last week, hashed-storage library has seen these changes:
- Properly decode whitespace when reading darcs hashed pristine.
- Provide unfoldPath to partially unfold a (stubbed) Tree.
- Use partial unfolding in TreeIO monad.
- Bump version to 0.3.
- Update cabal (description and category).
- Resolve conflict in Monad.
- Add haddock to TreeState.
- Resolve conflicts in the cabal file.
- Improve AnchoredPath API and haddocks.
- Do not build the unit tests by default (avoids dependency on new process lib).
- Bump version to 0.3.1.
- Extend the weird filenames part of the whatsnew test to cover indexed filenames.
- Run tests in groups even when only a part of the testsuite is being executed.
- Resolve issue1229: strictify checkPristineAgainstSlurpy.
- Resolve conflict with import list cleanup in Setup.lhs.
- Put back Setup into a Wall-clean state, robustify error conditions a little.
- Add comment explaining strictification of checkPristineAgainstSlurpy
- TreeIO is smart enough now to unfold as needed.
- Version the build dependency on hashed-storage.
- Fix the path restriction versus pending renames in unrecordedChanges.
- Factor out a separate boring_regexps in Darcs.Repository.Prefs.
- Provide a restrictBoring (like restrictSubpaths) in Darcs.Gorsvet.
- Fix Tree restriction in various cases of unrecordedChanges.
- Also invalidateIndex in Revert and Remove.
- Remove tentativelyMerge from Gorsvet, as it’s unused and confusing.
- Take a list of paths in unrecordedChanges instead of Tree transform.
- Drop extra parens.
- Fix witnesses in Darcs.Gorsvet.