E      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                    ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D   BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneEFGHEFGHEFGH BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneM IJKLMNOPQRSTKRSIJKLMNOPQRST BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone+U:seek in a handle, and reset the remaining buffer to empty.Vparse from a filebufferWOget a Variable Length Field. get byte as long as MSB is set, and one byte afterXYZ[\]^_`abcdefghijUVWklmn ZabcdfhijUVWkXYZ[\]^_`abcdefghijUVWklmn BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNonepossible commands in a deltaDa 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.     BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunix Safe-Inferred+ ;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 @{n} accessor@{date} accessor@{type} accessorparent accessor ~ nparent accessor ^ n and ^ opqr     opqr BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone+Reference 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 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 string!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 references !"#$%&'tuv !"#$%&'!" #$%&'s !"#$%&'tuv BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone+(Delta pointing to a ref.*Delta pointing to an offset.,Represent a signed tag.7Represent a commit object.@Represent a binary blob.C5Represent a root tree with zero to many tree entries.F2an 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)Krepresent 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.wa bitfield representing a typical unix permission: * bit 0 represents the read permission * bit 1 represents the write permission * bit 2 represents the execute permissionL<traditional unix permission for owner, group and permissionsQGit object file typeXdGit time is number of seconds since unix epoch in the UTC zone with the current timezone associated\type of a git object.x:the enum instance is useful when marshalling to pack file.E()*+,-./0123456789:;<=>?@ABCDEFGHIJKwLMNOPQRSTUVWXYZ[\]^_`abcdefyxz{|?()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef?\ba`_^]CDE789:;<=>?3456@AB,-./012FGHIJVWLMNOPQUTSRefXYZ[cd*+()K()*+,-./0123456789:;<=>?@ABCDEFGHIJKwLMNOPQUTSRVWXYZ[\ba`_^]cdefyxz{| BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneldescribe 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.stRaw objects infos have an header (type, size, ptr), the data and a pointers chains to parents for resolved objects.zsDelta 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 contentBghijklmnopqrstuvwxyz{|}~}~5\]^_`abghijklmnopqrstuvwxyz{|}~5}~\ba`_^]yxz|{lrqponmstuvwghijk/ghijklrqponmstuvwxyz|{}~}~ BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneMcontent of a ref file.Represent a named specifier.Mlist all the loose refs available recursively from a directory starting point&  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone   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 M 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> experimentalunixNoneMUrepresent 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 +M6Exception when trying to convert an object pointed by  to a type that is differentJhierarchy 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 tree get a specified tree but raise ^try to resolve a string to a specific commit ref for example: HEAD, HEAD^, master~3, shortRef Ireturns 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 Config     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                  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneH,-./0123456789:;<=>?@ABCDEFGHIJLMNOPQRSTUVWXefk    H789:;<=>?FGHIJ3456CDE@AB,-./012XVWQUTSRLMNOPef    k  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 ref5Represents 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.96This 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).@Binary contentAText file's linesBDgenerate 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 = accCoA default Diff getter which returns all diff information (Mode, Content and Binary) with a context of 5 lines. (getDiff = getDiffWith (defaultDiff 5) []DA 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 90 are equal if they have the same filename, i.e., 7((BlobState x _ _ _) == (BlobState y _ _ _)) = (x == y)7 !"#$%&'()*+,-./0123456789:;<=>?@AB1diff helper (State -> accumulator -> accumulator) accumulator%commit reference (the original state) commit reference (the new state) repositoryCDNumber of line for context AccumulatorAccumulator with a new content/ !"#$%&'()*+,-./0123456789:;<=>?@ABCD/?A@9:;<=>5876B&-,+*)('.0/ !%$#"1234DC !%$#"&-,+*)('.0/123458769:;<=>?A@BCD     !!"#$%&'(())*+,-./012345678899::;<=>?@@ABCCDEFGHIJKKLMMNOOPQRSTTUVWXYZ[\]]^^_`abcdefghijklmnopqrstuvwxxyz{|}~                               ! " # $ % & ' ( ) * + , - - . / 0 1 2 3 4 4 5 6 7 8 9 : ; < = > ? @ A BCCDDEFGHIJKLMNOPPQQRSTUVWXYZ[\]^_`abcdefgh*ijklmnopqrstuvwxyz{|}~                        hit-0.6.2Data.Git.RevisionData.Git.Storage.LooseData.Git.Delta Data.Git.RefData.Git.TypesData.Git.Storage.ObjectData.Git.NamedData.Git.RepositoryData.Git.Storage.PackIndexData.Git.Storage.PackData.Git.Storage Data.Git.DiffData.Git.InternalData.Git.Storage.CacheFileData.Git.Storage.FileReader Data.Git.PathData.Git.ConfigData.Git.Storage.FileWriterData.Gitbase Data.String fromStringZipped getZippedDataDeltaCmdDeltaSrc DeltaCopyDelta deltaParse deltaRead deltaApplyRevisionNotFoundRevision RevModifier RevModAtN RevModAtDate RevModAtTypeRevModParentFirstN RevModParent RefNotFound RefInvalidRefisHex isHexStringfromHex fromHexStringtoHex toHexString fromBinarytoBinary refPrefix cmpPrefixtoFilePathPartshashhashLBSDeltaRefDeltaOfsTagtagRef tagObjectTypetagBlobtagNametagS CommitExtracommitExtraKeycommitExtraValueCommit commitTreeish commitParents commitAuthorcommitCommittercommitEncoding commitExtras commitMessageBlobblobGetContentTree treeGetEntsPerson personName personEmail personTimeTreeEntFilePermissions getOwnerPerm getGroupPerm getOtherPermObjectFileTypeFileTypeGitLinkFileTypeSymbolicLinkFileTypeRegularFileFileTypeDirectoryModePermGitTime gitTimeUTCgitTimeTimezone ObjectType TypeDeltaRef TypeDeltaOffTypeTag TypeCommitTypeBlobTypeTreegitTimegitTimeToLocal getPermission getFiletype ObjectablegetTypegetRawisDeltatoObjectObject ObjDeltaRef ObjDeltaOfsObjTreeObjBlobObjTag ObjCommit ObjectInfooiHeaderoiDataoiChains ObjectData ObjectHeader ObjectPtrPtrOfsPtrRefObjectLocationPackedLooseNotFound objectToTypeobjectTypeMarshallobjectTypeUnmarshallobjectTypeIsDelta objectIsDelta objectToTreeobjectToCommit objectToTag objectToBlob treeParse blobParse commitParsetagParseobjectParseTreeobjectParseCommitobjectParseTagobjectParseBlobobjectWriteHeader objectWrite objectHash PackedRefs packedRemotes packedBranchs packedTagsRefName refNameRaw RefContentTyRefContentUnknownRefLink RefDirect RefSpecTyRefOtherRefStash RefPatches RefRemoteRefTag RefBranch RefFetchHead RefOrigHeadRefHeadreadPackedRefslooseHeadsList looseTagsListlooseRemotesList existsRefFile writeRefFile readRefFileSection sectionName sectionKVsConfig PackIndexpackIndexSha1s packIndexCRCspackIndexPackoffspackIndexPackChecksumpackIndexChecksumPackIndexHeaderpackIndexEnumerate packIndexOpenpackIndexClose withPackIndexpackIndexHeaderGetNbWithPrefixpackIndexGetReferenceLocation packIndexGetReferencesWithPrefixpackIndexReadHeaderpackIndexGetHeader packIndexReadPackedObjectInfopoiType poiOffsetpoiSize poiActualSizepoiExtraPackedObjectRaw packEnumeratepackOpen packClosepackReadHeaderpackReadMapAtOffsetpackReadAtOffsetpackReadRawAtOffsetpackEnumerateObjectspackedObjectToObjectpackObjectFromRawlooseUnmarshalllooseUnmarshallZippedlooseUnmarshallRawlooseUnmarshallZippedRaw looseReadRawlooseReadHeader looseRead looseExistslooseEnumeratePrefixeslooseEnumerateWithPrefixFilterlooseEnumerateWithPrefix looseMarshalllooseWriteBlobFromFile looseWriteGit gitRepoPath packedNamedopenRepo closeRepo findRepoMaybefindRepowithRepowithCurrentRepoisRepoinitRepogetDescriptionsetDescriptioniterateIndexes findReferencefindReferencesWithPrefixgetObjectRawAt getObjectRaw getObjectType getObjectAt getObject getObject_ setObjectHTreeHTreeEntTreeFileTreeDirgetCommitMaybe getCommit getTreeMaybegetTreeresolveRevisionresolveTreeishrewrite buildHTree resolvePath branchWrite branchListtagWritetagListheadSetheadGet configReadHitDiff hFileName hFileContent hFileModehFileRef HitFileRef UnModifiedRef ModifiedRefOldRefNewRef HitFileModeUnModifiedMode ModifiedModeOldModeNewModeHitFileContentUnModifiedFile ModifiedFileModifiedBinaryFile OldTextFile NewTextFile OldBinaryFile NewBinaryFile FilteredDiff Separator NormalLineTextLine lineNumber lineContent BlobStateDiff OldAndNewOnlyNewOnlyOld BlobState bsFilenamebsModebsRef bsContent BlobContent BinaryContent FileContent getDiffWithgetDiff defaultDiffbe32be16readZippedFiledezipMTime CacheFile cacheFilepath cacheRefresh cacheIniVal cacheLocktimeZero newCacheVal getCacheValgetMTimefileReaderSeekfileReaderParsefileReaderGetVLFInflateException FileReaderfbHandle fbUseInflate fbInflate fbRemainingfbPos fileReaderNewfileReaderClosewithFileReaderwithFileReaderDecompressfileReaderGetNextfileReaderGetPosfileReaderFill fileReaderGetfileReaderGetLBSfileReaderGetBSfileReaderInflateToSize inflateNew inflateToSize$fExceptionInflateException revFromString$fIsStringRevision$fShowRevision$fShowRevModifier$fExceptionRefNotFound$fExceptionRefInvalid $fShowRefPerm$fEnumObjectType $fMonoidTree $fShowGitTime $fTimeGitTime$fTimeableGitTimeoctalmodepermtillEOLskipEOLskipChar referenceHex referenceBin parsePerson treeWrite commitWriteeol blobWrite writeName$fObjectableDeltaRef$fObjectableDeltaOfs$fObjectableTree$fObjectableTag$fObjectableCommit$fObjectableBlob configPath headsPathtagsPath remotesPathpackedRefsPathheadPathtagPath remotePath specialPath remoteEntPath packDirPath indexPathpackPath objectPathobjectPathOfRefobjectTemporaryPathlistRefsisValidRefNameisValidRefFilepath pathDecode pathEncodetoRefTy fromRefTytoPath$fIsStringRefName parseConfigreadConfigPath readConfigpackIndexHeaderGetSizepackIndexHeaderByteSizepackIndexHeaderFoldRefpackIndexOffsetsparsePackIndexHeader getNextObjectgetNextObjectRaw FileWriter writerHandle writerDeflate writerDigestdefaultCompressionmodifyIORefStrict fileWriterNewwithFileWriter postDeflatefileWriterOutputfileWriterClosefileWriterGetDigestisObjectPrefixdecimal parseHeaderparseTreeHeaderparseTagHeaderparseCommitHeaderparseBlobHeader parseTreeparseTag parseCommit parseBlob parseObjectgetDirectoryContentsCachedPackedRef indexReaders packReadersPackIndexReaderreadRawFromPack readFromPack InvalidTypemapJustM$fExceptionInvalidType $fEqBlobState HitwebAccuAccuTop AccuBottombuildListForDiffdiffGetContext $fOrdTextLine $fEqTextLine