commands

package
v0.23.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2020 License: MIT Imports: 24 Imported by: 4

Documentation

Index

Constants

View Source
const CurrentBranchNameRegex = `(?m)^\*.*?([^ ]*?)\)?$`

this takes something like:

  • (HEAD detached at 264fc6f5) remotes

and returns '264fc6f5' as the second match

View Source
const SEPARATION_CHAR = "|"

Variables

This section is empty.

Functions

This section is empty.

Types

type BranchListBuilder added in v0.10.1

type BranchListBuilder struct {
	Log           *logrus.Entry
	GitCommand    *GitCommand
	ReflogCommits []*models.Commit
}

BranchListBuilder returns a list of Branch objects for the current repo

func NewBranchListBuilder added in v0.10.1

func NewBranchListBuilder(log *logrus.Entry, gitCommand *GitCommand, reflogCommits []*models.Commit) (*BranchListBuilder, error)

NewBranchListBuilder builds a new branch list builder

func (*BranchListBuilder) Build added in v0.10.1

func (b *BranchListBuilder) Build() []*models.Branch

Build the list of branches for the current repo

type CheckoutOptions added in v0.20.1

type CheckoutOptions struct {
	Force   bool
	EnvVars []string
}

Checkout checks out a branch (or commit), with --force if you set the force arg to true

type CommitListBuilder added in v0.10.1

type CommitListBuilder struct {
	Log        *logrus.Entry
	GitCommand *GitCommand
	OSCommand  *oscommands.OSCommand
	Tr         *i18n.TranslationSet
}

CommitListBuilder returns a list of Branch objects for the current repo

func NewCommitListBuilder added in v0.10.1

func NewCommitListBuilder(log *logrus.Entry, gitCommand *GitCommand, osCommand *oscommands.OSCommand, tr *i18n.TranslationSet) *CommitListBuilder

NewCommitListBuilder builds a new commit list builder

func (*CommitListBuilder) GetCommits added in v0.10.1

func (c *CommitListBuilder) GetCommits(opts GetCommitsOptions) ([]*models.Commit, error)

GetCommits obtains the commits of the current branch

func (*CommitListBuilder) MergeRebasingCommits added in v0.22.4

func (c *CommitListBuilder) MergeRebasingCommits(commits []*models.Commit) ([]*models.Commit, error)

type Conflict

type Conflict struct {
	Start  int
	Middle int
	End    int
}

Conflict : A git conflict with a start middle and end corresponding to line numbers in the file where the conflict bars appear

type FetchOptions added in v0.22.0

type FetchOptions struct {
	PromptUserForCredential func(string) string
	RemoteName              string
	BranchName              string
}

type GetCommitsOptions added in v0.20.1

type GetCommitsOptions struct {
	Limit                bool
	FilterPath           string
	IncludeRebaseCommits bool
	RefName              string // e.g. "HEAD" or "my_branch"
}

type GetStatusFileOptions added in v0.22.0

type GetStatusFileOptions struct {
	NoRenames bool
}

GetStatusFiles git status files

type GitCommand

type GitCommand struct {
	Log       *logrus.Entry
	OSCommand *oscommands.OSCommand
	Repo      *gogit.Repository
	Tr        *i18n.TranslationSet
	Config    config.AppConfigurer

	DotGitDir string

	PatchManager *patch.PatchManager

	// Push to current determines whether the user has configured to push to the remote branch of the same name as the current or not
	PushToCurrent bool
	// contains filtered or unexported fields
}

GitCommand is our main git interface

func NewDummyGitCommand added in v0.7.1

func NewDummyGitCommand() *GitCommand

NewDummyGitCommand creates a new dummy GitCommand for testing

func NewDummyGitCommandWithOSCommand added in v0.7.1

func NewDummyGitCommandWithOSCommand(osCommand *oscommands.OSCommand) *GitCommand

NewDummyGitCommandWithOSCommand creates a new dummy GitCommand for testing

func NewGitCommand

func NewGitCommand(log *logrus.Entry, osCommand *oscommands.OSCommand, tr *i18n.TranslationSet, config config.AppConfigurer) (*GitCommand, error)

NewGitCommand it runs git commands

func (*GitCommand) AbortMerge

func (c *GitCommand) AbortMerge() error

AbortMerge abort merge

func (*GitCommand) AddRemote added in v0.11.1

func (c *GitCommand) AddRemote(name string, url string) error

func (*GitCommand) AmendHead added in v0.7.1

func (c *GitCommand) AmendHead() (*exec.Cmd, error)

AmendHead amends HEAD with whatever is staged in your working tree

func (*GitCommand) AmendTo added in v0.7.1

func (c *GitCommand) AmendTo(sha string) error

AmendTo amends the given commit with whatever files are staged

func (*GitCommand) ApplyPatch added in v0.7.1

func (c *GitCommand) ApplyPatch(patch string, flags ...string) error

func (*GitCommand) BeforeAndAfterFileForRename added in v0.22.0

func (c *GitCommand) BeforeAndAfterFileForRename(file *models.File) (*models.File, *models.File, error)

func (*GitCommand) BeginInteractiveRebaseForCommit added in v0.10.1

func (c *GitCommand) BeginInteractiveRebaseForCommit(commits []*models.Commit, commitIndex int) error

BeginInteractiveRebaseForCommit starts an interactive rebase to edit the current commit and pick all others. After this you'll want to call `c.GenericMergeOrRebaseAction("rebase", "continue")`

func (*GitCommand) CatFile

func (c *GitCommand) CatFile(fileName string) (string, error)

CatFile obtains the content of a file

func (*GitCommand) CheckRemoteBranchExists added in v0.7.1

func (c *GitCommand) CheckRemoteBranchExists(branch *models.Branch) bool

CheckRemoteBranchExists Returns remote branch

func (*GitCommand) Checkout

func (c *GitCommand) Checkout(branch string, options CheckoutOptions) error

func (*GitCommand) CheckoutFile added in v0.8.1

func (c *GitCommand) CheckoutFile(commitSha, fileName string) error

CheckoutFile checks out the file for the given commit

func (*GitCommand) CherryPickCommits added in v0.7.1

func (c *GitCommand) CherryPickCommits(commits []*models.Commit) error

CherryPickCommits begins an interactive rebase with the given shas being cherry picked onto HEAD

func (*GitCommand) Commit

func (c *GitCommand) Commit(message string, flags string) (*exec.Cmd, error)

Commit commits to git

func (*GitCommand) ConfiguredPager added in v0.16.1

func (c *GitCommand) ConfiguredPager() string

func (*GitCommand) CreateFixupCommit added in v0.8.1

func (c *GitCommand) CreateFixupCommit(sha string) error

CreateFixupCommit creates a commit that fixes up a previous commit

func (*GitCommand) CreateLightweightTag added in v0.11.1

func (c *GitCommand) CreateLightweightTag(tagName string, commitSha string) error

func (*GitCommand) CurrentBranchName added in v0.7.1

func (c *GitCommand) CurrentBranchName() (string, string, error)

CurrentBranchName get the current branch name and displayname. the first returned string is the name and the second is the displayname e.g. name is 123asdf and displayname is '(HEAD detached at 123asdf)'

func (*GitCommand) DeleteBranch

func (c *GitCommand) DeleteBranch(branch string, force bool) error

DeleteBranch delete branch

func (*GitCommand) DeletePatchesFromCommit added in v0.10.1

func (c *GitCommand) DeletePatchesFromCommit(commits []*models.Commit, commitIndex int, p *patch.PatchManager) error

DeletePatchesFromCommit applies a patch in reverse for a commit

func (*GitCommand) DeleteRemoteBranch added in v0.11.1

func (c *GitCommand) DeleteRemoteBranch(remoteName string, branchName string) error

func (*GitCommand) DeleteTag added in v0.11.1

func (c *GitCommand) DeleteTag(tagName string) error

func (*GitCommand) DiscardAllFileChanges added in v0.8.1

func (c *GitCommand) DiscardAllFileChanges(file *models.File) error

DiscardAllFileChanges directly

func (*GitCommand) DiscardAnyUnstagedFileChanges added in v0.8.1

func (c *GitCommand) DiscardAnyUnstagedFileChanges() error

DiscardAnyUnstagedFileChanges discards any unstages file changes via `git checkout -- .`

func (*GitCommand) DiscardOldFileChanges added in v0.8.1

func (c *GitCommand) DiscardOldFileChanges(commits []*models.Commit, commitIndex int, fileName string) error

DiscardOldFileChanges discards changes to a file from an old commit

func (*GitCommand) DiscardUnstagedFileChanges added in v0.8.1

func (c *GitCommand) DiscardUnstagedFileChanges(file *models.File) error

DiscardUnstagedFileChanges directly

func (*GitCommand) EditRebaseTodo added in v0.7.1

func (c *GitCommand) EditRebaseTodo(index int, action string) error

EditRebaseTodo sets the action at a given index in the git-rebase-todo file

func (*GitCommand) FastForward added in v0.7.1

func (c *GitCommand) FastForward(branchName string, remoteName string, remoteBranchName string, promptUserForCredential func(string) string) error

func (*GitCommand) Fetch

func (c *GitCommand) Fetch(opts FetchOptions) error

Fetch fetch git repo

func (*GitCommand) FetchRemote added in v0.12.1

func (c *GitCommand) FetchRemote(remoteName string, promptUserForCredential func(string) string) error

func (*GitCommand) GenerateGenericRebaseTodo added in v0.7.1

func (c *GitCommand) GenerateGenericRebaseTodo(commits []*models.Commit, actionIndex int, action string) (string, string, error)

func (*GitCommand) GenericMergeOrRebaseAction added in v0.23.1

func (c *GitCommand) GenericMergeOrRebaseAction(commandType string, command string) error

GenericMerge takes a commandType of "merge" or "rebase" and a command of "abort", "skip" or "continue" By default we skip the editor in the case where a commit will be made

func (*GitCommand) GetBranchGraph

func (c *GitCommand) GetBranchGraph(branchName string) (string, error)

GetBranchGraph gets the color-formatted graph of the log for the given branch Currently it limits the result to 100 commits, but when we get async stuff working we can do lazy loading

func (*GitCommand) GetBranchGraphCmdStr added in v0.14.1

func (c *GitCommand) GetBranchGraphCmdStr(branchName string) string

func (*GitCommand) GetBranchUpstreamDifferenceCount added in v0.7.1

func (c *GitCommand) GetBranchUpstreamDifferenceCount(branchName string) (string, string)

func (*GitCommand) GetCommitDifferences added in v0.7.1

func (c *GitCommand) GetCommitDifferences(from, to string) (string, string)

GetCommitDifferences checks how many pushables/pullables there are for the current branch

func (*GitCommand) GetCommitMessage added in v0.22.0

func (c *GitCommand) GetCommitMessage(commitSha string) (string, error)

func (*GitCommand) GetConfigValue added in v0.23.1

func (c *GitCommand) GetConfigValue(key string) string

func (*GitCommand) GetCurrentBranchUpstreamDifferenceCount added in v0.7.1

func (c *GitCommand) GetCurrentBranchUpstreamDifferenceCount() (string, string)

func (*GitCommand) GetFilesInDiff added in v0.22.0

func (c *GitCommand) GetFilesInDiff(from string, to string, reverse bool, patchManager *patch.PatchManager) ([]*models.CommitFile, error)

GetFilesInDiff get the specified commit files

func (*GitCommand) GetHeadCommitMessage added in v0.20.3

func (c *GitCommand) GetHeadCommitMessage() (string, error)

Get the subject of the HEAD commit

func (*GitCommand) GetPager added in v0.16.1

func (c *GitCommand) GetPager(width int) string

func (*GitCommand) GetReflogCommits added in v0.14.1

func (c *GitCommand) GetReflogCommits(lastReflogCommit *models.Commit, filterPath string) ([]*models.Commit, bool, error)

