diff options
| -rw-r--r-- | beku.go | 15 | ||||
| -rw-r--r-- | env.go | 1 | ||||
| -rw-r--r-- | package.go | 43 | ||||
| -rw-r--r-- | package_git.go | 7 |
4 files changed, 39 insertions, 27 deletions
@@ -70,13 +70,14 @@ var ( keyExclude = "exclude" keyVendor = "vendor" - keyDeps = "deps" - keyDepsMissing = "missing" - keyRemoteName = "remote-name" - keyRemoteURL = "remote-url" - keyRequiredBy = "required-by" - keyVCSMode = "vcs" - keyVersion = "version" + keyDeps = "deps" + keyDepsMissing = "missing" + keyRemoteName = "remote-name" + keyRemoteURL = "remote-url" + keyRemoteBranch = "remote-branch" + keyRequiredBy = "required-by" + keyVCSMode = "vcs" + keyVersion = "version" gitCfgRemote = "remote" gitCfgRemoteURL = "url" @@ -973,6 +973,7 @@ func (env *Env) savePackages() { sec.Set(keyVCSMode, pkg.vcsMode) sec.Set(keyRemoteName, pkg.RemoteName) sec.Set(keyRemoteURL, pkg.RemoteURL) + sec.Set(keyRemoteBranch, pkg.RemoteBranch) sec.Set(keyVersion, pkg.Version) for _, dep := range pkg.Deps { @@ -30,19 +30,20 @@ const ( // tag or not, and VCS mode. // type Package struct { - ImportPath string - FullPath string - ScanPath string - RemoteName string - RemoteURL string - Version string - VersionNext string - DepsMissing []string - Deps []string - RequiredBy []string - vcsMode string - state packageState - isTag bool + ImportPath string + FullPath string + ScanPath string + RemoteName string + RemoteURL string + RemoteBranch string + Version string + VersionNext string + DepsMissing []string + Deps []string + RequiredBy []string + vcsMode string + state packageState + isTag bool } // @@ -87,7 +88,13 @@ func NewPackage(env *Env, pkgName, importPath string) ( func (pkg *Package) CheckoutVersion(newVersion string) (err error) { switch pkg.vcsMode { case VCSModeGit: - err = git.CheckoutRevision(pkg.FullPath, "", "", newVersion) + if len(pkg.RemoteBranch) == 0 { + err = pkg.gitGetBranch() + if err != nil { + return + } + } + err = git.CheckoutRevision(pkg.FullPath, pkg.RemoteName, pkg.RemoteBranch, newVersion) } return @@ -340,8 +347,7 @@ func (pkg *Package) GetRecursiveImports(env *Env) ( } if debug.Value >= 1 { - fmt.Printf("[PKG] GetRecursiveImports %s >>> %s %s\n", - pkg.ImportPath, cmd.Dir, cmd.Args) + fmt.Printf("= GetRecursiveImports %s %s\n", cmd.Dir, cmd.Args) } out, err := cmd.Output() @@ -473,6 +479,8 @@ func (pkg *Package) load(sec *ini.Section) { pkg.RemoteName = v.Value case keyRemoteURL: pkg.RemoteURL = v.Value + case keyRemoteBranch: + pkg.RemoteBranch = v.Value case keyVersion: pkg.Version = v.Value pkg.isTag = IsTagVersion(pkg.Version) @@ -506,8 +514,7 @@ func (pkg *Package) GoInstall(env *Env) (err error) { cmd.Stdout = defStdout cmd.Stderr = defStderr - fmt.Printf("[PKG] GoInstall %s >>> %s %s %s\n", pkg.ImportPath, - cmd.Dir, cmd.Env, cmd.Args) + fmt.Printf("= GoInstall %s\n%s\n%s\n", cmd.Dir, cmd.Env, cmd.Args) err = cmd.Run() diff --git a/package_git.go b/package_git.go index 12c91c2..b094b1c 100644 --- a/package_git.go +++ b/package_git.go @@ -58,7 +58,8 @@ func (pkg *Package) gitInstall() (err error) { } if pkg.isTag { - err = git.CheckoutRevision(pkg.FullPath, "", "", pkg.Version) + err = git.CheckoutRevision(pkg.FullPath, pkg.RemoteName, + pkg.RemoteBranch, pkg.Version) if err != nil { err = fmt.Errorf("gitInstall: %s", err) return @@ -74,6 +75,7 @@ func (pkg *Package) gitInstall() (err error) { func (pkg *Package) gitScan() (err error) { pkg.Version, err = git.LatestVersion(pkg.FullPath) if err != nil { + err = fmt.Errorf("gitScan: %s", err) return } @@ -144,7 +146,8 @@ func (pkg *Package) gitUpdate(newPkg *Package) (err error) { return } - err = git.CheckoutRevision(pkg.FullPath, "", "", newPkg.Version) + err = git.CheckoutRevision(pkg.FullPath, pkg.RemoteName, + pkg.RemoteBranch, newPkg.Version) if err != nil { err = fmt.Errorf("gitUpdate: %s", err) } |
