rJ{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixSafe{|{|{|Safeg}~ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone(    BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneN       BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixSafe+;Exception when a revision cannot be resolved to a referenceA git revision. this can be many things: * a shorten ref * a ref * a named branch or tag followed by optional modifiers : that can represent: * parenting * type * dateBA modifier to a revision, which is a function apply of a revisionparent accessor ^ n and ^parent accessor ~ n@{type} accessor @{date} accessor  @{n} accessor  !     ! BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone+ Reference wasn't found TInvalid Reference exception raised when using something that is not a ref as a ref. represent a git reference (SHA1)Mtake a hexadecimal bytestring that represent a reference and turn into a refItake a hexadecimal string that represent a reference and turn into a ref.transform a ref into an hexadecimal bytestring*transform a ref into an hexadecimal stringMtransform a bytestring that represent a binary bytestring and returns a ref.Mtransform a bytestring that represent a binary bytestring and returns a ref.)turn a reference into a binary bytestring3returns the prefix (leading byte) of this referencecompare prefixTreturns the splitted format "prefix/suffix" for addressing the loose object database"hash a bytestring into a reference'hash a lazy bytestring into a reference "#$%     "#$% BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone&'()*+,-./012345&'()*+,-./012345&'()*+,-./012345 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneN&content of a ref file.*Represent a named specifier.6Mlist all the loose refs available recursively from a directory starting point# !"#$%&'()*+,-./0123789:4656789:; !"#$%&'()*+,-./0123456789:*+,-./0123&'()#$%4 !"89:567 !"#$%&'()* +,-./0123789:4656789:; BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone<MGet a configuration element in a stack of config file, starting from the top. ;<=>?@=>?@A<stack of config section namekey name ;<=>?@?@A<;<=>?@=>?@A<NoneBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcBCDEFGHIJKMNPQRSVBCDEFGHIJKLMNOPQRSTUV BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneApossible commands in a deltaDDa delta is a source size, a destination size and a list of delta cmdFparse a delta. format is 2 variable sizes, followed by delta cmds. for each cmd: * if first byte MSB is set, we copy from source. * otherwise, we copy from delta. * extensions are not handled.G&read one delta from a lazy bytestring.H?apply a delta on a lazy bytestring, returning a new bytestring.ABCDEFGHABCDEFGHDEABCFGHABCDEFGH BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone+IDelta pointing to a ref.KDelta pointing to an offset.MRepresent a signed tag.XRepresent a commit object.aRepresent a binary blob.d5Represent a root tree with zero to many tree entries.g2an author or committer line has the format: name  emailv time timezone FIXME: should be a string, but I don't know if the data is stored consistantly in one encoding (UTF8)lrepresent one entry in the tree (permission,file or directory name,blob or tree ref) name should maybe a filepath, but not sure about the encoding.n Entity nameda bitfield representing a typical unix permission: * bit 0 represents the read permission * bit 1 represents the write permission * bit 2 represents the execute permissiono<traditional unix permission for owner, group and permissionstGit object file type{dGit time is number of seconds since unix epoch in the UTC zone with the current timezone associatedtype of a git object.e:the enum instance is useful when marshalling to pack file.MIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnfdopqrstuvwxyz{|}~ghijeklmCIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~CdefXYZ[\]^_`TUVWabcMNOPQRSghijknmyzopqrstuvwx{|}~KLIJlIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnfdopqrstuvwxyz{|}~ghijeklm BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNonedescribe a git object, that could of 6 differents types: tree, blob, commit, tag and deltas (offset or ref). the deltas one are only available in packs.tRaw objects infos have an header (type, size, ptr), the data and a pointers chains to parents for resolved objects.sDelta objects points to some others objects in the database either as offset in the pack or as a direct reference.%location of an object in the databaseparse a tree contentparse a blob contentparse a commit contentparse a tag content?nopqrstuvwxyz{|}~55,nopqrstuvwxyz{|}~ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone+:seek in a handle, and reset the remaining buffer to empty.parse from a filebufferOget a Variable Length Field. get byte as long as MSB is set, and one byte after  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneCrepresent an packIndex header with the version and the fanout table2enumerate every indexes file in the pack directory open an indexclose an index;variant of withFile on the index file and with a FileReader;returns the number of references, referenced in this index.!byte size of an packIndex header.@get the number of reference in this index with a specific prefix#fold on refs with a specific prefix4return the reference offset in the packfile if found(get all references that start by prefix.Zreturns absolute offset in the index file of the sha1s, the crcs and the packfiles offset.parse index header*read index header from an index filereader(get index header from an index referenceread all index  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone5Enumerate the pack refs available in this repository. open a pack close a pack)return the number of entries in this packLread an object at a specific position using a map function on the objectData%read an object at a specific position0read a raw representation at a specific positionJenumerate all objects in this pack and callback to f for reach raw objects BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone     BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone N 5unmarshall an object (with header) from a bytestring.8unmarshall an object (with header) from a zipped stream.>unmarshall an object as (header, data) tuple from a bytestringAunmarshall an object as (header, data) tuple from a zipped streamGread a specific ref from a loose object and returns an header and data.'read only the header of a loose object.=read a specific ref from a loose object and returns an object.check if a specific ref exists as loose object5enumarate all prefixes available in the object store.:enumerate all references available with a specific prefix.4marshall as lazy bytestring an object except deltas.kcreate a new blob on a temporary location and on success move it to the object store with its digest name.write an object to disk as a loose reference. use looseWriteBlobFromFile for efficiently writing blobs when being commited from a file.!  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneNUrepresent a git repo, with possibly already opened filereaders for indexes and packs5this is a cache representation of the packed-ref file!open a new git repository contextBclose a git repository context, closing all remaining fileReaders.3Find the git repository from the current directory.If the environment variable GIT_DIR is set then it's used, otherwise iterate from current directory, up to 128 parents for a .git directory3Find the git repository from the current directory.If the environment variable GIT_DIR is set then it's used, otherwise iterate from current directory, up to 128 parents for a .git directory(execute a function f with a git context.-execute a function on the current repository.6check findRepo to see how the git repository is found.=basic checks to see if a specific path looks like a git repo.3initialize a new repository at a specific location.!read the repository's description set the repository's description/Get the object location of a specific reference6get all the references that start by a specific prefixget an object from repositoryget an object from repository"get an object type from repository?get an object from repository using a location to reference it.*get an object from repository using a ref. Just like J but will raise a RefNotFound exception if the reference cannot be found.bset an object in the store and returns the new ref this is always going to create a loose object.  repositorythe object's reference to"whether to resolve deltas if foundreturned object if found repositorythe object's reference to"whether to resolve deltas if foundreturned object if found BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone +N6Exception when trying to convert an object pointed by  to a type that is different Jhierarchy tree, either a reference to a blob (file) or a tree (directory). get a specified commit [get a specified commit but raises an exception if doesn't exists or type is not appropriateget a specified treeget a specified tree but raise^try to resolve a string to a specific commit ref for example: HEAD, HEAD^, master~3, shortRefIreturns a tree from a ref that might be either a commit, a tree or a tag.ARewrite a set of commits from a revision and returns the new ref.If during revision traversal (diving) there's a commit with zero or multiple parents then the traversal will stop regardless of the amount of parent requested.;calling "rewrite f 2 (revisionOf d)" on the following tree:a <-- b <-- c <-- d2result in the following tree after mapping with f:a <-- f(b) <-- f(c) <-- f(d))build a hierarchy tree from a tree objectIresolve the ref (tree or blob) related to a path at a specific commit ref/Write a branch to point to a specific referenceReturn the list of branches,Write a tag to point to a specific referenceReturn the list of branches9Set head to point to either a reference or a branch name.<Get what the head is pointing to, or the reference otherwiseRead the ConfigGet a configuration element from the config file, starting from the local repository config file, then the global config file.6for example the equivalent to git config user.name is: configGet git "user" "name"      RepositoryMapping functionrevision to start fromthe number of parents to mapreturn the new head REF repositorycommit referencepaths repositorythe name of the branch to writethe reference to set repositorythe name of the tag to writethe reference to set repository'either a raw reference or a branch name Git context section namekey name The resulting value if it exists!#$%;<=>?@     !?@;<=>   #$%        BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneC"Create a new worktree#(Create a worktree from a tree reference.$!delete a path from a working tree-if the path doesn't exist, no error is raised%2Set a file in this working tree to a specific ref.wThe ref should point to a valid blob or tree object, and it's safer to write the referenced tree or blob object first.&rFlush the worktree by creating all the necessary trees in the git store and return the root ref of the work tree. !"#$%&  !"#$%& !"#$%&  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneV#$%MNOPQRSTUVWXYZ[\]^_`abcdefghijkmnopqrstuvwxyz{  !"#$%&V#$%XYZ[\]^_`ghijkTUVWdefabcMNOPQRS{yznmtuvwxopqrs ! "#$%&  BSD-style&Nicolas DI PRIMA <nicolas@di-prima.fr> experimentalunixNone35IN(%ReadOnly operations on a given commit*NBasic operations common between the different Monads defined in this package.+6the current Monad must allow access to the current Git-~this is a convenient class to allow a common interface for what user may need to optain a Ref from a given Resolvable object.each of this instances is a convenient implementation of what a user would have to do in order to resolve a branch, a tag or a String. Zresolve (Ref "2ad98b90...2ca") === Ref "2ad98b90...2ca" resolve "master" resolve "HEAD^^^"?-get the content of the file at the given PathQif the given Path is not a file or does not exist, the function returns Nothing.@4list the element present in the Given Directory PathVif the given Path is not a directory or does not exist, the function returns Nothing.A%open a commit in the current GitMonadDRead commit's info (Author, Committer, message...) or Commit's Tree. withCurrentRepo $ withCommit "master" $ do -- print the commit's author information author <- getAuthor liftGit $ print author -- print the list of files|dirs in the root directory l <- getDir [] liftGit $ print lBreplace the Commit's AuthorCreplace the Commit's CommitterDreplace the Commit's ParentsEreplace the Commit's ExtrasFreplace the Commit's encodingG8replace the Commit's message with the new given message.H.add a new file in in the Commit's Working TreeI-delete a file from the Commit's Working Tree.J+create a new commit in the current GitMonad;The commit is pre-filled with the following default values:!author and committer are the same%the commit's parents is an empty listthere is no commit encoding$the commit's extras is an empty list)the commit message is an empty ByteString\the working tree is a new empty Tree or the Tree associated to the given Revision or Ref.KYou can update these values with the commit setters (setFile, setAuthor...)Example: withCurrentRepo $ (r, ()) <- withNewCommit person Nothing $ do setMessage "inital commit" setFile ["README.md"] "# My awesome project\n\nthis is a new project\n" branchWrite "master" r you can also continue the work on a same branch. In this case the commit's parent is already set to the Reference associated to the revision. You can, change the parents if you wish to erase, or replace, this value. #withCurrentRepo $ readmeContent <- withCommit (Just "master") $ getFile ["README.md"] (r, ()) <- withNewCommit person (Just "master") $ do setMessage "update the README" setFile ["README.md"] $ readmeContent <> "just add some more description\n" branchWrite "master" rK&create or continue to work on a branchThis is a convenient function to create or to linearily work on a branch. This function applies a first Collect of information on the parent commit (the actual branch's commit). Then it creates a new commit and update the branch to point to this commit. for example: withCurrentRepo $ withBranch person "master" True (getAuthor) (maybe (setMessage "initial commit on this branch") (author -> setMessage $ "continue the great work of " ++ show (personName author)) ) p'()*+,-./01234569the commit Ref, Revision ("master", "HEAD^^" or a ref...)789:;<=>?@A(the commit revision or reference to open   BCDEFG HIJ8by default a commit must have an Author and a Committer.;The given value will be given to both Author and Committer.Hit is possible to prepopulate the Working Tree with a given Ref's Tree.Pthe action to perform in the new commit (set files, Person, encoding or extras)K&the default Author and Committer (see J)the branch to work onHpropopulate the parent's tree (if it exists) in the new created commit.fIn any cases, if the branch already exists, the new commit parent will be filled with the result of (resolv "branchName")?the action to performs in the parent's new commit if it exists.(the action to performs in the new commit>the argument is the result of the action on the parent commit.%Nothing if the parent does not exist. 8#$%XYZ[\]^_`ghijk'()*+,-./0123456789:;<=>?@ABCDEFGHIJK8*+,)78-./0123456(A9:;<=>?@'JKBCDEFGHI#$%XYZ[\]^_`ghijkX'()*+,-./0123456789:;<=>?@A   BCDEFG HIJK  BSD-style&Nicolas DI PRIMA <nicolas@di-prima.fr> experimentalunixNone LThis is a proposed diff records for a given file. It contains useful information: * the filename (with its path in the root project) * a file diff (with the Data.Algorithm.Patience method) * the file's mode (i.e. the file priviledge) * the file's refkRepresents a file state between two revisions A file (a blob) can be present in the first Tree's revision but not in the second one, then it has been deleted. If only in the second Tree's revision, then it has been created. If it is in the both, maybe it has been changed.o6This is a blob description at a given state (revision)uPrepresents a blob's content (i.e., the content of a file at a given reference).vText file's lineswBinary contentxDgenerate a diff list between two revisions with a given diff helper.}Useful to extract any kind of information from two different revisions. For example you can get the number of deleted files: dgetdiffwith f 0 head^ head git where f (OnlyOld _) acc = acc+1 f _ acc = accOr save the list of new files: ugetdiffwith f [] head^ head git where f (OnlyNew bs) acc = (bsFilename bs):acc f _ acc = accyoA default Diff getter which returns all diff information (Mode, Content and Binary) with a context of 5 lines. (getDiff = getDiffWith (defaultDiff 5) []zA default diff helper. It is an example about how you can write your own diff helper or you can use it if you want to get all of differences.Two o0 are equal if they have the same filename, i.e., 7((BlobState x _ _ _) == (BlobState y _ _ _)) = (x == y)7 LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw!x1diff helper (State -> accumulator -> accumulator) accumulator%commit reference (the original state) commit reference (the new state) repositoryyzNumber of line for context AccumulatorAccumulator with a new content"#$/LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz/uvwopqrstklmnxLMNOPQ\]^_`abcdefRSTUVWXYZ[ghijzy LMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw!xyz"#$% !"#$$%%&'()*+,-./012345567899:;<=>?@ABCDEFGHIJKLMNOPPQRSSTUVWWXYZ[[\\]]^_`abccdeffghijklmnnoppqrrstuvwxyyz{|}~                      !"#$%&'( ) * + , - . / 0      1   2 3 4 5 6 7 8 9 : ; < = > ? @ A B C DEEFGHIJKLMNOPQRSTUVWXYZ[\]^__`abcdeffghijklmnopqrstsusvswsxyzs{s|s}s~ssyyyyyyyyyyyyyysssssssssssssssssssssssssss      & !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOMNPMNQMNRMNSMNTMNUMNVMNWMNXMNYMNZMN[\]x^_`abcdefghijklmnopqrstuvwxxyyz{|}~                           )           *      +     [      $ % (                                             git_JlDldBtZugW1m4LUwofNfAData.Git.Revision Data.Git.RefData.Git.NamedData.Git.RepositoryData.Git.DeltaData.Git.TypesData.Git.Storage.ObjectData.Git.Storage.PackIndexData.Git.Storage.PackData.Git.Storage.LooseData.Git.StorageData.GitData.Git.Monad Data.Git.DiffData.Git.InternalData.Git.Imports Data.Git.OSData.Git.Storage.CacheFile Data.Git.PathData.Git.ConfigData.Git.ParserData.Git.Storage.FileReaderData.Git.Storage.FileWriterData.Git.WorkTreebase Data.String fromStringRevisionNotFoundRevision RevModifier RevModParentRevModParentFirstN RevModAtType RevModAtDate RevModAtN RefNotFound RefInvalidRefisHex isHexStringfromHex fromHexStringtoHex toHexString fromBinary fromDigesttoBinary refPrefix cmpPrefixtoFilePathPartshashhashLBS PackedRefs packedRemotes packedBranchs packedTagsRefName refNameRaw RefContentTy RefDirectRefLinkRefContentUnknown RefSpecTyRefHead RefOrigHead RefFetchHead RefBranchRefTag RefRemote RefPatchesRefStashRefOtherreadPackedRefslooseHeadsList looseTagsListlooseRemotesList existsRefFile writeRefFile readRefFileSection sectionName sectionKVsConfigDeltaCmd DeltaCopyDeltaSrcDelta deltaParse deltaRead deltaApplyDeltaRefDeltaOfsTagtagRef tagObjectTypetagBlobtagNametagS CommitExtracommitExtraKeycommitExtraValueCommit commitTreeish commitParents commitAuthorcommitCommittercommitEncoding commitExtras commitMessageBlobblobGetContentTree treeGetEntsPerson personName personEmail personTimeTreeEntEntPathEntNameFilePermissions getOwnerPerm getGroupPerm getOtherPermObjectFileTypeFileTypeDirectoryFileTypeRegularFileFileTypeSymbolicLinkFileTypeGitLinkModePermGitTime gitTimeUTCgitTimeTimezone ObjectTypeTypeTreeTypeBlob TypeCommitTypeTag TypeDeltaOff TypeDeltaRefgitTimegitTimeToLocal getPermission getFiletypeentName entPathAppend ObjectablegetTypegetRawisDeltatoObjectObject ObjCommitObjTagObjBlobObjTree ObjDeltaOfs ObjDeltaRef ObjectInfooiHeaderoiDataoiChains ObjectData ObjectHeader ObjectPtrPtrRefPtrOfsObjectLocationNotFoundLoosePacked objectToTypeobjectTypeMarshallobjectTypeUnmarshallobjectTypeIsDelta objectIsDelta objectToTreeobjectToCommit objectToTag objectToBlob treeParse blobParse commitParsetagParseobjectParseTreeobjectParseCommitobjectParseTagobjectParseBlobobjectWriteHeader objectWrite objectHash PackIndexpackIndexSha1s packIndexCRCspackIndexPackoffspackIndexPackChecksumpackIndexChecksumPackIndexHeaderpackIndexEnumerate packIndexOpenpackIndexClose withPackIndexpackIndexHeaderGetNbWithPrefixpackIndexGetReferenceLocation packIndexGetReferencesWithPrefixpackIndexReadHeaderpackIndexGetHeader packIndexReadPackedObjectInfopoiType poiOffsetpoiSize poiActualSizepoiExtraPackedObjectRaw packEnumeratepackOpen packClosepackReadHeaderpackReadMapAtOffsetpackReadAtOffsetpackReadRawAtOffsetpackEnumerateObjectspackedObjectToObjectpackObjectFromRawZipped getZippedDatalooseUnmarshalllooseUnmarshallZippedlooseUnmarshallRawlooseUnmarshallZippedRaw looseReadRawlooseReadHeader looseRead looseExistslooseEnumeratePrefixeslooseEnumerateWithPrefixFilterlooseEnumerateWithPrefix looseMarshalllooseWriteBlobFromFile looseWriteGit gitRepoPath packedNamedconfigsopenRepo closeRepo findRepoMaybefindRepowithRepowithCurrentRepoisRepoinitRepogetDescriptionsetDescriptioniterateIndexes findReferencefindReferencesWithPrefixgetObjectRawAt getObjectRaw getObjectType getObjectAt getObject getObject_ setObjectHTreeHTreeEntTreeDirTreeFilegetCommitMaybe getCommit getTreeMaybegetTreeresolveRevisionresolveTreeishrewrite buildHTree resolvePath branchWrite branchListtagWritetagListheadSetheadGet configGetAll configGetEntType EntDirectoryEntFile EntExecutableWorkTree workTreeNew workTreeFromworkTreeDelete workTreeSet workTreeFlushCommitM CommitAccessMGitMGitMonadgetGitliftGit Resolvableresolve headResolv getAuthor getCommitter getParents getExtras getEncoding getMessagegetFilegetDir withCommit setAuthor setCommitter setParents setExtras setEncoding setMessagesetFile deleteFile withNewCommit withBranchGitDiff hFileName hFileContent hFileModehFileRef GitFileRefNewRefOldRef ModifiedRef UnModifiedRef GitFileModeNewModeOldMode ModifiedModeUnModifiedModeGitFileContent NewBinaryFile OldBinaryFile NewTextFile OldTextFileModifiedBinaryFile ModifiedFileUnModifiedFile FilteredDiff NormalLine SeparatorTextLine lineNumber lineContent BlobStateDiffOnlyOldOnlyNew OldAndNew BlobState bsFilenamebsModebsRef bsContent BlobContent FileContent BinaryContent getDiffWithgetDiff defaultDiffbe32be16GHC.Basefail>>=>>fmapreturn Control.Monadguardjoin<*>pureMonadFunctor Applicativemfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMData.TraversableforMsequencemapMControl.ApplicativeoptionalgetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Foldablemsum sequence_forM_mapM_ Data.Monoid<>getDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastgetAltAlt Data.Functorvoid<$>apliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA2liftA<**>mconcatmappendmemptyMonoid<$<**>manysome<|>empty Alternativemplusmzero MonadPlusMTime LocalPathlistDirectoryFilenamecreateParentDirectory readTextFile writeTextFiletimeZerogetMTime getEnvAsPathlocalPathDecodelocalPathEncodereadBinaryFilewriteBinaryFilereadBinaryFileLazyGHC.IO.Handle.TypesHandle GHC.IO.HandlehClose GHC.IO.IOMode ReadWriteMode AppendMode WriteModeReadModeIOModesyste_4TDp3THj8U86nw3l0Qe8pl Filesystem writeFilereadFilewithFileopenFilegetSizegetHomeDirectorygetWorkingDirectory removeFile listDirectorycreateDirectoryrename isDirectoryisFilesyste_0e3pMPmZzix21iFp2U03LcFilesystem.Path.CurrentOSvalidFilesystem.Path stripPrefixabsoluteparent CacheFile cacheFilepath cacheRefresh cacheIniVal cacheLock newCacheVal getCacheVal tryGetMTimeStream runStream revFromStringprefixeatRet $fMonadStream$fAlternativeStream$fApplicativeStream$fFunctorStream$fIsStringRevision$fShowRevision$fShowRevModifier$fExceptionRefNotFound$fExceptionRefInvalid $fShowRef configPath headsPathtagsPath remotesPathpackedRefsPathheadPathtagPath remotePath specialPath remoteEntPath packDirPath indexPathpackPath objectPathobjectPathOfRefobjectTemporaryPathlistRefsisValidRefNametoRefTy fromRefTytoPath$fIsStringRefNameget parseConfigreadConfigPath readConfigreadGlobalConfig listSectionsParservlfword32ref referenceBin referenceHexdecimalstring maybeParsemaybeParseChunkstoMaybe eitherParseeitherParseChunkstoEithertakeUntilASCIItillEOLskipEOL skipASCIIasciiEOLisByte takeWhile1memor_AtLbf837cOS9kNhIuRhbe8Data.ByteArray.ParsetakeAll takeWhiletakebytesbyteanyBytehasMoreparse parseFeedParseOK ParseMore ParseFailResultPerm$fEnumObjectType $fMonoidTree$fByteableEntName$fIsStringEntName $fShowEntName $fShowGitTime $fTimeGitTime$fTimeableGitTimeoctalmodeperm parsePersonascii asciiChar treeWrite commitWriteeol blobWrite writeName$fObjectableDeltaRef$fObjectableDeltaOfs$fObjectableTree$fObjectableTag$fObjectableCommit$fObjectableBlobfileReaderSeekfileReaderParsefileReaderGetVLFInflateException FileReaderfbHandle fbUseInflate fbInflate fbRemainingfbPos fileReaderNewfileReaderClosewithFileReaderwithFileReaderDecompressfileReaderGetNextfileReaderGetPosfileReaderFill fileReaderGetfileReaderGetLBSfileReaderGetBSfileReaderInflateToSize inflateNew inflateToSize$fExceptionInflateExceptionpackIndexHeaderGetSizepackIndexHeaderByteSizepackIndexHeaderFoldRefpackIndexOffsetsparsePackIndexHeader getNextObjectgetNextObjectRaw FileWriter writerHandle writerDeflate writerDigestdefaultCompressionmodifyIORefStrict fileWriterNewwithFileWriter postDeflatefileWriterOutputfileWriterClosefileWriterGetDigest HeaderType HeaderTree HeaderTag HeaderCommit HeaderBlobreadZippedFiledezipisObjectPrefix parseHeaderparseTreeHeaderparseTagHeaderparseCommitHeaderparseBlobHeader parseLength parseObjectgetDirectoryContentsCachedPackedRef indexReaders packReadersPackIndexReaderreadRawFromPack readFromPack InvalidTypemapJustM$fExceptionInvalidTypeTreeStTreeRef TreeLoadedTreeVarDir loadTreeVar entTypeToPerm loadOrGetTree diveFromRoot runCommitM CommitContextcommitContextAuthorcommitContextCommittercommitContextParentscommitContextExtrascommitContextEncodingcommitContextMessagecommitContextTreerunCommitAccessMCommitAccessContextcommitAccessContextCommitcommitAccessContextRefrunGitM GitContext gitContextGit ResultSuccess ResultFailurerevisionFromString resolvPathfmapGitM returnGitM appendGitMbindGitMfailGitMgetGitMliftGitM executeGitMfmapCommitAccessMreturnCommitAccessMappendCommitAccessMbindCommitAccessMfailCommitAccessMgetCommitAccessMliftCommitAccessMwithCommitAccessContextgetContextRef_getContextObject_ fmapCommitM returnCommitM appendCommitM bindCommitM failCommitM getCommitM liftCommitMcommitUpdateContextsetContextObject_$fGitMonadCommitM$fMonadCommitM$fApplicativeCommitM$fFunctorCommitM$fGitMonadCommitAccessM$fMonadCommitAccessM$fApplicativeCommitAccessM$fFunctorCommitAccessM$fGitMonadGitM $fMonadGitM$fApplicativeGitM $fFunctorGitM$fResolvableRefName$fResolvable[]$fResolvableRevision$fResolvableRef $fEqBlobStateGitAccu AccuBottomAccuTopbuildListForDiffdiffGetContext $fOrdTextLine $fEqTextLine