misc/makerelease: use built in "del" to remove files

Git marks some of its files read only, so os.RemoveAll isn't sufficient
to remove them from the ".git" directory.

Change-Id: I3150596931d1c77e7cf9fb8da1a999d2c6730121
Reviewed-on: https://go-review.googlesource.com/2930
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Andrew Gerrand 2015-01-16 09:11:17 +11:00
parent 90ce1936e3
commit 1d890ac0b2

View file

@ -775,7 +775,19 @@ func setupOAuthClient() error {
func (b *Build) clean(files []string) error {
for _, name := range files {
err := os.RemoveAll(filepath.Join(b.root, name))
path := filepath.Join(b.root, name)
var err error
if b.OS == "windows" {
// Git sets some of its packfiles as 'read only',
// so os.RemoveAll will fail for the ".git" directory.
// Instead, shell out to cmd's 'del' subcommand.
cmd := exec.Command("cmd.exe", "/C", "del", "/Q", "/F", "/S", path)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
err = cmd.Run()
} else {
err = os.RemoveAll(path)
}
if err != nil {
return err
}