import { GitOptions } from "../../types/git.js"; import { PlatformCommitOptions } from "../../config/types.js"; import { StatusResult } from "simple-git"; //#region lib/util/git/types.d.ts type GitNoVerifyOption = 'commit' | 'push'; /** * We want to make sure this is a long sha of 40 characters and not just any string */ type LongCommitSha = string & { __longCommitSha: never; }; interface StorageConfig { currentBranch?: string; defaultBranch?: string; url: string; upstreamUrl?: string | undefined; extraCloneOpts?: GitOptions; cloneSubmodules?: boolean; cloneSubmodulesFilter?: string[]; fullClone?: boolean; } interface FileAddition { /** * Addition creates new file or modifies existing one */ type: 'addition'; /** * Relative file path */ path: string; /** * File contents */ contents: string | Buffer | null; /** * The executable bit */ isExecutable?: boolean; isSymlink?: boolean; } interface FileDeletion { /** * Deletion removes the file */ type: 'deletion'; /** * Relative file path */ path: string; } type FileChange = FileAddition | FileDeletion; interface CommitFilesConfig { baseBranch?: string; branchName: string; files: FileChange[]; message: string | string[]; force?: boolean; platformCommit?: PlatformCommitOptions; /** Only needed by Gerrit platform */ prTitle?: string; /** Only needed by Gerrit platform */ autoApprove?: boolean; /** Only needed by Gerrit platform */ labels?: string[]; } interface PushFilesConfig { sourceRef: string; targetRef?: string; files: FileChange[]; pushOptions?: string[]; } interface CommitResult { parentCommitSha: LongCommitSha; commitSha: LongCommitSha; files: FileChange[]; } interface TreeItem { path: string; mode: string; type: string; sha: LongCommitSha; } type GitOperationType = /** * The `git clone` sub-command. */ 'clone' /** * The `git reset` sub-command. */ | 'reset' /** * The `git checkout` sub-command. */ | 'checkout' /** * The `git fetch` sub-command. */ | 'fetch' /** * The `git pull` sub-command. */ | 'pull' /** * The `git push` sub-command. */ | 'push' /** * The `git clean` sub-command. */ | 'clean' /** * The `git merge` sub-command. */ | 'merge' /** * The `git submodule` sub-command. */ | 'submodule' /** * The `git commit` sub-command. */ | 'commit' /** * The `git branch` sub-command. */ | 'branch' /** * Any internal "plumbing" commands * * - `git update-index` * * See also: https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain */ | 'plumbing' /** * Any other operations i.e. * * - `git add` * - `git branch` * - `git config` * - `git diff` * - `git log` * - `git ls-remote` * - `git remote` * - `git rev-parse` * - `git status` * * See also: https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain */ | 'other'; //#endregion export { CommitFilesConfig, CommitResult, FileChange, GitNoVerifyOption, GitOperationType, LongCommitSha, PushFilesConfig, type StatusResult, StorageConfig, TreeItem }; //# sourceMappingURL=types.d.ts.map