U      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T  BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneUVWXUVWXUVWX BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNoneM YZ[\]^_`abcd[bcYZ[\]^_`abcd BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNone+e:seek in a handle, and reset the remaining buffer to empty.fparse from a filebuffergOget a Variable Length Field. get byte as long as MSB is set, and one byte afterhijklmnopqrstuvwxyzefg{|}~ jqrstvxyzefg{hijklmnopqrstuvwxyzefg{|}~ 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 ^       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 reference !"#$%&' !"#$%&'!" #$%&' !"#$%&' 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.M 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 permissionN<traditional unix permission for owner, group and permissionsSGit object file typeZdGit time is number of seconds since unix epoch in the UTC zone with the current timezone associated^type of a git object.:the enum instance is useful when marshalling to pack file.M()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijC()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijC^dcba`_CDE789:;<=>?3456@AB,-./012FGHIJMiLjXYNOPQRSWVUTghZ[\]ef*+()K()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSWVUTXYZ[\]^dcba`_efghij BSD-style#Vincent Hanquez <vincent@snarc.org> experimentalunixNonepdescribe 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.wtRaw 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 contentBklmnopqrstuvwxyz{|}~5^_`abcdklmnopqrstuvwxyz{|}~5^dcba`_}|~pvutsrqwxyz{klmno/klmnopvutsrqwxyz{|}~ 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> experimentalunixNoneMGet a configuration element in a stack of config file, starting from the top. stack of config section namekey name   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 appropriate get 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> experimentalunixNoneB!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,-./0123456789:;<=>?@ABCDEFGHIJLMNOPQRSTUVWXYZghijo  !"#$%V789:;<=>?FGHIJ3456CDE@AB,-./012ZXYMLijSWVUTNOPQRgh o !"#$%  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 refERepresents 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.I6This is a blob description at a given state (revision)OPrepresents a blob's content (i.e., the content of a file at a given reference).PBinary contentQText file's linesRDgenerate 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 = accSoA default Diff getter which returns all diff information (Mode, Content and Binary) with a context of 5 lines. (getDiff = getDiffWith (defaultDiff 5) []TA 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 I0 are equal if they have the same filename, i.e., 7((BlobState x _ _ _) == (BlobState y _ _ _)) = (x == y)7&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR1diff helper (State -> accumulator -> accumulator) accumulator%commit reference (the original state) commit reference (the new state) repositorySTNumber of line for context AccumulatorAccumulator with a new content/&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST/OQPIJKLMNEHGFR&'()*+6=<;:987>@?,0/.-15432ABCDTS&'()*+,0/.-154326=<;:987>@?ABCDEHGFIJKLMNOQPRST !!""#$%&'())**+,-./01234567899::;;<=>?@AABCDDEFGHIJKLLMNNOPPQRSTUVWWXYZ[\]^_``aabcdefghijklmnopqrstuvwxyz{|}}~                    !"# $ $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > > ? @ A B C D E E F G H I J K L M N OPQRSTTUUVWXYZ[\]^_`aabbcdefghijklmnopqrstuvwxy+z{|}~V                        hit-0.6.3Data.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.StorageData.Git Data.Git.DiffData.Git.InternalData.Git.Storage.CacheFileData.Git.Storage.FileReader Data.Git.PathData.Git.ConfigData.Git.Storage.FileWriterData.Git.WorkTreebase 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 personTimeTreeEntEntPathEntNameFilePermissions getOwnerPerm getGroupPerm getOtherPermObjectFileTypeFileTypeGitLinkFileTypeSymbolicLinkFileTypeRegularFileFileTypeDirectoryModePermGitTime gitTimeUTCgitTimeTimezone ObjectType TypeDeltaRef TypeDeltaOffTypeTag TypeCommitTypeBlobTypeTreegitTimegitTimeToLocal getPermission getFiletypeentName entPathAppend 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 packedNamedconfigsopenRepo closeRepo findRepoMaybefindRepowithRepowithCurrentRepoisRepoinitRepogetDescriptionsetDescriptioniterateIndexes findReferencefindReferencesWithPrefixgetObjectRawAt getObjectRaw getObjectType getObjectAt getObject getObject_ setObjectHTreeHTreeEntTreeFileTreeDirgetCommitMaybe getCommit getTreeMaybegetTreeresolveRevisionresolveTreeishrewrite buildHTree resolvePath branchWrite branchListtagWritetagListheadSetheadGet configGetAll configGetEntType EntExecutableEntFile EntDirectoryWorkTree workTreeNew workTreeFromworkTreeDelete workTreeSet workTreeFlushHitDiff 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$fByteableEntName$fIsStringEntName $fShowEntName $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$fIsStringRefNameget parseConfigreadConfigPath readConfigreadGlobalConfig listSectionspackIndexHeaderGetSizepackIndexHeaderByteSizepackIndexHeaderFoldRefpackIndexOffsetsparsePackIndexHeader getNextObjectgetNextObjectRaw FileWriter writerHandle writerDeflate writerDigestdefaultCompressionmodifyIORefStrict fileWriterNewwithFileWriter postDeflatefileWriterOutputfileWriterClosefileWriterGetDigestisObjectPrefixdecimal parseHeaderparseTreeHeaderparseTagHeaderparseCommitHeaderparseBlobHeader parseTreeparseTag parseCommit parseBlob parseObjectgetDirectoryContentsCachedPackedRef indexReaders packReadersPackIndexReaderreadRawFromPack readFromPack InvalidTypemapJustM$fExceptionInvalidTypeTreeSt TreeLoadedTreeRefTreeVarDir loadTreeVar entTypeToPerm loadOrGetTree diveFromRoot $fEqBlobState HitwebAccuAccuTop AccuBottombuildListForDiffdiffGetContext $fOrdTextLine $fEqTextLine