}xP      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                   BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixSafe0;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 revision parent accessor ^ n and ^ parent accessor ~ n @{type} accessor @{date} accessor  @{n} accessor      BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone0Reference wasn't foundTInvalid 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 ref$Itake 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 string'Mtransform 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 bytestring*3returns the prefix (leading byte) of this reference+compare prefix,Treturns the splitted format "prefix/suffix" for addressing the loose object database-"hash a bytestring into a reference.'hash a lazy bytestring into a reference/Any hash algorithm !"#$%&'()*+,-./0123 !"#$%&'()*+,-./0 !"#$'()%&*+,-./0 !"#$%&'()*+,-./0123 BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixSafeSafeg      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneefghijklmnopqrs(tuvwxyz{|}~efghijklmnopqrsefghijklmnopqrs BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone   None BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneTCcontent of a ref file.GRepresent a named specifier.Mlist all the loose refs available recursively from a directory starting point$;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX;<=>?@ABCDEFGHIJKLMNOPQRSTUVWGHIJKLMNOPCDEF@ABQ;<=>?UVWRST;<=>?@ABCDEFG HIJKLMNOPQRSTUVWX BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneT  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone0: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> experimentalunixNonehCrepresent an packIndex header with the version and the fanout tablej2enumerate every indexes file in the pack directoryk open an indexlclose an indexm;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.n@get the number of reference in this index with a specific prefix#fold on refs with a specific prefixo4return the reference offset in the packfile if foundp(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 headerq*read index header from an index filereaderr(get index header from an index referencesread all indexabcdefghijklmnopqrsabcdefghijklmnopqrshiabcdefgklmjnopqsrabcdefghijklmnopqrs BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNonevpossible commands in a deltayDa delta is a source size, a destination size and a list of delta cmd{parse 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.|&read one delta from a lazy bytestring.}?apply a delta on a lazy bytestring, returning a new bytestring.vwxyz{|}vwxyz{|}yzvwx{|}vwxyz{|} BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone0Delta pointing to a ref.Delta pointing to an offset.Represent a signed tag.Represent a commit object.Represent a binary blob.5Represent a root tree with zero to many tree entries.2an 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)represent 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. Entity namea bitfield representing a typical unix permission: * bit 0 represents the read permission * bit 1 represents the write permission * bit 2 represents the execute permission<traditional unix permission for owner, group and permissionsGit object file typedGit time is number of seconds since unix epoch in the UTC zone with the current timezone associatedtype of a git object.:the enum instance is useful when marshalling to pack file.MCC 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 database parse a tree content parse a blob contentparse a commit contentparse a tag content?     5     5     ,      BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone$T (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 bytestring+Aunmarshall an object as (header, data) tuple from a zipped stream,Gread 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 object05enumarate all prefixes available in the object store.1:enumerate all references available with a specific prefix.34marshall as lazy bytestring an object except deltas.4kcreate a new blob on a temporary location and on success move it to the object store with its digest name.5write an object to disk as a loose reference. use looseWriteBlobFromFile for efficiently writing blobs when being commited from a file.!     %&'()*+,-./012345%&'()*+,-./012345%&'(*)+3.-,/45012     %&'()*+,-./012345  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone@5Enumerate the pack refs available in this repository.A open a packB close a packC)return the number of entries in this packDLread an object at a specific position using a map function on the objectDataE%read an object at a specific positionF0read a raw representation at a specific positionGJenumerate all objects in this pack and callback to f for reach raw objects89:;<=>?@ABCDEFGHI89:;<=>?@ABCDEFGHI89:;<=>?@ABCDEFGHI89:;<=>?@ABCDEFGHI BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneMGet a configuration element in a stack of config file, starting from the top. LMNOPQ stack of config section namekey name LMNOPQ LMNOPQ   BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneTRUrepresent a git repo, with possibly already opened filereaders for indexes and packs!5this is a cache representation of the packed-ref fileV!open a new git repository contextWBclose a git repository context, closing all remaining fileReaders.X3Find 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 directoryY3Find 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 directoryZ(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 descriptiona/Get the object location of a specific referenceb6get all the references that start by a specific prefixcget an object from repositorydget an object from repositorye"get an object type from repositoryf?get an object from repository using a location to reference it.g*get an object from repository using a ref.h Just like gJ but will raise a RefNotFound exception if the reference cannot be found.ibset an object in the store and returns the new ref this is always going to create a loose object. R"S#$TU!%&VWXYZ[\]^_`ab'(cdefg repositorythe object's reference to"whether to resolve deltas if foundreturned object if foundh repositorythe object's reference to"whether to resolve deltas if foundreturned object if foundiRUSTVWXYZ[\]^_`abcdefghiRSTUTSUVWZ[XY\]^_`abdcghfeiR"S#$TU!%&VWXYZ[\]^_`ab'(cdefghi  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone$0T)6Exception when trying to convert an object pointed by   to a type that is differentkJhierarchy tree, either a reference to a blob (file) or a tree (directory).nget a specified commito[get a specified commit but raises an exception if doesn't exists or type is not appropriatepget a specified treeqget a specified tree but raiser^try to resolve a string to a specific commit ref for example: HEAD, HEAD^, master~3, shortRefsIreturns a tree from a ref that might be either a commit, a tree or a tag.tARewrite 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)u)build a hierarchy tree from a tree objectvIresolve the ref (tree or blob) related to a path at a specific commit refw/Write a branch to point to a specific referencexReturn the list of branchesy,Write a tag to point to a specific referencezReturn the list of branches{9Set head to point to either a reference or a branch name.|<Get what the head is pointing to, or the reference otherwise}Read the Config~Get 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")*jklm+nopqrst RepositoryMapping functionrevision to start fromthe number of parents to mapreturn the new head REFuv repositorycommit referencepathsw repositorythe name of the branch to writethe reference to setxy repositorythe name of the tag to writethe reference to setz{ repository'either a raw reference or a branch name|}~ Git context section namekey name The resulting value if it exists!@ABLMNOPQR\]jklmnopqrstuvwxyz{|}~!R}~PQLMNOjklm@ABnopqtuvsr]\wxyz{|)*jklm+nopqrstuvwxyz{|}~ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneICreate 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 raised2Set 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.,-./01234 ,-./01234  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneV @ABRYZ[\]gioqrstvwxyz{|V @ABrsvR[ZY]\tgoqiwxyz{|  BSD-style&Nicolas DI PRIMA <nicolas@di-prima.fr> experimentalunixNone This 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 refRepresents 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.6This is a blob description at a given state (revision)Prepresents a blob's content (i.e., the content of a file at a given reference).Text file's linesBinary contentDgenerate 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 = accoA default Diff getter which returns all diff information (Mode, Content and Binary) with a context of 5 lines. (getDiff = getDiffWith (defaultDiff 5) []A 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 0 are equal if they have the same filename, i.e., 7((BlobState x _ _ _) == (BlobState y _ _ _)) = (x == y)756781diff helper (State -> accumulator -> accumulator) accumulator%commit reference (the original state) commit reference (the new state) repositoryNumber of line for context AccumulatorAccumulator with a new content9//56789 BSD-style&Nicolas DI PRIMA <nicolas@di-prima.fr> experimentalunixNone9;OT%ReadOnly operations on a given commitNBasic 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.%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 lreplace the Commit's Authorreplace the Commit's Committerreplace the Commit's Parentsreplace the Commit's Extrasreplace the Commit's encoding8replace the Commit's message with the new given message..add a new file in in the Commit's Working Tree-delete a file from the Commit's Working Tree.+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" r&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:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY9the commit Ref, Revision ("master", "HEAD^^" or a ref...)Z[\]^_`abcdefghijk(the commit revision or reference to openlmnopqrst8by 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)&the default Author and Committer (see )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 @ABR8R @ABX:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstu !""##$%&'()*+,-./012345678899:;<=>?@ABCDEFGHIJKLMNOPQRSTUUVWXYYZ[\]^_`abcdefghijklmnopqrstuvwxyyz{|}~      !"#$%&'()*+,-../0123456789:;<=>? @ @ A B C D E F G H I J K L M N O P Q RSSTUVV W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                            }|~t_`:      !"#$$%&'&'&()*)+),)-./.0.0.1.2.2.3.4.4.5.6.6.7.8.8.9.:.:.;.<.<.=.>.>.?.@.@.ABCBDEFGHIJKLMNOPQRSTUVWXYYZ[\]^_`abcdefghijklkmknkokpqrsqrtqruqrvqrwqrxqryqrzqr{qr|qr}qr~qr~         W          !"#$%&'( ) * + , -.//01234567889:;<<=>?@nlABCDEFGHIJKLMNOPQRSTUVWXYZ[\] git-0.2.1-LVauWE78aDP6WP58k0RXmzData.Git.Revision Data.Git.RefData.Git.NamedData.Git.Storage.PackIndexData.Git.DeltaData.Git.TypesData.Git.Storage.ObjectData.Git.Storage.LooseData.Git.Storage.PackData.Git.RepositoryData.Git.StorageData.Git Data.Git.DiffData.Git.MonadData.Git.InternalData.Git.Imports Data.Git.OSData.Git.Storage.FileWriterData.Git.Parser Data.Git.PathData.Git.Storage.CacheFileData.Git.Storage.FileReaderData.Git.ConfigData.Git.WorkTreebase Data.String fromString&cryptonite-0.24-8SrWtpeP95r40BYGnuSBeBCrypto.Hash.SHA1SHA1Crypto.Hash.TypeshashDigestSize HashAlgorithmRevisionNotFoundRevision RevModifier RevModParentRevModParentFirstN RevModAtType RevModAtDate RevModAtN $fMonadStream$fAlternativeStream$fApplicativeStream$fFunctorStream$fIsStringRevision$fShowRevision$fShowRevModifier$fEqRevModifier$fDataRevModifier $fEqRevision$fDataRevision$fShowRevisionNotFound$fEqRevisionNotFound$fDataRevisionNotFound RefNotFound RefInvalidRefisHex isHexStringfromHex fromHexStringtoHex toHexString fromBinary fromDigesttoBinary refPrefix cmpPrefixtoFilePathPartshashhashLBShashAlghashAlgFromRef$fExceptionRefNotFound$fExceptionRefInvalid $fShowRef$fEqRef$fOrdRef$fShowRefInvalid$fEqRefInvalid$fDataRefInvalid$fShowRefNotFound$fEqRefNotFound PackedRefs packedRemotes packedBranchs packedTagsRefName refNameRaw RefContentTy RefDirectRefLinkRefContentUnknown RefSpecTyRefHead RefOrigHead RefFetchHead RefBranchRefTag RefRemote RefPatchesRefStashRefOtherreadPackedRefslooseHeadsList looseTagsListlooseRemotesList existsRefFile writeRefFile readRefFile$fIsStringRefName $fShowRefName $fEqRefName $fOrdRefName$fShowRefSpecTy $fEqRefSpecTy$fOrdRefSpecTy$fShowRefContentTy$fEqRefContentTy PackIndexpackIndexSha1s packIndexCRCspackIndexPackoffspackIndexPackChecksumpackIndexChecksumPackIndexHeaderpackIndexEnumerate packIndexOpenpackIndexClose withPackIndexpackIndexHeaderGetNbWithPrefixpackIndexGetReferenceLocation packIndexGetReferencesWithPrefixpackIndexReadHeaderpackIndexGetHeader packIndexRead$fShowPackIndexHeader$fEqPackIndexHeaderDeltaCmd DeltaCopyDeltaSrcDelta deltaParse deltaRead deltaApply$fShowDeltaCmd $fEqDeltaCmd $fShowDelta $fEqDeltaDeltaRefDeltaOfsTagtagRef tagObjectTypetagBlobtagNametagS CommitExtracommitExtraKeycommitExtraValueCommit commitTreeish commitParents commitAuthorcommitCommittercommitEncoding commitExtras commitMessageBlobblobGetContentTree treeGetEntsPerson personName personEmail personTimeTreeEntEntPathEntNameFilePermissions getOwnerPerm getGroupPerm getOtherPermObjectFileTypeFileTypeDirectoryFileTypeRegularFileFileTypeSymbolicLinkFileTypeGitLinkModePermGitTime gitTimeUTCgitTimeTimezone ObjectTypeTypeTreeTypeBlob TypeCommitTypeTag TypeDeltaOff TypeDeltaRefgitTimegitTimeToLocal getPermission getFiletypeentName entPathAppend $fMonoidTree$fByteableEntName$fIsStringEntName $fShowEntName$fEnumObjectType $fShowGitTime $fTimeGitTime$fTimeableGitTime$fShowObjectType$fEqObjectType$fDataObjectType $fEqGitTime$fShowModePerm $fEqModePerm$fShowObjectFileType$fEqObjectFileType$fShowFilePermissions$fEqFilePermissions $fEqEntName $fOrdEntName $fShowPerson $fEqPerson $fShowTree$fEqTree $fShowBlob$fEqBlob$fShowCommitExtra$fEqCommitExtra $fShowCommit $fEqCommit $fShowTag$fEqTag$fShowDeltaOfs $fEqDeltaOfs$fShowDeltaRef $fEqDeltaRef ObjectablegetTypegetRawisDeltatoObjectObject ObjCommitObjTagObjBlobObjTree ObjDeltaOfs ObjDeltaRef ObjectInfooiHeaderoiDataoiChains ObjectData ObjectHeader ObjectPtrPtrRefPtrOfsObjectLocationNotFoundLoosePacked objectToTypeobjectTypeMarshallobjectTypeUnmarshallobjectTypeIsDelta objectIsDelta objectToTreeobjectToCommit objectToTag objectToBlob treeParse blobParse commitParsetagParseobjectParseTreeobjectParseCommitobjectParseTagobjectParseBlobobjectWriteHeader objectWrite objectHash$fObjectableDeltaRef$fObjectableDeltaOfs$fObjectableTree$fObjectableTag$fObjectableCommit$fObjectableBlob$fShowObjectLocation$fEqObjectLocation$fShowObjectPtr $fEqObjectPtr$fShowObjectInfo$fEqObjectInfo $fShowObject $fEqObjectZipped getZippedDatalooseUnmarshalllooseUnmarshallZippedlooseUnmarshallRawlooseUnmarshallZippedRaw looseReadRawlooseReadHeader looseRead looseExistslooseEnumeratePrefixeslooseEnumerateWithPrefixFilterlooseEnumerateWithPrefix looseMarshalllooseWriteBlobFromFile looseWrite $fShowZipped $fEqZippedPackedObjectInfopoiType poiOffsetpoiSize poiActualSizepoiExtraPackedObjectRaw packEnumeratepackOpen packClosepackReadHeaderpackReadMapAtOffsetpackReadAtOffsetpackReadRawAtOffsetpackEnumerateObjectspackedObjectToObjectpackObjectFromRaw$fShowPackedObjectInfo$fEqPackedObjectInfoSection sectionName sectionKVsConfigGit gitRepoPath packedNamedconfigsopenRepo closeRepo findRepoMaybefindRepowithRepowithCurrentRepoisRepoinitRepogetDescriptionsetDescriptioniterateIndexes findReferencefindReferencesWithPrefixgetObjectRawAt getObjectRaw getObjectType getObjectAt getObject getObject_ setObjectHTreeHTreeEntTreeDirTreeFilegetCommitMaybe getCommit getTreeMaybegetTreeresolveRevisionresolveTreeishrewrite buildHTree resolvePath branchWrite branchListtagWritetagListheadSetheadGet configGetAll configGet$fExceptionInvalidType$fShowInvalidType$fEqInvalidTypeEntType EntDirectoryEntFile EntExecutableWorkTree workTreeNew workTreeFromworkTreeDelete workTreeSet workTreeFlushGitDiff 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 defaultDiff $fOrdTextLine $fEqTextLine $fEqBlobState$fShowBlobContent$fShowBlobStateCommitM CommitAccessMGitMGitMonadgetGitliftGit Resolvableresolve headResolv getAuthor getCommitter getParents getExtras getEncoding getMessagegetFilegetDir withCommit setAuthor setCommitter setParents setExtras setEncoding setMessagesetFile deleteFile withNewCommit withBranch$fGitMonadCommitM$fMonadCommitM$fApplicativeCommitM$fFunctorCommitM$fGitMonadCommitAccessM$fMonadCommitAccessM$fApplicativeCommitAccessM$fFunctorCommitAccessM$fGitMonadGitM $fMonadGitM$fApplicativeGitM $fFunctorGitM$fResolvableRefName$fResolvable[]$fResolvableRevision$fResolvableRefStream runStream revFromStringprefixeatRetbe32be16 Control.MonadguardGHC.BasejoinMonad>>=>>returnfailFunctorfmap<$ Applicativepure<*>*><*Data.TraversablemapMsequenceMonoidmemptymappendmconcatmfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMforMControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConst Data.Foldablemsum sequence_forM_mapM_ Data.Monoid<>DualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductFirstgetFirstLastgetLastAltgetAlt Data.Functorvoid<$>apliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA2liftA<**> Alternativeempty<|>somemany MonadPlusmzeromplusMTime LocalPathlistDirectoryFilenamecreateParentDirectory readTextFile writeTextFiletimeZerogetMTime getEnvAsPathlocalPathDecodelocalPathEncodereadBinaryFilewriteBinaryFilereadBinaryFileLazyGHC.IO.Handle.TypesHandle GHC.IO.HandlehClose GHC.IO.IOModeIOModeReadMode WriteMode AppendMode ReadWriteMode-system-fileio-0.3.16.3-EJMmBrEv28Z3dSDVZShJyy Filesystem writeFilereadFilewithFileopenFilegetSizegetHomeDirectorygetWorkingDirectory removeFile listDirectorycreateDirectoryrename isDirectoryisFile/system-filepath-0.4.13.4-CNHF84uxo6FCOjueFgn6BeFilesystem.Path.CurrentOSvalidFilesystem.Path stripPrefixabsoluteparent FileWriter writerHandle writerDeflate writerDigestdefaultCompressionmodifyIORefStrict fileWriterNewwithFileWriter postDeflatefileWriterOutputfileWriterClosefileWriterGetDigestParservlfword32ref referenceBin referenceHextakeDigestSizedecimalstring maybeParsemaybeParseChunkstoMaybe eitherParseeitherParseChunkstoEithertakeUntilASCIItillEOLskipEOL skipASCIIasciiEOLisByte takeWhile1%memory-0.14.10-JEjqKJkT6ez5AJMammuE12Data.ByteArray.ParsetakeAll takeWhiletakebytesbyteanyBytehasMoreparse parseFeedResult ParseMore ParseFailParseOK configPath headsPathtagsPath remotesPathpackedRefsPathheadPathtagPath remotePath specialPath remoteEntPath packDirPath indexPathpackPath objectPathobjectPathOfRefobjectTemporaryPathlistRefsisValidRefNametoRefTy fromRefTytoPath consumeHexRef CacheFile cacheFilepath cacheRefresh cacheIniVal cacheLock newCacheVal getCacheVal tryGetMTimefileReaderSeekfileReaderParsefileReaderGetVLFInflateException FileReaderfbHandle fbUseInflate fbInflate fbRemainingfbPos fileReaderNewfileReaderClosewithFileReaderwithFileReaderDecompressfileReaderGetNextfileReaderGetPosfileReaderFill fileReaderGetfileReaderGetLBSfileReaderGetBSfileReaderGetReffileReaderInflateToSize inflateNew inflateToSize$fExceptionInflateExceptionpackIndexHeaderGetSizepackIndexHeaderByteSizepackIndexHeaderFoldRefpackIndexOffsetsparsePackIndexHeaderPermoctalmodeperm parsePersonascii asciiChar treeWrite commitWriteeol blobWrite writeName HeaderType HeaderTree HeaderTag HeaderCommit HeaderBlobreadZippedFiledezipisObjectPrefix parseHeaderparseTreeHeaderparseTagHeaderparseCommitHeaderparseBlobHeader parseLength parseObjectgetDirectoryContents getNextObjectgetNextObjectRawget parseConfigreadConfigPath readConfigreadGlobalConfig listSectionsCachedPackedRef indexReaders packReadersPackIndexReaderreadRawFromPack readFromPack InvalidTypemapJustMTreeStTreeRef TreeLoadedTreeVarDir loadTreeVar entTypeToPerm loadOrGetTree diveFromRootGitAccu AccuBottomAccuTopbuildListForDiffdiffGetContext runCommitM CommitContextcommitContextAuthorcommitContextCommittercommitContextParentscommitContextExtrascommitContextEncodingcommitContextMessagecommitContextTreerunCommitAccessMCommitAccessContextcommitAccessContextCommitcommitAccessContextRefrunGitM GitContext gitContextGit ResultSuccess ResultFailurerevisionFromString resolvPathfmapGitM returnGitM appendGitMbindGitMfailGitMgetGitMliftGitM executeGitMfmapCommitAccessMreturnCommitAccessMappendCommitAccessMbindCommitAccessMfailCommitAccessMgetCommitAccessMliftCommitAccessMwithCommitAccessContextgetContextRef_getContextObject_ fmapCommitM returnCommitM appendCommitM bindCommitM failCommitM getCommitM liftCommitMcommitUpdateContextsetContextObject_