From 2574021d0d90966f54a436ebdb061905ba95ab50 Mon Sep 17 00:00:00 2001 From: Shulhan Date: Sat, 15 Sep 2018 00:37:38 +0700 Subject: package: get remote branch if its empty --- package.go | 7 +++++++ package_git.go | 21 +++++++++++++++++---- package_test.go | 41 ++++++++++++++++++++++------------------- 3 files changed, 46 insertions(+), 23 deletions(-) diff --git a/package.go b/package.go index 54f019a..23fcb31 100644 --- a/package.go +++ b/package.go @@ -531,6 +531,13 @@ func (pkg *Package) Update(newPkg *Package) (err error) { pkg.FullPath = newPkg.FullPath } + if len(pkg.RemoteBranch) == 0 { + err = pkg.gitGetBranch() + if err != nil { + return + } + } + switch pkg.vcsMode { case VCSModeGit: err = pkg.gitUpdate(newPkg) diff --git a/package_git.go b/package_git.go index ba538fa..6247916 100644 --- a/package_git.go +++ b/package_git.go @@ -57,6 +57,13 @@ func (pkg *Package) gitInstall() (err error) { } } + if len(pkg.RemoteBranch) == 0 { + err = pkg.gitGetBranch() + if err != nil { + return + } + } + if pkg.isTag { err = git.CheckoutRevision(pkg.FullPath, pkg.RemoteName, pkg.RemoteBranch, pkg.Version) @@ -138,12 +145,18 @@ func (pkg *Package) gitUpdate(newPkg *Package) (err error) { if err != nil { return } + + err = git.FetchAll(pkg.FullPath) + if err != nil { + return + } } - err = git.FetchAll(pkg.FullPath) - if err != nil { - err = fmt.Errorf("gitUpdate: %s", err) - return + if len(pkg.RemoteBranch) == 0 { + err = pkg.gitGetBranch() + if err != nil { + return + } } err = git.CheckoutRevision(pkg.FullPath, pkg.RemoteName, diff --git a/package_test.go b/package_test.go index 8bda079..7ae665f 100644 --- a/package_test.go +++ b/package_test.go @@ -560,11 +560,12 @@ func testUpdate(t *testing.T) { RemoteURL: testGitRepoSrcLocal, }, expPkg: &Package{ - vcsMode: VCSModeGit, - ImportPath: testGitRepo, - FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), - RemoteName: gitDefRemoteName, - RemoteURL: testGitRepoSrcLocal, + vcsMode: VCSModeGit, + ImportPath: testGitRepo, + FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), + RemoteName: gitDefRemoteName, + RemoteURL: testGitRepoSrcLocal, + RemoteBranch: "master", }, }, { desc: "Update version", @@ -585,13 +586,14 @@ func testUpdate(t *testing.T) { isTag: true, }, expPkg: &Package{ - vcsMode: VCSModeGit, - ImportPath: testGitRepo, - FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), - RemoteName: gitDefRemoteName, - RemoteURL: testGitRepoSrcLocal, - Version: "v0.1.0", - isTag: true, + vcsMode: VCSModeGit, + ImportPath: testGitRepo, + FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), + RemoteName: gitDefRemoteName, + RemoteURL: testGitRepoSrcLocal, + RemoteBranch: "master", + Version: "v0.1.0", + isTag: true, }, }, { desc: "Update version back", @@ -612,13 +614,14 @@ func testUpdate(t *testing.T) { isTag: true, }, expPkg: &Package{ - vcsMode: VCSModeGit, - ImportPath: testGitRepo, - FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), - RemoteName: gitDefRemoteName, - RemoteURL: testGitRepoSrcLocal, - Version: "c9f69fb", - isTag: false, + vcsMode: VCSModeGit, + ImportPath: testGitRepo, + FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), + RemoteName: gitDefRemoteName, + RemoteURL: testGitRepoSrcLocal, + RemoteBranch: "master", + Version: "c9f69fb", + isTag: false, }, }} -- cgit v1.3