/* tslint:disable */ /* eslint-disable */ /* auto-generated by NAPI-RS */ export const enum DiffFlags { /** * File(s) treated as binary data. * 1 << 0 */ Binary = 1, /** * File(s) treated as text data. * 1 << 1 */ NotBinary = 2, /** * `id` value is known correct. * 1 << 2 */ ValidId = 4, /** * File exists at this side of the delta. * 1 << 3 */ Exists = 8 } /** Valid modes for index and tree entries. */ export const enum FileMode { /** Unreadable */ Unreadable = 0, /** Tree */ Tree = 1, /** Blob */ Blob = 2, /** Group writable blob. Obsolete mode kept for compatibility reasons */ BlobGroupWritable = 3, /** Blob executable */ BlobExecutable = 4, /** Link */ Link = 5, /** Commit */ Commit = 6 } export const enum Delta { /** No changes */ Unmodified = 0, /** Entry does not exist in old version */ Added = 1, /** Entry does not exist in new version */ Deleted = 2, /** Entry content changed between old and new */ Modified = 3, /** Entry was renamed between old and new */ Renamed = 4, /** Entry was copied from another old entry */ Copied = 5, /** Entry is ignored item in workdir */ Ignored = 6, /** Entry is untracked item in workdir */ Untracked = 7, /** Type of entry changed between old and new */ Typechange = 8, /** Entry is unreadable */ Unreadable = 9, /** Entry in the index is conflicted */ Conflicted = 10 } export interface DiffOptions { /** * When generating output, include the names of unmodified files if they * are included in the `Diff`. Normally these are skipped in the formats * that list files (e.g. name-only, name-status, raw). Even with this these * will not be included in the patch format. */ showUnmodified?: boolean } export const enum ObjectType { /** Any kind of git object */ Any = 0, /** An object which corresponds to a git commit */ Commit = 1, /** An object which corresponds to a git tree */ Tree = 2, /** An object which corresponds to a git blob */ Blob = 3, /** An object which corresponds to a git tag */ Tag = 4 } /** An enumeration of all possible kinds of references. */ export const enum ReferenceType { /** A reference which points at an object id. */ Direct = 0, /** A reference which points at another reference. */ Symbolic = 1, Unknown = 2 } /** An enumeration of the possible directions for a remote. */ export const enum Direction { /** Data will be fetched (read) from this remote. */ Fetch = 0, /** Data will be pushed (written) to this remote. */ Push = 1 } /** Configuration for how pruning is done on a fetch */ export const enum FetchPrune { /** Use the setting from the configuration */ Unspecified = 0, /** Force pruning on */ On = 1, /** Force pruning off */ Off = 2 } /** Automatic tag following options. */ export const enum AutotagOption { /** Use the setting from the remote's configuration */ Unspecified = 0, /** Ask the server for tags pointing to objects we're already downloading */ Auto = 1, /** Don't ask for any tags beyond the refspecs */ None = 2, /** Ask for all the tags */ All = 3 } /** * Remote redirection settings; whether redirects to another host are * permitted. * * By default, git will follow a redirect on the initial request * (`/info/refs`), but not subsequent requests. */ export const enum RemoteRedirect { /** Do not follow any off-site redirects at any stage of the fetch or push. */ None = 0, /** * Allow off-site redirects only upon the initial request. This is the * default. */ Initial = 1, /** Allow redirects at any stage in the fetch or push. */ All = 2 } /** Types of credentials that can be requested by a credential callback. */ export const enum CredentialType { /** 1 << 0 */ UserPassPlaintext = 1, /** 1 << 1 */ SshKey = 2, /** 1 << 6 */ SshMemory = 64, /** 1 << 2 */ SshCustom = 4, /** 1 << 3 */ Default = 8, /** 1 << 4 */ SshInteractive = 16, /** 1 << 5 */ Username = 32 } export interface CredInfo { credType: CredentialType url: string username: string } export interface Progress { totalObjects: number indexedObjects: number receivedObjects: number localObjects: number totalDeltas: number indexedDeltas: number receivedBytes: number } export interface PushTransferProgress { current: number total: number bytes: number } /** Check whether a cred_type contains another credential type. */ export function credTypeContains(credType: CredentialType, another: CredentialType): boolean export const enum RepositoryState { Clean = 0, Merge = 1, Revert = 2, RevertSequence = 3, CherryPick = 4, CherryPickSequence = 5, Bisect = 6, Rebase = 7, RebaseInteractive = 8, RebaseMerge = 9, ApplyMailbox = 10, ApplyMailboxOrRebase = 11 } export const enum RepositoryOpenFlags { /** Only open the specified path; don't walk upward searching. */ NoSearch = 0, /** Search across filesystem boundaries. */ CrossFS = 1, /** Force opening as bare repository, and defer loading its config. */ Bare = 2, /** Don't try appending `/.git` to the specified repository path. */ NoDotGit = 3, /** Respect environment variables like `$GIT_DIR`. */ FromEnv = 4 } export const enum CloneLocal { /** * Auto-detect (default) * * Here libgit2 will bypass the git-aware transport for local paths, but * use a normal fetch for `file://` URLs. */ Auto = 0, /** Bypass the git-aware transport even for `file://` URLs. */ Local = 1, /** Never bypass the git-aware transport */ None = 2, /** Bypass the git-aware transport, but don't try to use hardlinks. */ NoLinks = 3 } /** Orderings that may be specified for Revwalk iteration. */ export const enum Sort { /** * Sort the repository contents in no particular ordering. * * This sorting is arbitrary, implementation-specific, and subject to * change at any time. This is the default sorting for new walkers. */ None = 0, /** * Sort the repository contents in topological order (children before * parents). * * This sorting mode can be combined with time sorting. * 1 << 0 */ Topological = 1, /** * Sort the repository contents by commit time. * * This sorting mode can be combined with topological sorting. * 1 << 1 */ Time = 2, /** * Iterate through the repository contents in reverse order. * * This sorting mode can be combined with any others. * 1 << 2 */ Reverse = 4 } export class Commit { /** Get the id (SHA1) of a repository object */ id(): string /** * Get the id of the tree pointed to by this commit. * * No attempts are made to fetch an object from the ODB. */ treeId(): string /** Get the tree pointed to by this commit. */ tree(): Tree /** * * The returned message will be slightly prettified by removing any * potential leading newlines. * * `None` will be returned if the message is not valid utf-8 */ message(): string | null /** * Get the full message of a commit as a byte slice. * * The returned message will be slightly prettified by removing any * potential leading newlines. */ messageBytes(): Buffer /** * Get the encoding for the message of a commit, as a string representing a * standard encoding name. * * `None` will be returned if the encoding is not known */ messageEncoding(): string | null /** * Get the full raw message of a commit. * * `None` will be returned if the message is not valid utf-8 */ messageRaw(): string | null /** Get the full raw message of a commit. */ messageRawBytes(): Buffer /** * Get the full raw text of the commit header. * * `None` will be returned if the message is not valid utf-8 */ rawHeader(): string | null /** Get an arbitrary header field. */ headerFieldBytes(field: string): Buffer /** Get the full raw text of the commit header. */ rawHeaderBytes(): Buffer /** * Get the short "summary" of the git commit message. * * The returned message is the summary of the commit, comprising the first * paragraph of the message with whitespace trimmed and squashed. * * `None` may be returned if an error occurs or if the summary is not valid * utf-8. */ summary(): string | null /** * Get the short "summary" of the git commit message. * * The returned message is the summary of the commit, comprising the first * paragraph of the message with whitespace trimmed and squashed. * * `None` may be returned if an error occurs */ summaryBytes(): Buffer | null /** * Get the long "body" of the git commit message. * * The returned message is the body of the commit, comprising everything * but the first paragraph of the message. Leading and trailing whitespaces * are trimmed. * * `None` may be returned if an error occurs or if the summary is not valid * utf-8. */ body(): string | null /** * Get the long "body" of the git commit message. * * The returned message is the body of the commit, comprising everything * but the first paragraph of the message. Leading and trailing whitespaces * are trimmed. * * `None` may be returned if an error occurs. */ bodyBytes(): Buffer | null /** * Get the commit time (i.e. committer time) of a commit. * * The first element of the tuple is the time, in seconds, since the epoch. * The second element is the offset, in minutes, of the time zone of the * committer's preferred time zone. */ time(): Date /** Get the author of this commit. */ author(): Signature /** Get the committer of this commit. */ committer(): Signature /** * Get the number of parents of this commit. * * Use the `parents` iterator to return an iterator over all parents. */ parentCount(): bigint } /** An iterator over the diffs in a delta */ export class Deltas { [Symbol.iterator](): Iterator } export class DiffDelta { /** * Returns the flags on the delta. * * For more information, see `DiffFlags`'s documentation. */ flags(): DiffFlags /** Returns the number of files in this delta. */ numFiles(): number /** Returns the status of this entry */ status(): Delta /** * Return the file which represents the "from" side of the diff. * * What side this means depends on the function that was used to generate * the diff and will be documented on the function itself. */ oldFile(): DiffFile /** * Return the file which represents the "to" side of the diff. * * What side this means depends on the function that was used to generate * the diff and will be documented on the function itself. */ newFile(): DiffFile } export class DiffFile { /** * Returns the Oid of this item. * * If this entry represents an absent side of a diff (e.g. the `old_file` * of a `Added` delta), then the oid returned will be zeroes. */ id(): string /** * Returns the path, in bytes, of the entry relative to the working * directory of the repository. */ path(): string | null /** Returns the size of this entry, in bytes */ size(): bigint /** Returns `true` if file(s) are treated as binary data. */ isBinary(): boolean /** Returns `true` if file(s) are treated as text data. */ isNotBinary(): boolean /** Returns `true` if `id` value is known correct. */ isValidId(): boolean /** Returns `true` if file exists at this side of the delta. */ exists(): boolean /** Returns file mode. */ mode(): FileMode } export class Diff { /** * Merge one diff into another. * * This merges items from the "from" list into the "self" list. The * resulting diff will have all items that appear in either list. * If an item appears in both lists, then it will be "merged" to appear * as if the old version was from the "onto" list and the new version * is from the "from" list (with the exception that if the item has a * pending DELETE in the middle, then it will show as deleted). */ merge(diff: Diff): void /** Returns an iterator over the deltas in this diff. */ deltas(): Deltas /** Check if deltas are sorted case sensitively or insensitively. */ isSortedIcase(): boolean } export class GitObject { /** Get the id (SHA1) of a repository object */ id(): string /** Get the type of the object. */ kind(): ObjectType | null peel(kind: ObjectType): GitObject } export class Reference { /** * Ensure the reference name is well-formed. * * Validation is performed as if [`ReferenceFormat::ALLOW_ONELEVEL`] * was given to [`Reference.normalize_name`]. No normalization is * performed, however. * * ```ts * import { Reference } from '@napi-rs/simple-git' * * console.assert(Reference.is_valid_name("HEAD")); * console.assert(Reference.is_valid_name("refs/heads/main")); * * // But: * console.assert(!Reference.is_valid_name("main")); * console.assert(!Reference.is_valid_name("refs/heads/*")); * console.assert(!Reference.is_valid_name("foo//bar")); * ``` */ static isValidName(name: string): boolean /** Check if a reference is a local branch. */ isBranch(): boolean /** Check if a reference is a note. */ isNote(): boolean /** Check if a reference is a remote tracking branch */ isRemote(): boolean /** Check if a reference is a tag */ isTag(): boolean kind(): ReferenceType /** * Get the full name of a reference. * * Returns `None` if the name is not valid utf-8. */ name(): string | null /** * Get the full shorthand of a reference. * * This will transform the reference name into a name "human-readable" * version. If no shortname is appropriate, it will return the full name. * * Returns `None` if the shorthand is not valid utf-8. */ shorthand(): string | null /** * Get the OID pointed to by a direct reference. * * Only available if the reference is direct (i.e. an object id reference, * not a symbolic one). */ target(): string | null /** * Return the peeled OID target of this reference. * * This peeled OID only applies to direct references that point to a hard * Tag object: it is the result of peeling such Tag. */ targetPeel(): string | null /** * Peel a reference to a tree * * This method recursively peels the reference until it reaches * a tree. */ peelToTree(): Tree /** * Get full name to the reference pointed to by a symbolic reference. * * May return `None` if the reference is either not symbolic or not a * valid utf-8 string. */ symbolicTarget(): string | null /** * Resolve a symbolic reference to a direct reference. * * This method iteratively peels a symbolic reference until it resolves to * a direct reference to an OID. * * If a direct reference is passed as an argument, a copy of that * reference is returned. */ resolve(): Reference /** * Rename an existing reference. * * This method works for both direct and symbolic references. * * If the force flag is not enabled, and there's already a reference with * the given name, the renaming will fail. */ rename(newName: string, force: boolean, msg: string): Reference } export class Remote { /** Ensure the remote name is well-formed. */ static isValidName(name: string): boolean /** * Get the remote's name. * * Returns `None` if this remote has not yet been named or if the name is * not valid utf-8 */ name(): string | null /** * Get the remote's url. * * Returns `None` if the url is not valid utf-8 */ url(): string | null /** * Get the remote's pushurl. * * Returns `None` if the pushurl is not valid utf-8 */ pushurl(): string | null /** * Get the remote's default branch. * * The remote (or more exactly its transport) must have connected to the * remote repository. This default branch is available as soon as the * connection to the remote is initiated and it remains available after * disconnecting. */ defaultBranch(): string /** Open a connection to a remote. */ connect(dir: Direction): void /** Check whether the remote is connected */ connected(): boolean /** Disconnect from the remote */ disconnect(): void /** * Cancel the operation * * At certain points in its operation, the network code checks whether the * operation has been cancelled and if so stops the operation. */ stop(): void /** * Download new data and update tips * * Convenience function to connect to a remote, download the data, * disconnect and update the remote-tracking branches. * */ fetch(refspecs: Array, fetchOptions?: FetchOptions | undefined | null): void /** Update the tips to the new state */ updateTips(updateFetchhead: boolean, downloadTags: AutotagOption, callbacks?: RemoteCallbacks | undefined | null, msg?: string | undefined | null): void } export class RemoteCallbacks { constructor() /** * The callback through which to fetch credentials if required. * * # Example * * Prepare a callback to authenticate using the `$HOME/.ssh/id_rsa` SSH key, and * extracting the username from the URL (i.e. git@github.com:rust-lang/git2-rs.git): * * ```js * import { join } from 'node:path' * import { homedir } from 'node:os' * * import { Cred, FetchOptions, RemoteCallbacks, RepoBuilder, credTypeContains } from '@napi-rs/simple-git' * * const builder = new RepoBuilder() * const remoteCallbacks = new RemoteCallbacks() * .credentials((cred) => { * return Cred.sshKey(cred.username, null, join(homedir(), '.ssh', 'id_rsa'), null) * }) * * const fetchOptions = new FetchOptions().depth(0).remoteCallback(remoteCallbacks) * * const repo = builder.branch('master') * .fetchOptions(fetchOptions) * .clone("git@github.com:rust-lang/git2-rs.git", "git2-rs") * ``` */ credentials(callback: (arg: CredInfo) => Cred): this /** The callback through which progress is monitored. */ transferProgress(callback: (arg: Progress) => void): this /** The callback through which progress of push transfer is monitored */ pushTransferProgress(callback: (current: number, total: number, bytes: number) => void): this } export class FetchOptions { constructor() /** Set the callbacks to use for the fetch operation. */ remoteCallback(callback: RemoteCallbacks): this /** Set the proxy options to use for the fetch operation. */ proxyOptions(options: ProxyOptions): this /** Set whether to perform a prune after the fetch. */ prune(prune: FetchPrune): this /** * Set whether to write the results to FETCH_HEAD. * * Defaults to `true`. */ updateFetchhead(update: boolean): this /** * Set fetch depth, a value less or equal to 0 is interpreted as pull * everything (effectively the same as not declaring a limit depth). */ depth(depth: number): this /** * Set how to behave regarding tags on the remote, such as auto-downloading * tags for objects we're downloading or downloading all of them. * * The default is to auto-follow tags. */ downloadTags(opt: AutotagOption): this /** * Set remote redirection settings; whether redirects to another host are * permitted. * * By default, git will follow a redirect on the initial request * (`/info/refs`), but not subsequent requests. */ followRedirects(opt: RemoteRedirect): this /** Set extra headers for this fetch operation. */ customHeaders(headers: Array): this } export class ProxyOptions { constructor() /** * Try to auto-detect the proxy from the git configuration. * * Note that this will override `url` specified before. */ auto(): this /** * Specify the exact URL of the proxy to use. * * Note that this will override `auto` specified before. */ url(url: string): this } export class Cred { /** * Create a "default" credential usable for Negotiate mechanisms like NTLM * or Kerberos authentication. */ constructor() /** * Create a new ssh key credential object used for querying an ssh-agent. * * The username specified is the username to authenticate. */ static sshKeyFromAgent(username: string): Cred /** Create a new passphrase-protected ssh key credential object. */ static sshKey(username: string, publickey: string | undefined | null, privatekey: string, passphrase?: string | undefined | null): Cred /** Create a new ssh key credential object reading the keys from memory. */ static sshKeyFromMemory(username: string, publickey: string | undefined | null, privatekey: string, passphrase?: string | undefined | null): Cred /** Create a new plain-text username and password credential object. */ static userpassPlaintext(username: string, password: string): Cred /** * Create a credential to specify a username. * * This is used with ssh authentication to query for the username if none is * specified in the URL. */ static username(username: string): Cred /** Check whether a credential object contains username information. */ hasUsername(): boolean /** Return the type of credentials that this object represents. */ credtype(): CredentialType } export class Repository { static init(p: string): Repository /** * Find and open an existing repository, with additional options. * * If flags contains REPOSITORY_OPEN_NO_SEARCH, the path must point * directly to a repository; otherwise, this may point to a subdirectory * of a repository, and `open_ext` will search up through parent * directories. * * If flags contains REPOSITORY_OPEN_CROSS_FS, the search through parent * directories will not cross a filesystem boundary (detected when the * stat st_dev field changes). * * If flags contains REPOSITORY_OPEN_BARE, force opening the repository as * bare even if it isn't, ignoring any working directory, and defer * loading the repository configuration for performance. * * If flags contains REPOSITORY_OPEN_NO_DOTGIT, don't try appending * `/.git` to `path`. * * If flags contains REPOSITORY_OPEN_FROM_ENV, `open_ext` will ignore * other flags and `ceiling_dirs`, and respect the same environment * variables git does. Note, however, that `path` overrides `$GIT_DIR`; to * respect `$GIT_DIR` as well, use `open_from_env`. * * ceiling_dirs specifies a list of paths that the search through parent * directories will stop before entering. Use the functions in std::env * to construct or manipulate such a path list. */ static openExt(path: string, flags: RepositoryOpenFlags, ceilingDirs: Array): Repository /** * Attempt to open an already-existing repository at or above `path` * * This starts at `path` and looks up the filesystem hierarchy * until it finds a repository. */ static discover(path: string): Repository /** * Creates a new `--bare` repository in the specified folder. * * The folder must exist prior to invoking this function. */ static initBare(path: string): Repository /** * Clone a remote repository. * * See the `RepoBuilder` struct for more information. This function will * delegate to a fresh `RepoBuilder` */ static clone(url: string, path: string): Repository /** * Clone a remote repository, initialize and update its submodules * recursively. * * This is similar to `git clone --recursive`. */ static cloneRecurse(url: string, path: string): Repository /** * Attempt to open an already-existing repository at `path`. * * The path can point to either a normal or bare repository. */ constructor(gitDir: string) /** Retrieve and resolve the reference pointed at by HEAD. */ head(): Reference /** Tests whether this repository is a shallow clone. */ isShallow(): boolean /** Tests whether this repository is empty. */ isEmpty(): boolean /** Tests whether this repository is a worktree. */ isWorktree(): boolean /** * Returns the path to the `.git` folder for normal repositories or the * repository itself for bare repositories. */ path(): string /** Returns the current state of this repository */ state(): RepositoryState /** * Get the path of the working directory for this repository. * * If this repository is bare, then `None` is returned. */ workdir(): string | null /** * Set the path to the working directory for this repository. * * If `update_link` is true, create/update the gitlink file in the workdir * and set config "core.worktree" (if workdir is not the parent of the .git * directory). */ setWorkdir(path: string, updateGitlink: boolean): void /** * Get the currently active namespace for this repository. * * If there is no namespace, or the namespace is not a valid utf8 string, * `None` is returned. */ namespace(): string | null /** Set the active namespace for this repository. */ setNamespace(namespace: string): void /** Remove the active namespace for this repository. */ removeNamespace(): void /** * Retrieves the Git merge message. * Remember to remove the message when finished. */ message(): string /** Remove the Git merge message. */ removeMessage(): void /** List all remotes for a given repository */ remotes(): Array /** Get the information for a particular remote */ findRemote(name: string): Remote /** * Add a remote with the default fetch refspec to the repository's * configuration. */ remote(name: string, url: string): Remote /** * Add a remote with the provided fetch refspec to the repository's * configuration. */ remoteWithFetch(name: string, url: string, refspect: string): Remote /** * Create an anonymous remote * * Create a remote with the given URL and refspec in memory. You can use * this when you have a URL instead of a remote's name. Note that anonymous * remotes cannot be converted to persisted remotes. */ remoteAnonymous(url: string): Remote /** * Give a remote a new name * * All remote-tracking branches and configuration settings for the remote * are updated. * * A temporary in-memory remote cannot be given a name with this method. * * No loaded instances of the remote with the old name will change their * name or their list of refspecs. * * The returned array of strings is a list of the non-default refspecs * which cannot be renamed and are returned for further processing by the * caller. */ remoteRename(name: string, newName: string): Array /** * Delete an existing persisted remote. * * All remote-tracking branches and configuration settings for the remote * will be removed. */ remoteDelete(name: string): this /** * Add a fetch refspec to the remote's configuration * * Add the given refspec to the fetch list in the configuration. No loaded */ remoteAddFetch(name: string, refspec: string): this /** * Add a push refspec to the remote's configuration. * * Add the given refspec to the push list in the configuration. No * loaded remote instances will be affected. */ remoteAddPush(name: string, refspec: string): this /** * Add a push refspec to the remote's configuration. * * Add the given refspec to the push list in the configuration. No * loaded remote instances will be affected. */ remoteSetUrl(name: string, url: string): this /** * Set the remote's URL for pushing in the configuration. * * Remote objects already in memory will not be affected. This assumes * the common case of a single-url remote and will otherwise return an * error. * * `None` indicates that it should be cleared. */ remoteSetPushurl(name: string, url?: string | undefined | null): this /** Lookup a reference to one of the objects in a repository. */ findTree(oid: string): Tree findCommit(oid: string): Commit /** * Create a diff between a tree and the working directory. * * The tree you provide will be used for the "old_file" side of the delta, * and the working directory will be used for the "new_file" side. * * This is not the same as `git diff ` or `git diff-index * `. Those commands use information from the index, whereas this * function strictly returns the differences between the tree and the files * in the working directory, regardless of the state of the index. Use * `tree_to_workdir_with_index` to emulate those commands. * * To see difference between this and `tree_to_workdir_with_index`, * consider the example of a staged file deletion where the file has then * been put back into the working dir and further modified. The * tree-to-workdir diff for that file is 'modified', but `git diff` would * show status 'deleted' since there is a staged delete. * * If `None` is passed for `tree`, then an empty tree is used. */ diffTreeToWorkdir(oldTree?: Tree | undefined | null): Diff /** * Create a diff between a tree and the working directory using index data * to account for staged deletes, tracked files, etc. * * This emulates `git diff ` by diffing the tree to the index and * the index to the working directory and blending the results into a * single diff that includes staged deleted, etc. */ diffTreeToWorkdirWithIndex(oldTree?: Tree | undefined | null): Diff treeEntryToObject(treeEntry: TreeEntry): GitObject /** * Create new commit in the repository * * If the `update_ref` is not `None`, name of the reference that will be * updated to point to this commit. If the reference is not direct, it will * be resolved to a direct reference. Use "HEAD" to update the HEAD of the * current branch and make it point to this commit. If the reference * doesn't exist yet, it will be created. If it does exist, the first * parent must be the tip of this branch. */ commit(updateRef: string | undefined | null, author: Signature, committer: Signature, message: string, tree: Tree): string /** Create a revwalk that can be used to traverse the commit graph. */ revWalk(): RevWalk getFileLatestModifiedDate(filepath: string): number getFileLatestModifiedDateAsync(filepath: string, signal?: AbortSignal | undefined | null): Promise } export class RepoBuilder { constructor() /** * Indicate whether the repository will be cloned as a bare repository or * not. */ bare(bare: boolean): this /** * Specify the name of the branch to check out after the clone. * * If not specified, the remote's default branch will be used. */ branch(branch: string): this /** * Configures options for bypassing the git-aware transport on clone. * * Bypassing it means that instead of a fetch libgit2 will copy the object * database directory instead of figuring out what it needs, which is * faster. If possible, it will hardlink the files to save space. */ cloneLocal(cloneLocal: CloneLocal): this /** * Options which control the fetch, including callbacks. * * The callbacks are used for reporting fetch progress, and for acquiring * credentials in the event they are needed. */ fetchOptions(fetchOptions: FetchOptions): this clone(url: string, path: string): Repository } export class RevWalk { [Symbol.iterator](): Iterator /** * Reset a revwalk to allow re-configuring it. * * The revwalk is automatically reset when iteration of its commits * completes. */ reset(): this /** Set the sorting mode for a revwalk. */ setSorting(sorting: Sort): this /** * Simplify the history by first-parent * * No parents other than the first for each commit will be enqueued. */ simplifyFirstParent(): this /** * Mark a commit to start traversal from. * * The given OID must belong to a commitish on the walked repository. * * The given commit will be used as one of the roots when starting the * revision walk. At least one commit must be pushed onto the walker before * a walk can be started. */ push(oid: string): this /** * Push the repository's HEAD * * For more information, see `push`. */ pushHead(): this /** * Push matching references * * The OIDs pointed to by the references that match the given glob pattern * will be pushed to the revision walker. * * A leading 'refs/' is implied if not present as well as a trailing `/ \ * *` if the glob lacks '?', ' \ *' or '['. * * Any references matching this glob which do not point to a commitish * will be ignored. */ pushGlob(glob: string): this /** * Push and hide the respective endpoints of the given range. * * The range should be of the form `..` where each * `` is in the form accepted by `revparse_single`. The left-hand * commit will be hidden and the right-hand commit pushed. */ pushRange(range: string): this /** * Push the OID pointed to by a reference * * The reference must point to a commitish. */ pushRef(reference: string): this /** Mark a commit as not of interest to this revwalk. */ hide(oid: string): this /** * Hide the repository's HEAD * * For more information, see `hide`. */ hideHead(): this /** * Hide matching references. * * The OIDs pointed to by the references that match the given glob pattern * and their ancestors will be hidden from the output on the revision walk. * * A leading 'refs/' is implied if not present as well as a trailing `/ \ * *` if the glob lacks '?', ' \ *' or '['. * * Any references matching this glob which do not point to a commitish * will be ignored. */ hideGlob(glob: string): this /** * Hide the OID pointed to by a reference. * * The reference must point to a commitish. */ hideRef(reference: string): this } /** * A Signature is used to indicate authorship of various actions throughout the * library. * * Signatures contain a name, email, and timestamp. All fields can be specified * with `new` while the `now` constructor omits the timestamp. The * [`Repository::signature`] method can be used to create a default signature * with name and email values read from the configuration. * * [`Repository::signature`]: struct.Repository.html#method.signature */ export class Signature { /** * Create a new action signature with a timestamp of 'now'. * * See `new` for more information */ static now(name: string, email: string): Signature /** * Create a new action signature. * * The `time` specified is in seconds since the epoch, and the `offset` is * the time zone offset in minutes. * * Returns error if either `name` or `email` contain angle brackets. */ constructor(name: string, email: string, time: number) /** * Gets the name on the signature. * * Returns `None` if the name is not valid utf-8 */ name(): string | null /** * Gets the email on the signature. * * Returns `None` if the email is not valid utf-8 */ email(): string | null /** Return the time, in seconds, from epoch */ when(): number } export class Tree { /** Get the id (SHA1) of a repository object */ id(): string /** Get the number of entries listed in a tree. */ len(): bigint /** Return `true` if there is not entry */ isEmpty(): boolean /** Returns an iterator over the entries in this tree. */ iter(): TreeIter } export class TreeIter { [Symbol.iterator](): Iterator } export class TreeEntry { /** Get the id of the object pointed by the entry */ id(): string /** Get the name of a tree entry */ name(): string /** Get the filename of a tree entry */ nameBytes(): Buffer }