39 lines
776 B
Go
39 lines
776 B
Go
package versions
|
|
|
|
import (
|
|
"fmt"
|
|
"gitea.inhome.blapointe.com/local/notes-server/config"
|
|
"strings"
|
|
)
|
|
|
|
func getScript() string {
|
|
maxSizeMB := config.MaxSizeMB
|
|
if maxSizeMB == 0 {
|
|
maxSizeMB = 1
|
|
}
|
|
return strings.ReplaceAll(script, "{{{MAXSIZE}}}", fmt.Sprint(maxSizeMB<<20))
|
|
}
|
|
|
|
const script = `#!/bin/bash
|
|
function main() {
|
|
local maxsize={{{MAXSIZE}}}
|
|
if [[ "$maxsize" == 0 ]]; then
|
|
return
|
|
fi
|
|
(
|
|
git diff --name-only --cached
|
|
git diff --name-only
|
|
git ls-files --others --exclude-standard
|
|
) 2>&1 \
|
|
| sort -u \
|
|
| while read -r file; do
|
|
local size="$(du -sk "$file" | awk '{print $1}')000"
|
|
if [ "$size" -gt "$maxsize" ]; then
|
|
echo "file=$file, size=$size, max=$maxsize" >&2
|
|
git reset HEAD -- "$file"
|
|
fi
|
|
done
|
|
}
|
|
main
|
|
`
|