summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-07-06 14:21:43 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-07-06 14:21:43 -0400
commit620118676391dbd0b296db4d4bf28574c18b9a3c (patch)
treef96b0b51166c531bfc8d75a9f5bce0557f2cc3b0
parent2ea34c47dd9819111f3cbaa2ce848581d286c05c (diff)
refactor ls-tree params
All in one place to avoid bugs like 2ea34c47dd9819111f3cbaa2ce848581d286c05c
-rw-r--r--Annex/Branch.hs11
-rw-r--r--Git/LsTree.hs11
-rw-r--r--Git/Repair.hs2
3 files changed, 10 insertions, 14 deletions
diff --git a/Annex/Branch.hs b/Annex/Branch.hs
index 286eb0558..c6c9b9949 100644
--- a/Annex/Branch.hs
+++ b/Annex/Branch.hs
@@ -43,6 +43,7 @@ import qualified Git.Sha
import qualified Git.Branch
import qualified Git.UnionMerge
import qualified Git.UpdateIndex
+import Git.LsTree (lsTreeParams)
import Git.HashObject
import Git.Types
import Git.FilePath
@@ -314,14 +315,8 @@ files = do
{- Files in the branch, not including any from journalled changes,
- and without updating the branch. -}
branchFiles :: Annex [FilePath]
-branchFiles = withIndex $ inRepo $ Git.Command.pipeNullSplitZombie
- [ Param "ls-tree"
- , Param "--full-tree"
- , Param "--name-only"
- , Param "-r"
- , Param "-z"
- , Param $ fromRef fullname
- ]
+branchFiles = withIndex $ inRepo $ Git.Command.pipeNullSplitZombie $
+ lsTreeParams fullname [Param "--name-only"]
{- Populates the branch's index file with the current branch contents.
-
diff --git a/Git/LsTree.hs b/Git/LsTree.hs
index bce635096..1ed62477e 100644
--- a/Git/LsTree.hs
+++ b/Git/LsTree.hs
@@ -34,16 +34,17 @@ data TreeItem = TreeItem
- with lazy output. -}
lsTree :: Ref -> Repo -> IO [TreeItem]
lsTree t repo = map parseLsTree
- <$> pipeNullSplitZombie (lsTreeParams t) repo
+ <$> pipeNullSplitZombie (lsTreeParams t []) repo
-lsTreeParams :: Ref -> [CommandParam]
-lsTreeParams t =
+lsTreeParams :: Ref -> [CommandParam] -> [CommandParam]
+lsTreeParams r ps =
[ Param "ls-tree"
, Param "--full-tree"
, Param "-z"
, Param "-r"
- , Param "--"
- , File $ fromRef t
+ ] ++ ps ++
+ [ Param "--"
+ , File $ fromRef r
]
{- Lists specified files in a tree. -}
diff --git a/Git/Repair.hs b/Git/Repair.hs
index 46cf22123..b441f1337 100644
--- a/Git/Repair.hs
+++ b/Git/Repair.hs
@@ -341,7 +341,7 @@ verifyTree :: MissingObjects -> Sha -> Repo -> IO Bool
verifyTree missing treesha r
| S.member treesha missing = return False
| otherwise = do
- (ls, cleanup) <- pipeNullSplit (LsTree.lsTreeParams treesha) r
+ (ls, cleanup) <- pipeNullSplit (LsTree.lsTreeParams treesha []) r
let objshas = map (extractSha . LsTree.sha . LsTree.parseLsTree) ls
if any isNothing objshas || any (`S.member` missing) (catMaybes objshas)
then do