Initial commit

Co-Authored-By: Eric Tuvesson <eric.tuvesson@gmail.com>
Co-Authored-By: mikaeltellhed <2311083+mikaeltellhed@users.noreply.github.com>
Co-Authored-By: kotte <14197736+mrtamagotchi@users.noreply.github.com>
Co-Authored-By: Anders Larsson <64838990+anders-topp@users.noreply.github.com>
Co-Authored-By: Johan  <4934465+joolsus@users.noreply.github.com>
Co-Authored-By: Tore Knudsen <18231882+torekndsn@users.noreply.github.com>
Co-Authored-By: victoratndl <99176179+victoratndl@users.noreply.github.com>
This commit is contained in:
Michael Cartner
2024-01-26 11:52:55 +01:00
commit b9c60b07dc
2789 changed files with 868795 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
// This is the models used by Noold right now
import { ICloneProgress } from "./core/models/progress";
import { FileStatusKind } from "./core/models/status";
export type GitUserInfo = {
name: string;
email: string;
};
export type GitStatus = {
status: "new" | "modified" | "deleted" | "conflicted";
path: string;
};
export function ConvertStatusKindToGitStatus(
x: FileStatusKind
): GitStatus["status"] {
switch (x) {
case FileStatusKind.New:
return "new";
case FileStatusKind.Modified:
return "modified";
case FileStatusKind.Deleted:
return "deleted";
case FileStatusKind.Copied:
return "modified";
case FileStatusKind.Renamed:
return "modified";
case FileStatusKind.Conflicted:
return "conflicted";
case FileStatusKind.Untracked:
return "new";
}
}
export type GitCommit = {
sha: string;
shortSha: string;
message: string;
date: Date;
parentCount: number;
author: {
name: string;
email: string;
};
isLocalAhead: boolean;
isRemoteAhead: boolean;
};
export type GitBranch = {
name: string;
local: boolean;
remote: boolean;
};
export type GitCloneOptions = {
url: string;
directory: string;
/** Clone a single branch; this if only for testing. */
singleBranch?: boolean;
onProgress?: (progress: ICloneProgress) => void;
};
export class GitEmptyRepositoryError extends Error {
constructor() {
super("The repository you're trying to clone is empty.");
}
}