aboutsummaryrefslogtreecommitdiff
path: root/Git.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-12-11 16:11:13 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-12-11 16:14:59 -0400
commitcfbbda99f4dd3e510e52dbb499d132300ad203e4 (patch)
tree0d3a392a631e982b1ccba1c3bc390ece9f39e98a /Git.hs
parent8680c415dedcc1fdbbcc0b9cdd7e37e860b22130 (diff)
optimize index updating
The last branch ref that the index was updated to is stored in .git/annex/index.lck, and the index only updated when the current branch ref differs. (The .lck file should later be used for locking too.) Some more optimization is still needed, since there is some redundancy in calls to git show-ref.
Diffstat (limited to 'Git.hs')
-rw-r--r--Git.hs5
1 files changed, 3 insertions, 2 deletions
diff --git a/Git.hs b/Git.hs
index 8bc32b7cc..1da5997c1 100644
--- a/Git.hs
+++ b/Git.hs
@@ -463,8 +463,8 @@ shaSize :: Int
shaSize = 40
{- Commits the index into the specified branch (or other ref),
- - with the specified parent refs. -}
-commit :: String -> Ref -> [Ref] -> Repo -> IO ()
+ - with the specified parent refs, and returns the new ref -}
+commit :: String -> Ref -> [Ref] -> Repo -> IO Ref
commit message newref parentrefs repo = do
tree <- getSha "write-tree" $ asString $
pipeRead [Param "write-tree"] repo
@@ -473,6 +473,7 @@ commit message newref parentrefs repo = do
(map Param $ ["commit-tree", show tree] ++ ps)
(L.pack message) repo
run "update-ref" [Param $ show newref, Param $ show sha] repo
+ return sha
where
ignorehandle a = snd <$> a
asString a = L.unpack <$> a