summaryrefslogtreecommitdiff
path: root/Git/Tree.hs
Commit message (Collapse)AuthorAge
* more windows path fixesGravatar Joey Hess2016-05-04
| | | | | Let git-style filepaths be looked up in the removeset, even though windows-style filepaths are probably being fed into it.
* more windows path fixesGravatar Joey Hess2016-05-04
| | | | | beneathSubTree can be called with both windows-style and git-style paths, so needs to normalize to windows-style.
* avoid hardcoded slashes; broke on windowsGravatar Joey Hess2016-05-03
|
* fix build with ghc 7.6.3Gravatar Joey Hess2016-04-08
|
* grafting new items into existing treeGravatar Joey Hess2016-03-11
|
* refactorGravatar Joey Hess2016-03-11
|
* fixmeGravatar Joey Hess2016-03-11
|
* fix deletion of files in adjustTreeGravatar Joey Hess2016-03-11
|
* improve propigation of commits from adjusted branchesGravatar Joey Hess2016-03-11
| | | | | | | | | | | Only reverse adjust the changes in the commit, which means that adjustments do not need to be generally cleanly reversable. For example, an adjustment can unlock all locked files, but does not need to worry about files that were originally unlocked when reversing, because it will only ever be run on files that have been changed. So, it's ok if it locks all files when reversed, or even leaves all files as-is when reversed.
* indentGravatar Joey Hess2016-03-11
|
* allow adding new items via adjustTreeGravatar Joey Hess2016-03-11
|
* better encapsulationGravatar Joey Hess2016-02-23
|
* few strictness improvemnetsGravatar Joey Hess2016-02-23
|
* refactorGravatar Joey Hess2016-02-23
|
* add adjustTree (low-level) interface that avoids buffering much in memoryGravatar Joey Hess2016-02-23
| | | | | Using getTree and recordTree in my big repo takes 594 mb ram. Using adjustTree takes 73 mb.
* no streamingGravatar Joey Hess2016-02-23
| | | | | | | | | | | | | | | | | | | | extractTree has to parse the whole input list in order to generate a tree, so convert interface to non-streaming. Some quick memory benchmarks in a repo with 60k files don't look too bad despite not streaming. To stream, without building up a whole tree object, one way would be a new interface: adjustTree :: MonadIO m :: (TreeItem -> m (Maybe TreeItem)) -> Ref -> Repo -> m Sha This would only need to buffer tree objects from the current one down to the root, in order to update trees when a TreeItem is changed. But, while it supports changing items in the tree, and removing items, it does not support adding new items, or moving items from one directory to another.
* use getShaGravatar Joey Hess2016-02-23
|
* minor improvementsGravatar Joey Hess2016-02-23
|
* add mktree interfaceGravatar Joey Hess2016-02-23