1
0
mirror of git://projects.qi-hardware.com/ben-wpan.git synced 2024-10-02 18:46:21 +03:00

Optimize cache usage by symlinking identical PPMs.

- scripts/schhist2web (symlink): ln -sf two files. If the old file is a
  symlink, link to its target instead of creating a chain of symlinks.
- scripts/schhist2web: if PPMs of the same file are identical in successive
  commits, replace the new one with a symlink to the old one
This commit is contained in:
Werner Almesberger 2010-08-29 03:00:24 -03:00
parent 56a95040ca
commit 02e2bf542f

View File

@ -40,6 +40,19 @@ pngdiff()
}
symlink()
{
local old=$1 new=$2
local src=`dirname "$new"`/$old
if [ -L "$src" ]; then
ln -sf "`readlink \"$src\"`" "$new"
else
ln -sf "$old" "$new"
fi
}
commit_entry()
{
# usage: commit_entry <base-dir> <commit>
@ -181,11 +194,25 @@ for n in $first `cd "$dir" && git rev-list --reverse $first..HEAD`; do
if [ ! -d "$cache/ppm_$n" ]; then
rm -rf "$cache/ppm_$n"
mkdir "$cache/ppm_$n"
#
# potential optimization here: remember Postscript files from previous
# run (or their md5sum) and check if they have changed. If not, skip
# the ghostscript run and just put a symlink, replacing the less
# efficient optimization below.
#
gitsch2ppm $sanitize -k "$dir" "$schname" $n "$cache/ppm_$n" || exit
gitsch2ppm -c -w 500 "$dir" "$schname" $n "$cache/fat_$n" || exit
fi
for m in "$cache/ppm_$n/"*; do
[ "$m" = "$cache/ppm_$n/*" ] && break
if [ ! -z "$head" ]; then
prev="$cache/ppm_$head"/`basename "$m"`
if [ -r "$prev" ] && cmp -s "$prev" "$m"; then
symlink "../ppm_$head"/`basename "$m"` "$m"
symlink "../fat_$head"/`basename "$m"` \
"$cache/fat_$n"/`basename "$m"`
fi
fi
touch "$out/names/"`basename "$m" .ppm`
done
trap 0