Reformat and merge two rev/branch/tag keeping logics
diff --git a/fetch.go b/fetch.go index b6b46bf..08af2b1 100644 --- a/fetch.go +++ b/fetch.go
@@ -81,9 +81,9 @@ } var ( - fetchRoot string // where the current session started - rootRepo vendor.RemoteRepo // the repo of the requested package - fetchedToday []string // packages fetched during this session + fetchRoot string // where the current session started + rootRepoURL string // the url of the repo from which the root comes from + fetchedToday []string // packages fetched during this session ) func fetch(path string) error { @@ -93,13 +93,6 @@ } fetchRoot = stripscheme(path) - - // Set repo for root of the fetch to keep tag/revision consistent - rootRepo, _, err = GlobalDownloader.DeduceRemoteRepo(fetchRoot, insecure) - if err != nil { - return fmt.Errorf("failed to load repo for: %s: %s", fetchRoot, err) - } - return fetchRecursive(m, path, 0) } @@ -141,12 +134,8 @@ } // Finally, check if we already vendored a subpackage and remove it - parentOfRoot := false for _, subp := range m.GetSubpackages(path) { - if contains(subp.Importpath, fetchRoot) { - // Through dependencies we ended up fetching a parent of the starting package - parentOfRoot = true // use the requested tag/branch/revision - } else { + if !contains(subp.Importpath, fetchRoot) { // ignore parents of the root ignore := false for _, d := range fetchedToday { if contains(d, subp.Importpath) { @@ -172,8 +161,12 @@ return err } + if level == 0 { + rootRepoURL = repo.URL() + } + var wc vendor.WorkingCopy - if level == 0 || parentOfRoot || (repo.URL() == rootRepo.URL()) { + if repo.URL() == rootRepoURL { wc, err = GlobalDownloader.Get(repo, branch, tag, revision) } else { wc, err = GlobalDownloader.Get(repo, "", "", "")