diff options
Diffstat (limited to 'pkg/vcs')
| -rw-r--r-- | pkg/vcs/git.go | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/pkg/vcs/git.go b/pkg/vcs/git.go index 4ed33972c..3d5b3ca2f 100644 --- a/pkg/vcs/git.go +++ b/pkg/vcs/git.go @@ -114,12 +114,18 @@ func (git *git) CheckoutBranch(repo, branch string) (*Commit, error) { if err != nil { return nil, err } - if _, err := git.git("checkout", "FETCH_HEAD"); err != nil { + if _, err := git.git("checkout", "FETCH_HEAD", "--force"); err != nil { return nil, err } if _, err := git.git("submodule", "update", "--init"); err != nil { return nil, err } + // If the branch checkout had to be "forced" the directory may + // contain remaining untracked files. + // Clean again to ensure the new branch is in a clean state. + if err := git.repair(); err != nil { + return nil, err + } return git.HeadCommit() } @@ -177,8 +183,8 @@ func (git *git) reset() error { return nil } git.git("reset", "--hard", "--recurse-submodules") - git.git("clean", "-fdx") - git.git("submodule", "foreach", "--recursive", "git", "clean", "-fdx") + git.git("clean", "-xfdf") + git.git("submodule", "foreach", "--recursive", "git", "clean", "-xfdf") git.git("bisect", "reset") _, err := git.git("reset", "--hard", "--recurse-submodules") return err |
