summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2b442ff)
raw | patch | inline | side by side (parent: 2b442ff)
author | dermoth <dermoth@nagiosplugins.org> | |
Wed, 11 Nov 2009 10:23:57 +0000 (10:23 +0000) | ||
committer | dermoth <dermoth@nagiosplugins.org> | |
Wed, 11 Nov 2009 10:34:22 +0000 (10:34 +0000) |
sfsnapshotgit:
- Use fetch/reset instead to pull to avoid merges on forced updates
sfsnapshot-upload:
- Fix link deletion walking the entire home dir
- Allow CLEAN_TIME=0 (no retention)
- Re-add per-branch links when CLEAN_TIME > 0
- Add many comments
- Use fetch/reset instead to pull to avoid merges on forced updates
sfsnapshot-upload:
- Fix link deletion walking the entire home dir
- Allow CLEAN_TIME=0 (no retention)
- Re-add per-branch links when CLEAN_TIME > 0
- Add many comments
tools/sfsnapshot-upload | patch | blob | history | |
tools/sfsnapshotgit | patch | blob | history |
index e0a2300cc6ed97dcbb76867d2f6cfca8920be152..5134e0003f362421245bd7fd25a23a231f6799d3 100755 (executable)
--- a/tools/sfsnapshot-upload
+++ b/tools/sfsnapshot-upload
# Handle command errors (-e) and coder sleep deprivation issues (-u)
set -eu
-trap 'echo "An error occurred at line $LINENO"; exit 1' EXIT
+trap 'echo "An error occurred in sfsnapshot-upload at line $LINENO"; exit 1' EXIT
# This can be used to override the default in sfsnapshotgit:
export SFSNAP_REPO=~/staging/nagiosplugins
# The file we'll use to create the snapshot
sfsnapshot=~/sfsnapshotgit
-# Retention time for snapshots (in minutes)
+# Retention time for snapshots (in minutes), 0 for no retention.
CLEAN_TIME=1440
# Where to place the generated files
HEADS=$@
fi
+# If we don't keep old snapshots we can clean up all links now
+if [ $CLEAN_TIME -eq 0 ]
+then
+ find $SFSNAP_DEST -type l -name '*.gz' -delete
+fi
+
for head in $HEADS ; do
+ # This runs the actual snapshot code. It creates new snapshots if needed and always
+ # return the current snapshot file (even if it wasn't modified).
file=$($sfsnapshot $head)
+ # Create main head link
ln -sf $file $SFSNAP_DEST/nagios-plugins-$head.tar.gz
- # Keep links by branch name too
- [ -f "$SFSNAP_DEST/nagios-plugins-$head-${file#nagios-plugins-}" ] || ln -s $file $SFSNAP_DEST/nagios-plugins-$head-${file#nagios-plugins-}
+
+ # Keep links by branch name too if we keep old snapshots, so we can keep tracks of them
+ if [ $CLEAN_TIME -gt 0 -a ! -e "$SFSNAP_DEST/nagios-plugins-$head-${file#nagios-plugins-}" ]
+ then
+ ln -s $file $SFSNAP_DEST/nagios-plugins-$head-${file#nagios-plugins-}
+ fi
+
+ # Cleanup and re-create backward-compatibility links
if [ "$head" == "master" ]
then
for cclean in $COMPATCLEANUP
do
- find . -type l -name "nagios-plugins-$cclean.tar.gz" -delete
+ find $SFSNAP_DEST -type l -name "nagios-plugins-$cclean.tar.gz" -delete
done
for compat in $COMPATLINKS
do
fi
done
-# Cleanup old snapshots and links...
cd $SFSNAP_DEST
-# Clean up links older than $CLEAN_TIME
-find . -type l -name '*.gz' -mmin +$CLEAN_TIME -delete
+# Clean up links older than $CLEAN_TIME if needed
+if [ $CLEAN_TIME -gt 0 ]
+then
+ find . -type l -name '*.gz' -mmin +$CLEAN_TIME -delete
+fi
-# Then clean up files that we don't need
+# Now clean up files that we don't need
+# 1. loop over actual snapshots
for dest in `find . -type f -name '*.gz' |xargs -n 1 basename`
do
- # Loop over the list of linked-to files
- for current in `find . -type l -name '*.gz' |xargs -n 1 readlink | uniq`
+ # 2. Loop over the list of linked-to files
+ for current in `find . -type l -name '*.gz' |xargs -n 1 readlink | sort | uniq`
do
if [ "$current" == "$dest" ]
then
+ # File is being linked to - don't delete (continue first loop)
continue 2
fi
done
+ # No link to this file, we can drop it
rm -f $dest
done
# Create MD5 sum
cat <<-END_README > README
-This is the latest snapshot of nagiosplug, consisting of the following
-head(s):
- $HEADS
+ This is the latest snapshot of nagiosplug, consisting of the following
+ head(s):
+ $HEADS
-The nagios-plugins-<head>.tar.gz link will always point to the latest
-corresponding snapshot (nagios-plugins-<git-describe>.tar.gz).
+ The nagios-plugins-<head>.tar.gz link will always point to the latest
+ corresponding snapshot (nagios-plugins-<git-describe>.tar.gz).
-For backward-compatibility, the nagios-plugins-HEAD.tar.gz and
-nagios-plugins-trunk-<ts> point to their corresponding "master" head.
+ For backward-compatibility, the nagios-plugins-HEAD.tar.gz and
+ nagios-plugins-trunk-<ts> point to their corresponding "master" head.
-The MD5SUM are:
-END_README
+ The MD5SUM are:
+ END_README
md5sum *.gz | tee -a README > MD5SUM
# Sync the files
diff --git a/tools/sfsnapshotgit b/tools/sfsnapshotgit
index 155259f0d66f0f4f258d641590dd3f6246e44f4b..af05c24bada3f296f3f8d9eeecfd35403c7683c1 100755 (executable)
--- a/tools/sfsnapshotgit
+++ b/tools/sfsnapshotgit
# Handle command errors (-e) and coder sleep deprivation issues (-u)
set -eu
-trap 'echo "An error occurred at line $LINENO"; exit 1' EXIT
+trap 'echo "An error occurred in sfsnapshotgit at line $LINENO"; exit 1' EXIT
# Send all command output to STDERR while allowing us to write to STDOUT
# using fd 3
git clean -qfdx
# Any branch used to create snapshots must already exist
git checkout "$HEAD"
-git pull "$SFSNAP_ORIGIN" "$HEAD"
+git fetch "$SFSNAP_ORIGIN" "$HEAD"
+git reset --hard "$SFSNAP_ORIGIN"/"$HEAD"
# Tags are important for git-describe
git fetch --tags "$SFSNAP_ORIGIN"