Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix cloning from ADO repos #10954

Merged
merged 1 commit into from Oct 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelog/pending/20221006--cli-new--fix-ado-repos.yaml
@@ -0,0 +1,4 @@
changes:
- type: fix
scope: cli/new
description: Fix cloning templates from Azure DevOps repos.
4 changes: 3 additions & 1 deletion sdk/go/common/util/gitutil/git.go
Expand Up @@ -32,6 +32,7 @@ import (
"github.com/go-git/go-git/v5/storage/memory"
"github.com/pkg/errors"
"github.com/pulumi/pulumi/sdk/v3/go/common/util/fsutil"
"github.com/pulumi/pulumi/sdk/v3/go/common/util/logging"
)

// VCSKind represents the hostname of a specific type of VCS.
Expand Down Expand Up @@ -280,6 +281,7 @@ func GitCloneAndCheckoutCommit(url string, commit plumbing.Hash, path string) er
}

func GitCloneOrPull(rawurl string, referenceName plumbing.ReferenceName, path string, shallow bool) error {
logging.V(10).Infof("Attempting to clone from %s at ref %s", rawurl, referenceName)
if u, err := url.Parse(rawurl); err == nil && u.Hostname() == AzureDevOpsHostName {
// system-installed git is used to clone Azure DevOps repositories
// due to https://github.com/go-git/go-git/issues/64
Expand Down Expand Up @@ -346,7 +348,7 @@ func gitCloneOrPullSystemGit(url string, referenceName plumbing.ReferenceName, p
if _, err := os.Stat(filepath.Join(path, ".git")); os.IsNotExist(err) {
// Repo does not exist, clone it.
gitArgs = []string{
"clone", url,
"clone", url, ".",
}
// For shallow clones, use a depth of 1.
if shallow {
Expand Down
7 changes: 6 additions & 1 deletion sdk/go/common/workspace/templates.go
Expand Up @@ -30,6 +30,7 @@ import (

"github.com/pulumi/pulumi/sdk/v3/go/common/util/contract"
"github.com/pulumi/pulumi/sdk/v3/go/common/util/gitutil"
"github.com/pulumi/pulumi/sdk/v3/go/common/util/logging"
)

const (
Expand Down Expand Up @@ -373,8 +374,11 @@ func RetrieveGitFolder(rawurl string, path string) (string, error) {
if err != nil {
return "", fmt.Errorf("failed to get git ref: %w", err)
}
if ref != "" {
logging.V(10).Infof(
"Attempting to fetch from %s at commit %s@%s for subdirectory '%s'",
url, ref, commit, subDirectory)

if ref != "" {
// Different reference attempts to cycle through
// We default to master then main in that order. We need to order them to avoid breaking
// already existing processes for repos that already have a master and main branch.
Expand Down Expand Up @@ -405,6 +409,7 @@ func RetrieveGitFolder(rawurl string, path string) (string, error) {

// Verify the sub directory exists.
fullPath := filepath.Join(path, filepath.FromSlash(subDirectory))
logging.V(10).Infof("Cloned %s at commit %s@%s to %s", url, ref, commit, fullPath)
info, err := os.Stat(fullPath)
if err != nil {
return "", err
Expand Down