'use strict'; export class GitBranch { current: boolean; name: string; remote: boolean; tracking?: string; constructor(public readonly repoPath: string, branch: string, current: boolean = false, tracking?: string) { if (branch.startsWith('remotes/')) { branch = branch.substring(8); this.remote = true; } const index = branch.indexOf(' '); if (index !== -1) { branch = branch.substring(0, index); } this.current = current; this.name = branch; this.tracking = tracking; } getName(): string { return this.remote ? this.name.substring(this.name.indexOf('/') + 1) : this.name; } getRemote(): string | undefined { if (this.remote) return GitBranch.getRemote(this.name); if (this.tracking !== undefined) return GitBranch.getRemote(this.tracking); return undefined; } static getRemote(branch: string): string { return branch.substring(0, branch.indexOf('/')); } }