index : asp32 | |
Archlinux32 fork of asp - obsolete | gitolite user |
summaryrefslogtreecommitdiff |
author | Erich Eckner <git@eckner.net> | 2019-02-17 21:21:55 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2019-02-17 21:21:55 +0100 |
commit | ca603bc4b69bcdc22c50c5efa09845a48f605a7e (patch) | |
tree | ebbb26d1cd11660523bbe432422a050b6e3144ad | |
parent | e26d3d47d94f3ab9fa3b94bd3f18dd415906ae5a (diff) | |
parent | 205331f5cc20f6d08ef6846721a3c5932a148ed9 (diff) |
-rw-r--r-- | remote.inc.sh | 22 |
diff --git a/remote.inc.sh b/remote.inc.sh index 226d566..2c39a55 100644 --- a/remote.inc.sh +++ b/remote.inc.sh @@ -8,13 +8,31 @@ __remote_refcache_update() { awk '{ sub(/refs\/heads\//, "", $2); print $2 }' >"$cachefile" } -__remote_refcache_get() { - local remote=$1 ttl=3600 now cachetime cachefile=$ASPCACHE/remote-$remote +__remote_refcache_is_stale() { + local now cachetime cachefile=$1 ttl=3600 printf -v now '%(%s)T' -1 + # The cache is stale if we've exceeded the TTL. if ! cachetime=$(stat -c %Y "$cachefile" 2>/dev/null) || (( now > (cachetime + ttl) )); then + return 0 + fi + + # We also consider the cache to be stale when this script is newer than the + # cache. This allows upgrades to asp to implicitly wipe the cache and not + # make any guarantees about the file format. + if (( $(stat -c %Y "${BASH_SOURCE[0]}" 2>/dev/null) > cachetime )); then + return 0 + fi + + return 1 +} + +__remote_refcache_get() { + local remote=$1 cachefile=$ASPCACHE/remote-$remote + + if __remote_refcache_is_stale "$cachefile"; then __remote_refcache_update "$remote" fi |