extract commit parent(s)
This commit is contained in:
parent
97e97dccda
commit
fbf4d89e82
2 changed files with 6 additions and 3 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -105,6 +105,7 @@ fromBlobType SymlinkBlob = 0o120000
|
|||
|
||||
data Commit = Commit
|
||||
{ commitTree :: Sha
|
||||
, commitParent :: [Sha]
|
||||
, commitAuthorMetaData :: CommitMetaData
|
||||
, commitCommitterMetaData :: CommitMetaData
|
||||
, commitMessage :: String
|
||||
|
|
Loading…
Add table
Reference in a new issue