wip RawFilePath
Goal is to make git-annex faster by using ByteString for all the worktree traversal. For now, this is focusing on Command.Find, in order to benchmark how much it helps. (All other commands are temporarily disabled) Currently in a very bad unbuildable in-between state.
This commit is contained in:
parent
1f035c0d66
commit
6a97ff6b3a
25 changed files with 258 additions and 200 deletions
|
@ -16,6 +16,8 @@ import Git.Command
|
|||
import qualified Git.Config
|
||||
import qualified Git.Ref
|
||||
|
||||
import qualified Data.ByteString as B
|
||||
|
||||
{- The currently checked out branch.
|
||||
-
|
||||
- In a just initialized git repo before the first commit,
|
||||
|
@ -29,19 +31,19 @@ current r = do
|
|||
case v of
|
||||
Nothing -> return Nothing
|
||||
Just branch ->
|
||||
ifM (null <$> pipeReadStrict [Param "show-ref", Param $ fromRef branch] r)
|
||||
ifM (B.null <$> pipeReadStrict [Param "show-ref", Param $ fromRef branch] r)
|
||||
( return Nothing
|
||||
, return v
|
||||
)
|
||||
|
||||
{- The current branch, which may not really exist yet. -}
|
||||
currentUnsafe :: Repo -> IO (Maybe Branch)
|
||||
currentUnsafe r = parse . firstLine
|
||||
currentUnsafe r = parse . firstLine'
|
||||
<$> pipeReadStrict [Param "symbolic-ref", Param "-q", Param $ fromRef Git.Ref.headRef] r
|
||||
where
|
||||
parse l
|
||||
| null l = Nothing
|
||||
| otherwise = Just $ Git.Ref l
|
||||
parse b
|
||||
| B.null b = Nothing
|
||||
| otherwise = Just $ Git.Ref $ decodeBS b
|
||||
|
||||
{- Checks if the second branch has any commits not present on the first
|
||||
- branch. -}
|
||||
|
@ -53,7 +55,8 @@ changed origbranch newbranch repo
|
|||
where
|
||||
|
||||
changed' :: Branch -> Branch -> [CommandParam] -> Repo -> IO String
|
||||
changed' origbranch newbranch extraps repo = pipeReadStrict ps repo
|
||||
changed' origbranch newbranch extraps repo =
|
||||
decodeBS <$> pipeReadStrict ps repo
|
||||
where
|
||||
ps =
|
||||
[ Param "log"
|
||||
|
@ -72,7 +75,7 @@ changedCommits origbranch newbranch extraps repo =
|
|||
-
|
||||
- This requires there to be a path from the old to the new. -}
|
||||
fastForwardable :: Ref -> Ref -> Repo -> IO Bool
|
||||
fastForwardable old new repo = not . null <$>
|
||||
fastForwardable old new repo = not . B.null <$>
|
||||
pipeReadStrict
|
||||
[ Param "log"
|
||||
, Param $ fromRef old ++ ".." ++ fromRef new
|
||||
|
@ -160,7 +163,7 @@ commitCommand' runner commitmode ps = runner $
|
|||
commit :: CommitMode -> Bool -> String -> Branch -> [Ref] -> Repo -> IO (Maybe Sha)
|
||||
commit commitmode allowempty message branch parentrefs repo = do
|
||||
tree <- getSha "write-tree" $
|
||||
pipeReadStrict [Param "write-tree"] repo
|
||||
decodeBS' <$> pipeReadStrict [Param "write-tree"] repo
|
||||
ifM (cancommit tree)
|
||||
( do
|
||||
sha <- commitTree commitmode message parentrefs tree repo
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue