mirror of
https://github.com/grdl/git-get.git
synced 2026-02-07 02:05:37 +00:00
Update help commands and errors messages
This commit is contained in:
@@ -35,6 +35,7 @@ type CloneOpts struct {
|
||||
IgnoreExisting bool
|
||||
}
|
||||
|
||||
// Clone clones repository specified in CloneOpts.
|
||||
func Clone(opts *CloneOpts) (*Repo, error) {
|
||||
var progress io.Writer
|
||||
if !opts.Quiet {
|
||||
@@ -82,25 +83,27 @@ func Clone(opts *CloneOpts) (*Repo, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return nil, errors.Wrap(err, "Failed cloning repo")
|
||||
return nil, errors.Wrapf(err, "failed cloning %s", opts.URL.String())
|
||||
}
|
||||
|
||||
return New(repo, opts.Path), nil
|
||||
}
|
||||
|
||||
func Open(repoPath string) (*Repo, error) {
|
||||
repo, err := git.PlainOpen(repoPath)
|
||||
// Open opens a repository on a given path.
|
||||
func Open(path string) (*Repo, error) {
|
||||
repo, err := git.PlainOpen(path)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "Failed opening repo")
|
||||
return nil, errors.Wrapf(err, "failed opening repo %s", path)
|
||||
}
|
||||
|
||||
return New(repo, repoPath), nil
|
||||
return New(repo, path), nil
|
||||
}
|
||||
|
||||
func New(repo *git.Repository, repoPath string) *Repo {
|
||||
// New returns a new Repo instance from a given go-git Repository.
|
||||
func New(repo *git.Repository, path string) *Repo {
|
||||
return &Repo{
|
||||
Repository: repo,
|
||||
Path: repoPath,
|
||||
Path: path,
|
||||
Status: &RepoStatus{},
|
||||
}
|
||||
}
|
||||
@@ -109,13 +112,13 @@ func New(repo *git.Repository, repoPath string) *Repo {
|
||||
func (r *Repo) Fetch() error {
|
||||
remotes, err := r.Remotes()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed getting remotes")
|
||||
return errors.Wrapf(err, "failed getting remotes of repo %s", r.Path)
|
||||
}
|
||||
|
||||
for _, remote := range remotes {
|
||||
err = remote.Fetch(&git.FetchOptions{})
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "Failed fetching remote %s", remote.Config().Name)
|
||||
return errors.Wrapf(err, "failed fetching remote %s", remote.Config().Name)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,12 +129,12 @@ func sshKeyAuth() (transport.AuthMethod, error) {
|
||||
privateKey := viper.GetString(cfg.KeyPrivateKey)
|
||||
sshKey, err := ioutil.ReadFile(privateKey)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to open ssh private key %s", privateKey)
|
||||
return nil, errors.Wrapf(err, "failed to open ssh private key %s", privateKey)
|
||||
}
|
||||
|
||||
signer, err := ssh.ParsePrivateKey([]byte(sshKey))
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "Failed to parse ssh private key %s", privateKey)
|
||||
return nil, errors.Wrapf(err, "failed to parse ssh private key %s", privateKey)
|
||||
}
|
||||
|
||||
// TODO: can it ba a different user
|
||||
@@ -139,6 +142,7 @@ func sshKeyAuth() (transport.AuthMethod, error) {
|
||||
return auth, nil
|
||||
}
|
||||
|
||||
// CurrentBranchStatus returns the BranchStatus of a currently checked out branch.
|
||||
func (r *Repo) CurrentBranchStatus() *BranchStatus {
|
||||
if r.Status.CurrentBranch == StatusDetached || r.Status.CurrentBranch == StatusUnknown {
|
||||
return nil
|
||||
|
||||
@@ -48,13 +48,13 @@ func (r *Repo) LoadStatus() error {
|
||||
if viper.GetBool(cfg.KeyFetch) {
|
||||
err := r.Fetch()
|
||||
if err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) {
|
||||
return errors.Wrap(err, "Failed fetching from remotes")
|
||||
return errors.Wrapf(err, "failed running git fetch on a repo %s", r.Path)
|
||||
}
|
||||
}
|
||||
|
||||
wt, err := r.Worktree()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed getting worktree")
|
||||
return errors.Wrapf(err, "failed getting worktree %s", r.Path)
|
||||
}
|
||||
|
||||
// worktree.Status doesn't load gitignore patterns that are defined outside of .gitignore file using excludesfile.
|
||||
@@ -62,19 +62,19 @@ func (r *Repo) LoadStatus() error {
|
||||
// TODO: variables are not expanded so if excludesfile is declared like "~/gitignore_global" or "$HOME/gitignore_global", this will fail to open it
|
||||
globalPatterns, err := gitignore.LoadGlobalPatterns(osfs.New(""))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed loading global gitignore patterns")
|
||||
return errors.Wrap(err, "failed loading global gitignore patterns")
|
||||
}
|
||||
wt.Excludes = append(wt.Excludes, globalPatterns...)
|
||||
|
||||
systemPatterns, err := gitignore.LoadSystemPatterns(osfs.New(""))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed loading system gitignore patterns")
|
||||
return errors.Wrap(err, "failed loading system gitignore patterns")
|
||||
}
|
||||
wt.Excludes = append(wt.Excludes, systemPatterns...)
|
||||
|
||||
status, err := wt.Status()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed getting worktree status")
|
||||
return errors.Wrapf(err, "failed getting status of worktree %s", r.Path)
|
||||
}
|
||||
|
||||
r.Status.HasUncommittedChanges = hasUncommitted(status)
|
||||
@@ -133,7 +133,7 @@ func currentBranch(r *Repo) string {
|
||||
func (r *Repo) loadBranchesStatus() error {
|
||||
iter, err := r.Branches()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed getting branches iterator")
|
||||
return errors.Wrapf(err, "failed getting branches iterator for repo %s", r.Path)
|
||||
}
|
||||
|
||||
err = iter.ForEach(func(reference *plumbing.Reference) error {
|
||||
@@ -146,12 +146,12 @@ func (r *Repo) loadBranchesStatus() error {
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "Failed iterating over branches")
|
||||
return errors.Wrapf(err, "failed iterating over branches of repo %s", r.Path)
|
||||
}
|
||||
|
||||
// Sort branches by name (but with "master" always at the top). It's useful to have them sorted for printing and testing.
|
||||
sort.Slice(r.Status.Branches, func(i, j int) bool {
|
||||
if r.Status.Branches[i].Name == "master" {
|
||||
if r.Status.Branches[i].Name == cfg.DefBranch {
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ func (r *Repo) newBranchStatus(branch string) (*BranchStatus, error) {
|
||||
func (r *Repo) upstream(branch string) (string, error) {
|
||||
cfg, err := r.Config()
|
||||
if err != nil {
|
||||
return "", errors.Wrap(err, "Failed getting repo config")
|
||||
return "", errors.Wrapf(err, "failed getting config of repo %s", r.Path)
|
||||
}
|
||||
|
||||
// Check if our branch exists in "branch" config sections. If not, it doesn't have an upstream configured.
|
||||
@@ -220,22 +220,22 @@ func (r *Repo) upstream(branch string) (string, error) {
|
||||
func (r *Repo) aheadBehind(localBranch string, upstreamBranch string) (ahead int, behind int, err error) {
|
||||
localHash, err := r.ResolveRevision(plumbing.Revision(localBranch))
|
||||
if err != nil {
|
||||
return 0, 0, errors.Wrapf(err, "Failed resolving revision %s", localBranch)
|
||||
return 0, 0, errors.Wrapf(err, "failed resolving revision %s", localBranch)
|
||||
}
|
||||
|
||||
upstreamHash, err := r.ResolveRevision(plumbing.Revision(upstreamBranch))
|
||||
if err != nil {
|
||||
return 0, 0, errors.Wrapf(err, "Failed resolving revision %s", upstreamBranch)
|
||||
return 0, 0, errors.Wrapf(err, "failed resolving revision %s", upstreamBranch)
|
||||
}
|
||||
|
||||
behind, err = r.revlistCount(*localHash, *upstreamHash)
|
||||
if err != nil {
|
||||
return 0, 0, errors.Wrapf(err, "Failed counting commits behind %s", upstreamBranch)
|
||||
return 0, 0, errors.Wrapf(err, "failed counting commits behind %s", upstreamBranch)
|
||||
}
|
||||
|
||||
ahead, err = r.revlistCount(*upstreamHash, *localHash)
|
||||
if err != nil {
|
||||
return 0, 0, errors.Wrapf(err, "Failed counting commits ahead of %s", upstreamBranch)
|
||||
return 0, 0, errors.Wrapf(err, "failed counting commits ahead of %s", upstreamBranch)
|
||||
}
|
||||
|
||||
return ahead, behind, nil
|
||||
|
||||
Reference in New Issue
Block a user