import { Uri } from 'vscode' ; import { GitOriginType } from './adapter/repository/index' ; import { CommitDetails } from './common/types' ; export enum BranchSelection { Current = 1 , All = 2 , Detached = 3 } export type FsUri = { scheme : string ; authority : string ; path : string ; query : string ; fragment : string ; fsPath : string ; } ; export enum RefType { Head , RemoteHead , Tag } export type Ref = { type : RefType ; name ? : string ; onRemove ? ( ) : void ; onAction ? ( name ) : void ; } ; export type Remote = { name : string ; url : string ; } ; export type Branch = { gitRoot : string ; name : string ; type : RefType ; remote : string ; remoteType : GitOriginType | undefined ; current : boolean ; } ; export type CommittedFile = { uri : FsUri ; oldUri ? : FsUri ; oldRelativePath ? : string ; relativePath : string ; status : Status ; additions ? : number ; deletions ? : number ; } ; export type AvatarResponse = { items : Avatar [ ] ; timestamp : number ; } ; export type Avatar = { login : string ; name : string ; email : string ; url ? : string ; avatarUrl ? : string ; avatarFilePath ? : Uri ; } ; export type ActionedUser = { name : string ; email : string ; } ; export type ActionedDetails = ActionedUser & { date : Date ; } ; export type LogEntriesResponse = { items : LogEntry [ ] ; count : number ; pageIndex ? : number ; pageSize ? : number ; lineNumber ? : number ; selected ? : LogEntry ; isLoading ? : boolean ; isLoadingCommit ? : string ; } ; export type LogEntries = { items : LogEntry [ ] ; count : number ; selected ? : LogEntry ; isLoading ? : boolean ; isLoadingCommit ? : string ; } ; export type LogEntry = { author ? : ActionedDetails ; committer ? : ActionedDetails ; parents : Hash [ ] ; hash : Hash ; tree : Hash ; refs : Ref [ ] ; subject : string ; body : string ; notes : string ; committedFiles ? : CommittedFile [ ] ; isLastCommit ? : boolean ; isThisLastCommitMerged ? : boolean ; } ; export type CherryPickEntry = { branch : string ; hash : string ; } ; export type Hash = { full : string ; short : string ; } ; export enum Status { Modified , Added , Deleted , Renamed , Copied , Unmerged , Unknown , Broken , TypeChanged } export const IGitService = Symbol . for ( 'IGitService' ) ; export const IOutputChannel = Symbol . for ( 'IOutputChannel' ) ; export interface IGitService { getGitRoot ( ) : string ; getGitRelativePath ( file ) : string ; getHeadHashes ( ) : { ref ? : string ; hash ? : string ; } [ ] ; getAuthors ( ) : Promise < ActionedUser [ ] > ; getDetachedHash ( ) : string | undefined ; getBranches ( withRemote ? ) : Promise < Branch [ ] > ; getCurrentBranch ( ) : string ; getRefsContainingCommit ( hash ) : Ref [ ] ; getLogEntries ( pageIndex ? , pageSize ? , branches ? , searchText ? , file ? , lineNumber ? , author ? ) : Promise < LogEntries > ; getPreviousCommitHashForFile ( hash , file ) : Promise < Hash > ; getCommit ( hash , withRefs ? ) : Promise < LogEntry | undefined > ; revertCommit ( hash ) : Promise < void > ; getCommitFile ( hash , file ) : Promise < Uri > ; getDifferences ( hash1 , hash2 ) : Promise < CommittedFile [ ] > ; cherryPick ( hash ) : Promise < void > ; reset ( hash , hard ? ) : Promise < void > ; checkout ( hash ) : Promise < void > ; createBranch ( branchName , hash ) : Promise < void > ; createTag ( tagName , hash ) : Promise < string > ; removeTag ( tagName ) : Promise < void > ; removeBranch ( tagName ) : Promise < void > ; removeRemoteBranch ( remoteBranchName ) : Promise < void > ; getOriginType ( ) : Promise < GitOriginType | undefined > ; getOriginUrl ( ) : Promise < string > ; merge ( hash ) : Promise < void > ; rebase ( hash ) : Promise < void > ; } export type CommitComparison = { leftCommit : CommitDetails ; rightCommit : CommitDetails ; differences : CommittedFile [ ] ; } ; export const IGitServiceFactory = Symbol . for ( 'IGitServiceFactory' ) ; export interface IGitServiceFactory { getIndex ( ) : number ; getService ( index ) : IGitService ; repositoryPicker ( ) : Promise < void > ; createGitService ( resource ? ) : Promise < IGitService > ; } export interface IPostMessage { requestId : string ; cmd : string ; payload : object ; error ? : string ; } export interface ISettings { branchSelection ? : BranchSelection ; branchName ? : string ; authorFilter ? : string ; pageIndex ? : number ; searchText ? : string ; file ? : string ; line ? : number ; id ? : string ; } export enum CommitInfo { ParentFullHash , ParentShortHash , RefsNames , AuthorName , AuthorEmail , AuthorDateUnixTime , CommitterName , CommitterEmail , CommitterDateUnixTime , Body , Notes , FullHash , ShortHash , TreeFullHash , TreeShortHash , Subject , NewLine }