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 :: L.ByteString -> Maybe Commit
|
||||||
parseCommit b = Commit
|
parseCommit b = Commit
|
||||||
<$> (extractSha . L8.unpack =<< field "tree")
|
<$> (extractSha . L8.unpack =<< field "tree")
|
||||||
|
<*> (mapMaybe (extractSha . L8.unpack) <$> fields "parent")
|
||||||
<*> (parsemetadata <$> field "author")
|
<*> (parsemetadata <$> field "author")
|
||||||
<*> (parsemetadata <$> field "committer")
|
<*> (parsemetadata <$> field "committer")
|
||||||
<*> Just (L8.unpack $ L.intercalate (L.singleton nl) message)
|
<*> Just (L8.unpack $ L.intercalate (L.singleton nl) message)
|
||||||
where
|
where
|
||||||
field n = M.lookup (fromString n) fields
|
field n = headMaybe =<< fields n
|
||||||
fields = M.fromList ((map breakfield) header)
|
fields n = M.lookup (fromString n) fieldmap
|
||||||
|
fieldmap = M.fromListWith (++) ((map breakfield) header)
|
||||||
breakfield l =
|
breakfield l =
|
||||||
let (k, sp_v) = L.break (== sp) 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
|
(header, message) = separate L.null ls
|
||||||
ls = L.split nl b
|
ls = L.split nl b
|
||||||
|
|
||||||
|
|
|
@ -105,6 +105,7 @@ fromBlobType SymlinkBlob = 0o120000
|
||||||
|
|
||||||
data Commit = Commit
|
data Commit = Commit
|
||||||
{ commitTree :: Sha
|
{ commitTree :: Sha
|
||||||
|
, commitParent :: [Sha]
|
||||||
, commitAuthorMetaData :: CommitMetaData
|
, commitAuthorMetaData :: CommitMetaData
|
||||||
, commitCommitterMetaData :: CommitMetaData
|
, commitCommitterMetaData :: CommitMetaData
|
||||||
, commitMessage :: String
|
, commitMessage :: String
|
||||||
|
|
Loading…
Add table
Reference in a new issue