add git ls-tree --long parser
Not yet used, but allows getting the size of items in the tree fairly cheaply. I noticed that CmdLine.Seek uses ls-tree and the feeds the files into another long-running process to check their size. That would be an example of a place that might be sped up by using this. Although in that particular case, it only needs to know the size of unlocked files, not locked. And since enabling --long probably doubles the ls-tree runtime or more, the overhead of using it there may outwweigh the benefit.
This commit is contained in:
parent
d89a9b0f78
commit
a8b837aaef
13 changed files with 97 additions and 56 deletions
|
@ -204,5 +204,5 @@ getExportExcluded u = do
|
|||
exportExcludedParser :: L.ByteString -> [Git.Tree.TreeItem]
|
||||
exportExcludedParser = map Git.Tree.lsTreeItemToTreeItem
|
||||
. rights
|
||||
. map Git.LsTree.parseLsTree
|
||||
. map (Git.LsTree.parseLsTree (Git.LsTree.LsTreeLong False))
|
||||
. L.split (fromIntegral $ ord '\n')
|
||||
|
|
|
@ -97,6 +97,7 @@ withKnownUrls a = do
|
|||
Annex.Branch.commit =<< Annex.Branch.commitMessage
|
||||
(l, cleanup) <- inRepo $ Git.LsTree.lsTree
|
||||
Git.LsTree.LsTreeRecursive
|
||||
(Git.LsTree.LsTreeLong False)
|
||||
Annex.Branch.fullname
|
||||
g <- Annex.gitRepo
|
||||
let want = urlLogFileKey . getTopFilePath . Git.LsTree.file
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue