Skip to content

Commit

Permalink
fix: fetching and checkout of base branch (#1167)
Browse files Browse the repository at this point in the history
  • Loading branch information
didroe authored Aug 2, 2023
1 parent 379602e commit f8c0e00
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 14 deletions.
2 changes: 1 addition & 1 deletion pkg/commands/artifact/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func (r *runner) Scan(ctx context.Context, opts flag.Options) (*basebranchfindin
}

if err := repository.FetchBaseIfNotPresent(); err != nil {
return nil, err
return nil, fmt.Errorf("error fetching base branch: %w", err)
}

fileList, err := filelist.Discover(repository, targetPath, r.goclocResult, r.scanSettings)
Expand Down
23 changes: 10 additions & 13 deletions pkg/commands/process/gitrepository/gitrepository.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,9 @@ type Repository struct {
rootPath,
targetPath,
gitTargetPath string
baseBranch string
baseLocalRefName,
baseBranch string
baseRemoteRefName plumbing.ReferenceName
headRef *plumbing.Reference
headRef *plumbing.Reference
}

func New(
Expand Down Expand Up @@ -76,7 +75,6 @@ func New(
targetPath: targetPath,
gitTargetPath: gitTargetPath,
baseBranch: baseBranch,
baseLocalRefName: plumbing.NewBranchReferenceName(baseBranch),
baseRemoteRefName: plumbing.NewRemoteReferenceName("origin", baseBranch),
headRef: headRef,
}, nil
Expand All @@ -92,7 +90,7 @@ func (repository *Repository) ListFiles(

headTree, err := repository.treeForRef(repository.headRef)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get head tree: %w", err)
}

if repository.baseBranch == "" {
Expand All @@ -110,7 +108,7 @@ func (repository *Repository) ListFiles(
func (repository *Repository) treeForRef(ref *plumbing.Reference) (*object.Tree, error) {
commit, err := repository.git.CommitObject(ref.Hash())
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get commit for ref: %w", err)
}

return commit.Tree()
Expand Down Expand Up @@ -141,9 +139,9 @@ func (repository *Repository) getTreeFiles(
}

func (repository *Repository) getDiffPatch(headTree *object.Tree) ([]diff.FilePatch, error) {
baseRef, err := repository.git.Reference(repository.baseLocalRefName, true)
baseRef, err := repository.git.Reference(repository.baseRemoteRefName, true)
if err != nil {
return nil, err
return nil, fmt.Errorf("failed to get base ref %s: %w", repository.baseRemoteRefName, err)
}

baseTree, err := repository.treeForRef(baseRef)
Expand Down Expand Up @@ -247,7 +245,7 @@ func (repository *Repository) FetchBaseIfNotPresent() error {
return nil
}

ref, err := repository.git.Reference(repository.baseLocalRefName, true)
ref, err := repository.git.Reference(repository.baseRemoteRefName, true)
if err != nil && err != plumbing.ErrReferenceNotFound {
return fmt.Errorf("invalid branch %s: %w", repository.baseBranch, err)
}
Expand All @@ -257,9 +255,10 @@ func (repository *Repository) FetchBaseIfNotPresent() error {
return nil
}

localRefName := plumbing.NewBranchReferenceName(repository.baseBranch)
if err := repository.git.FetchContext(repository.ctx, &git.FetchOptions{
RefSpecs: []config.RefSpec{config.RefSpec(
fmt.Sprintf("+%s:%s", repository.baseLocalRefName, repository.baseRemoteRefName),
fmt.Sprintf("+%s:%s", localRefName, repository.baseRemoteRefName),
)},
Depth: 1,
Tags: git.NoTags,
Expand All @@ -275,8 +274,6 @@ func (repository *Repository) WithBaseBranch(body func() error) error {
return nil
}

branchName := plumbing.NewBranchReferenceName(repository.baseBranch)

worktree, err := repository.git.Worktree()
if err != nil {
return fmt.Errorf("error getting git worktree: %w", err)
Expand All @@ -285,7 +282,7 @@ func (repository *Repository) WithBaseBranch(body func() error) error {
defer repository.restoreHead(worktree)

if err := worktree.Checkout(&git.CheckoutOptions{
Branch: branchName,
Branch: repository.baseRemoteRefName,
}); err != nil {
return fmt.Errorf("error checking out base branch: %w", err)
}
Expand Down

0 comments on commit f8c0e00

Please sign in to comment.