diff options
author | zeripath <art27@cantab.net> | 2019-11-10 21:33:47 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-10 21:33:47 +0000 |
commit | ee1d64ddd1456764de692fcdeb42db1398fcf97b (patch) | |
tree | be5069e203bf34b42f1f5aee4fe387c8a6b305c6 /modules/util | |
parent | 44ec9b933afe7a7c84e18ff525f377240d8dd4f0 (diff) | |
download | gitea-ee1d64ddd1456764de692fcdeb42db1398fcf97b.tar.gz gitea-ee1d64ddd1456764de692fcdeb42db1398fcf97b.zip |
Stop using git count-objects and use raw directory size for repository (#8848)
* Migrate from git count-objects to a raw directory size
* As per @guillep2k ignore unusual files
Diffstat (limited to 'modules/util')
-rw-r--r-- | modules/util/path.go | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/modules/util/path.go b/modules/util/path.go index f79334209c..2b198eb6dc 100644 --- a/modules/util/path.go +++ b/modules/util/path.go @@ -4,7 +4,10 @@ package util -import "path/filepath" +import ( + "os" + "path/filepath" +) // EnsureAbsolutePath ensure that a path is absolute, making it // relative to absoluteBase if necessary @@ -14,3 +17,17 @@ func EnsureAbsolutePath(path string, absoluteBase string) string { } return filepath.Join(absoluteBase, path) } + +const notRegularFileMode os.FileMode = os.ModeDir | os.ModeSymlink | os.ModeNamedPipe | os.ModeSocket | os.ModeDevice | os.ModeCharDevice | os.ModeIrregular + +// GetDirectorySize returns the dumb disk consumption for a given path +func GetDirectorySize(path string) (int64, error) { + var size int64 + err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error { + if info != nil && (info.Mode()¬RegularFileMode) == 0 { + size += info.Size() + } + return err + }) + return size, err +} |