mirror of
https://github.com/golang/go
synced 2024-11-23 13:50:06 -07:00
cmd/go: handle error when git remote origin doesn't exist
- Let runOutput return the error message - When `git config ...` returns empty buffer, it means the config key is correct, but there is no corresponding value. - Return the correct error when the url of remote origin is not found. - Update error message Fixes: #10922 Change-Id: I3f8880f6717a4f079b840d1249174378d36bca1b Reviewed-on: https://go-review.googlesource.com/10475 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
258bf65d8b
commit
29ff86b05b
@ -300,22 +300,23 @@ func downloadPackage(p *Package) error {
|
||||
// Double-check where it came from.
|
||||
if *getU && vcs.remoteRepo != nil {
|
||||
dir := filepath.Join(p.build.SrcRoot, rootPath)
|
||||
if remote, err := vcs.remoteRepo(vcs, dir); err == nil {
|
||||
repo = remote
|
||||
|
||||
if !*getF {
|
||||
if rr, err := repoRootForImportPath(p.ImportPath, security); err == nil {
|
||||
repo := rr.repo
|
||||
if rr.vcs.resolveRepo != nil {
|
||||
resolved, err := rr.vcs.resolveRepo(rr.vcs, dir, repo)
|
||||
if err == nil {
|
||||
repo = resolved
|
||||
}
|
||||
}
|
||||
if remote != repo {
|
||||
return fmt.Errorf("%s is a custom import path for %s, but %s is checked out from %s", rr.root, repo, dir, remote)
|
||||
remote, err := vcs.remoteRepo(vcs, dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
repo = remote
|
||||
if !*getF {
|
||||
if rr, err := repoRootForImportPath(p.ImportPath, security); err == nil {
|
||||
repo := rr.repo
|
||||
if rr.vcs.resolveRepo != nil {
|
||||
resolved, err := rr.vcs.resolveRepo(rr.vcs, dir, repo)
|
||||
if err == nil {
|
||||
repo = resolved
|
||||
}
|
||||
}
|
||||
if remote != repo {
|
||||
return fmt.Errorf("%s is a custom import path for %s, but %s is checked out from %s", rr.root, repo, dir, remote)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -147,8 +147,14 @@ var vcsGit = &vcsCmd{
|
||||
func gitRemoteRepo(vcsGit *vcsCmd, rootDir string) (remoteRepo string, err error) {
|
||||
cmd := "config remote.origin.url"
|
||||
errParse := errors.New("unable to parse output of git " + cmd)
|
||||
outb, err := vcsGit.runOutput(rootDir, cmd)
|
||||
errRemoteOriginNotFound := errors.New("remote origin not found")
|
||||
outb, err := vcsGit.run1(rootDir, cmd, nil, false)
|
||||
if err != nil {
|
||||
// if it doesn't output any message, it means the config argument is correct,
|
||||
// but the config value itself doesn't exist
|
||||
if outb != nil && len(outb) == 0 {
|
||||
return "", errRemoteOriginNotFound
|
||||
}
|
||||
return "", err
|
||||
}
|
||||
repoURL, err := url.Parse(strings.TrimSpace(string(outb)))
|
||||
@ -333,7 +339,7 @@ func (v *vcsCmd) run1(dir string, cmdline string, keyval []string, verbose bool)
|
||||
fmt.Fprintf(os.Stderr, "# cd %s; %s %s\n", dir, v.cmd, strings.Join(args, " "))
|
||||
os.Stderr.Write(out)
|
||||
}
|
||||
return nil, err
|
||||
return out, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user