extract commit parent(s)

This commit is contained in:
Joey Hess 2016-03-11 12:47:14 -04:00
parent 97e97dccda
commit fbf4d89e82
Failed to extract signature
2 changed files with 6 additions and 3 deletions

View file

@ -125,15 +125,17 @@ catCommit h commitref = go <$> catObjectDetails h commitref
parseCommit :: L.ByteString -> Maybe Commit
parseCommit b = Commit
<$> (extractSha . L8.unpack =<< field "tree")
<*> (mapMaybe (extractSha . L8.unpack) <$> fields "parent")
<*> (parsemetadata <$> field "author")
<*> (parsemetadata <$> field "committer")
<*> Just (L8.unpack $ L.intercalate (L.singleton nl) message)
where
field n = M.lookup (fromString n) fields
fields = M.fromList ((map breakfield) header)
field n = headMaybe =<< fields n
fields n = M.lookup (fromString n) fieldmap
fieldmap = M.fromListWith (++) ((map breakfield) header)
breakfield l =
let (k, sp_v) = L.break (== sp) l
in (k, L.drop 1 sp_v)
in (k, [L.drop 1 sp_v])
(header, message) = separate L.null ls
ls = L.split nl b

View file

@ -105,6 +105,7 @@ fromBlobType SymlinkBlob = 0o120000
data Commit = Commit
{ commitTree :: Sha
, commitParent :: [Sha]
, commitAuthorMetaData :: CommitMetaData
, commitCommitterMetaData :: CommitMetaData
, commitMessage :: String