diff options
author | Unknwon <u@gogs.io> | 2016-02-07 10:46:23 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2016-02-07 10:46:23 -0500 |
commit | e2b4a24cb63fe0a99237030509be3d24d0f40f0f (patch) | |
tree | 7c4149ada2db1b11392e4bb50cfecebc8365ca7e | |
parent | 894946c319aa0e961388227c7cff11b1392edfc7 (diff) | |
parent | d37cf09ccd76ac2a8408a9278cc97208e318e02c (diff) | |
download | gitea-e2b4a24cb63fe0a99237030509be3d24d0f40f0f.tar.gz gitea-e2b4a24cb63fe0a99237030509be3d24d0f40f0f.zip |
Merge pull request #2570 from andreynering/fix-1738
Workaround delete folder on Windows.
-rw-r--r-- | models/admin.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/models/admin.go b/models/admin.go index 811edde244..7756cd6ae2 100644 --- a/models/admin.go +++ b/models/admin.go @@ -7,6 +7,7 @@ package models import ( "fmt" "os" + "os/exec" "strings" "time" @@ -14,6 +15,7 @@ import ( "github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/log" + "github.com/gogits/gogs/modules/setting" ) type NoticeType int @@ -53,7 +55,14 @@ func CreateRepositoryNotice(desc string) error { // RemoveAllWithNotice removes all directories in given path and // creates a system notice when error occurs. func RemoveAllWithNotice(title, path string) { - if err := os.RemoveAll(path); err != nil { + var err error + if setting.IsWindows { + err = exec.Command("cmd", "/C", "rmdir", "/S", "/Q", path).Run() + } else { + err = os.RemoveAll(path) + } + + if err != nil { desc := fmt.Sprintf("%s [%s]: %v", title, path, err) log.Warn(desc) if err = CreateRepositoryNotice(desc); err != nil { |