GetReflogCommits only returns the new reflog commits since the given lastReflogCommit if none is passed (i.e. it's value is nil) then we get all the reflog commits

func (*GitCommand) GetRemoteURL added in v0.7.1

func (c *GitCommand) GetRemoteURL() string

GetRemoteURL returns current repo remote url

func (*GitCommand) GetRemotes added in v0.11.1

func (c *GitCommand) GetRemotes() ([]*models.Remote, error)

func (*GitCommand) GetStashEntries

func (c *GitCommand) GetStashEntries(filterPath string) []*models.StashEntry

GetStashEntries stash entries

func (*GitCommand) GetStatusFiles

func (c *GitCommand) GetStatusFiles(opts GetStatusFileOptions) []*models.File

func (*GitCommand) GetSubmoduleConfigs added in v0.23.1

func (c *GitCommand) GetSubmoduleConfigs() ([]*models.SubmoduleConfig, error)

func (*GitCommand) GetTags added in v0.11.1

func (c *GitCommand) GetTags() ([]*models.Tag, error)

func (*GitCommand) GetUpstreamForBranch added in v0.10.6

func (c *GitCommand) GetUpstreamForBranch(branchName string) (string, error)

func (*GitCommand) GitStatus

func (c *GitCommand) GitStatus(opts GitStatusOptions) (string, error)

func (*GitCommand) Ignore

func (c *GitCommand) Ignore(filename string) error

Ignore adds a file to the gitignore for the repo

func (*GitCommand) InteractiveRebase added in v0.7.1

func (c *GitCommand) InteractiveRebase(commits []*models.Commit, index int, action string) error

func (*GitCommand) IsBareRepo added in v0.23.1

func (c *GitCommand) IsBareRepo() bool

func (*GitCommand) IsHeadDetached added in v0.11.1

func (c *GitCommand) IsHeadDetached() bool

func (*GitCommand) IsInMergeState

func (c *GitCommand) IsInMergeState() (bool, error)

IsInMergeState states whether we are still mid-merge

func (*GitCommand) Merge

func (c *GitCommand) Merge(branchName string, opts MergeOpts) error

Merge merge

func (*GitCommand) MergeStatusFiles

func (c *GitCommand) MergeStatusFiles(oldFiles, newFiles []*models.File, selectedFile *models.File) []*models.File

MergeStatusFiles merge status files

func (*GitCommand) MoveCommitDown added in v0.7.1

func (c *GitCommand) MoveCommitDown(commits []*models.Commit, index int) error

func (*GitCommand) MovePatchToSelectedCommit added in v0.10.1

func (c *GitCommand) MovePatchToSelectedCommit(commits []*models.Commit, sourceCommitIdx int, destinationCommitIdx int, p *patch.PatchManager) error

func (*GitCommand) MoveTodoDown added in v0.7.1

func (c *GitCommand) MoveTodoDown(index int) error

MoveTodoDown moves a rebase todo item down by one position

func (*GitCommand) NewBranch

func (c *GitCommand) NewBranch(name string, base string) error

NewBranch create new branch

func (*GitCommand) PrepareCommitAmendSubProcess added in v0.2.2

func (c *GitCommand) PrepareCommitAmendSubProcess() *exec.Cmd

PrepareCommitAmendSubProcess prepares a subprocess for `git commit --amend --allow-empty`

func (*GitCommand) PrepareInteractiveRebaseCommand added in v0.7.1

func (c *GitCommand) PrepareInteractiveRebaseCommand(baseSha string, todo string, overrideEditor bool) (*exec.Cmd, error)

PrepareInteractiveRebaseCommand returns the cmd for an interactive rebase we tell git to run lazygit to edit the todo list, and we pass the client lazygit a todo string to write to the todo file

func (*GitCommand) PullPatchIntoIndex added in v0.10.1

func (c *GitCommand) PullPatchIntoIndex(commits []*models.Commit, commitIdx int, p *patch.PatchManager, stash bool) error

func (*GitCommand) PullPatchIntoNewCommit added in v0.20.3

func (c *GitCommand) PullPatchIntoNewCommit(commits []*models.Commit, commitIdx int, p *patch.PatchManager) error

func (*GitCommand) Push

func (c *GitCommand) Push(branchName string, force bool, upstream string, args string, promptUserForCredential func(string) string) error

Push pushes to a branch

func (*GitCommand) PushTag added in v0.11.1

func (c *GitCommand) PushTag(remoteName string, tagName string) error

func (*GitCommand) RebaseBranch added in v0.7.1

func (c *GitCommand) RebaseBranch(branchName string) error

RebaseBranch interactive rebases onto a branch

func (*GitCommand) RebaseMode added in v0.7.1

func (c *GitCommand) RebaseMode() (string, error)

RebaseMode returns "" for non-rebase mode, "normal" for normal rebase and "interactive" for interactive rebase

func (*GitCommand) RemoveRemote added in v0.11.1

func (c *GitCommand) RemoveRemote(name string) error

func (*GitCommand) RemoveTrackedFiles added in v0.14.3

func (c *GitCommand) RemoveTrackedFiles(name string) error

RemoveTrackedFiles will delete the given file(s) even if they are currently tracked

func (*GitCommand) RemoveUntrackedFiles added in v0.8.1

func (c *GitCommand) RemoveUntrackedFiles() error

RemoveUntrackedFiles runs `git clean -fd`

func (*GitCommand) RenameBranch added in v0.17.0

func (c *GitCommand) RenameBranch(oldName string, newName string) error

func (*GitCommand) RenameCommit

func (c *GitCommand) RenameCommit(name string) error

RenameCommit renames the topmost commit with the given name

func (*GitCommand) RenameRemote added in v0.11.1

func (c *GitCommand) RenameRemote(oldRemoteName string, newRemoteName string) error

func (*GitCommand) ResetAndClean added in v0.7.1

func (c *GitCommand) ResetAndClean() error

ResetAndClean removes all unstaged changes and removes all untracked files

func (*GitCommand) ResetHard

func (c *GitCommand) ResetHard(ref string) error

ResetHardHead runs `git reset --hard`

func (*GitCommand) ResetSoft added in v0.12.1

func (c *GitCommand) ResetSoft(ref string) error

ResetSoft runs `git reset --soft HEAD`

func (*GitCommand) ResetSubmodules added in v0.23.1

func (c *GitCommand) ResetSubmodules(submodules []*models.SubmoduleConfig) error

func (*GitCommand) ResetToCommit

func (c *GitCommand) ResetToCommit(sha string, strength string, options oscommands.RunCommandOptions) error

ResetToCommit reset to commit

func (*GitCommand) Revert added in v0.7.1

func (c *GitCommand) Revert(sha string) error

Revert reverts the selected commit by sha

func (*GitCommand) RewordCommit added in v0.7.1

func (c *GitCommand) RewordCommit(commits []*models.Commit, index int) (*exec.Cmd, error)

func (*GitCommand) SetBranchUpstream added in v0.11.1

func (c *GitCommand) SetBranchUpstream(remoteName string, remoteBranchName string, branchName string) error

func (*GitCommand) SetUpstreamBranch added in v0.10.6

func (c *GitCommand) SetUpstreamBranch(upstream string) error

func (*GitCommand) ShowCmdStr added in v0.14.1

func (c *GitCommand) ShowCmdStr(sha string, filterPath string) string

func (*GitCommand) ShowFileDiff added in v0.22.0

func (c *GitCommand) ShowFileDiff(from string, to string, reverse bool, fileName string, plain bool) (string, error)

ShowFileDiff get the diff of specified from and to. Typically this will be used for a single commit so it'll be 123abc^..123abc but when we're in diff mode it could be any 'from' to any 'to'. The reverse flag is also here thanks to diff mode.

func (*GitCommand) ShowFileDiffCmdStr added in v0.22.0

func (c *GitCommand) ShowFileDiffCmdStr(from string, to string, reverse bool, fileName string, plain bool) string

func (*GitCommand) ShowStashEntryCmdStr added in v0.14.1

func (c *GitCommand) ShowStashEntryCmdStr(index int) string

GetStashEntryDiff stash diff

func (*GitCommand) SquashAllAboveFixupCommits added in v0.8.1

func (c *GitCommand) SquashAllAboveFixupCommits(sha string) error

SquashAllAboveFixupCommits squashes all fixup! commits above the given one

func (*GitCommand) StageAll added in v0.2.0

func (c *GitCommand) StageAll() error

StageAll stages all files

func (*GitCommand) StageFile

func (c *GitCommand) StageFile(fileName string) error

StageFile stages a file

func (*GitCommand) StashDo

func (c *GitCommand) StashDo(index int, method string) error

StashDo modify stash

func (*GitCommand) StashSave

func (c *GitCommand) StashSave(message string) error

StashSave save stash TODO: before calling this, check if there is anything to save

func (*GitCommand) StashSaveStagedChanges added in v0.8.1

func (c *GitCommand) StashSaveStagedChanges(message string) error

StashSaveStagedChanges stashes only the currently staged changes. This takes a few steps shoutouts to Joe on https://stackoverflow.com/questions/14759748/stashing-only-staged-changes-in-git-is-it-possible

func (*GitCommand) SubmoduleAdd added in v0.23.1

func (c *GitCommand) SubmoduleAdd(name string, path string, url string) error

func (*GitCommand) SubmoduleBulkDeinitCmdStr added in v0.23.1

func (c *GitCommand) SubmoduleBulkDeinitCmdStr() string

func (*GitCommand) SubmoduleBulkInitCmdStr added in v0.23.1

func (c *GitCommand) SubmoduleBulkInitCmdStr() string

func (*GitCommand) SubmoduleBulkUpdateCmdStr added in v0.23.1

func (c *GitCommand) SubmoduleBulkUpdateCmdStr() string

func (*GitCommand) SubmoduleDelete added in v0.23.1

func (c *GitCommand) SubmoduleDelete(submodule *models.SubmoduleConfig) error

func (*GitCommand) SubmoduleForceBulkUpdateCmdStr added in v0.23.1

func (c *GitCommand) SubmoduleForceBulkUpdateCmdStr() string

func (*GitCommand) SubmoduleInit added in v0.23.1

func (c *GitCommand) SubmoduleInit(path string) error

func (*GitCommand) SubmoduleReset added in v0.23.1

func (c *GitCommand) SubmoduleReset(submodule *models.SubmoduleConfig) error

func (*GitCommand) SubmoduleStash added in v0.23.1

func (c *GitCommand) SubmoduleStash(submodule *models.SubmoduleConfig) error

func (*GitCommand) SubmoduleUpdate added in v0.23.1

func (c *GitCommand) SubmoduleUpdate(path string) error

func (*GitCommand) SubmoduleUpdateAll added in v0.23.1

func (c *GitCommand) SubmoduleUpdateAll() error

func (*GitCommand) SubmoduleUpdateUrl added in v0.23.1

func (c *GitCommand) SubmoduleUpdateUrl(name string, path string, newUrl string) error

func (*GitCommand) UnStageFile

func (c *GitCommand) UnStageFile(fileName string, tracked bool) error

UnStageFile unstages a file

func (*GitCommand) UnstageAll added in v0.2.0

func (c *GitCommand) UnstageAll() error

UnstageAll stages all files

func (*GitCommand) UpdateRemoteUrl added in v0.11.1

func (c *GitCommand) UpdateRemoteUrl(remoteName string, updatedUrl string) error

func (*GitCommand) WorkingTreeState added in v0.20.1

func (c *GitCommand) WorkingTreeState() string

func (*GitCommand) WorktreeFileDiff added in v0.22.0

func (c *GitCommand) WorktreeFileDiff(file *models.File, plain bool, cached bool) string

WorktreeFileDiff returns the diff of a file

func (*GitCommand) WorktreeFileDiffCmdStr added in v0.22.0

func (c *GitCommand) WorktreeFileDiffCmdStr(file *models.File, plain bool, cached bool) string

type GitStatusOptions added in v0.22.0

type GitStatusOptions struct {
	NoRenames         bool
	UntrackedFilesArg string
}

GitStatus returns the plaintext short status of the repo

type MergeOpts added in v0.22.0

type MergeOpts struct {
	FastForwardOnly bool
}

type PullRequest added in v0.7.1

type PullRequest struct {
	GitServices []*Service
	GitCommand  *GitCommand
}

PullRequest opens a link in browser to create new pull request with selected branch

func NewPullRequest added in v0.7.1

func NewPullRequest(gitCommand *GitCommand) *PullRequest

NewPullRequest creates new instance of PullRequest

func (*PullRequest) Create added in v0.7.1

func (pr *PullRequest) Create(branch *models.Branch) error

Create opens link to new pull request in browser

type RepoInformation added in v0.7.1

type RepoInformation struct {
	Owner      string
	Repository string
}

RepoInformation holds some basic information about the repo

type Service added in v0.7.1

type Service struct {
	Name           string
	PullRequestURL string
}

Service is a service that repository is on (Github, Bitbucket, ...)

func NewService added in v0.16.1

func NewService(typeName string, repositoryDomain string, siteDomain string) *Service

NewService builds a Service based on the host type

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL