aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2018-09-14 04:24:57 +0700
committerShulhan <ms@kilabit.info>2018-09-14 04:24:57 +0700
commitaa8dd3bf7a75e5ae21b8df077edc09804f4f52bb (patch)
tree9270d5ce600b9569c177c36121c26038b8fb664e
parent13cba9aa5e2566d030cf6e8a6c9c9c2855f15fe5 (diff)
downloadbeku-aa8dd3bf7a75e5ae21b8df077edc09804f4f52bb.tar.xz
Get and save package remote branch in database
Some package does not have "master" branch. This will minimize parsing and filter operation to get default branch before checking out revision.
-rw-r--r--beku.go15
-rw-r--r--env.go1
-rw-r--r--package.go43
-rw-r--r--package_git.go7
4 files changed, 39 insertions, 27 deletions
diff --git a/beku.go b/beku.go
index 8890249..170f9a9 100644
--- a/beku.go
+++ b/beku.go
@@ -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"
diff --git a/env.go b/env.go
index 63ebbbe..727da9a 100644
--- a/env.go
+++ b/env.go
@@ -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 {
diff --git a/package.go b/package.go
index 39bbbeb..7c186ba 100644
--- a/package.go
+++ b/package.go
@@ -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)
}